Дано я запускаю сценарий открытия testclient или подключаю уже существующий

Синтаксис: Дано Я открыл новый сеанс TestClient или подключил уже существующий

Клиент тестирования¶

Дано Я открыл новый сеанс TestClient или подключил уже существующий¶

Синтаксис: Дано Я открыл новый сеанс TestClient или подключил уже существующий

Снипет: ЯОткрылНовыйСеансTestClientИлиПодключилУжеСуществующий()

Пример использования:

Дано Я открыл новый сеанс TestClient или подключил уже существующий

Дано Я открыл новый сеанс TestClient или подключил уже существующий без загрузки настроек¶

Синтаксис: Дано Я открыл новый сеанс TestClient или подключил уже существующий без загрузки настроек

Снипет: ЯОткрылНовыйСеансTestClientИлиПодключилУжеСуществующийБезЗагрузкиНастроек()

Пример использования:

Дано Я открыл новый сеанс TestClient или подключил уже существующий без загрузки настроек

Дано Я открыл новый сеанс TestClient от имени “МойПользователь” с паролем “МойПароль”¶

Синтаксис: Дано Я открыл новый сеанс TestClient от имени "МойПользователь" с паролем "МойПароль"

Снипет: ЯОткрылСеансTestClientОтИмениСПаролемИлиПодключаюУжеСуществующий(Логин,Пароль)

Пример использования:

Дано Я открыл новый сеанс TestClient от имени "МойПользователь" с паролем "МойПароль"

Я подключаю клиент тестирования с параметрами¶

Синтаксис: Я подключаю клиент тестирования с параметрами:

Снипет: ЯПодключаюКлиентТестированияСПараметрами(ТабПарам)

Пример использования:

 Когда Я подключаю клиент тестирования с параметрами:
| 'Имя подключения' | 'Порт' | 'Строка соединения' | 'Логин' | 'Пароль' | 'Путь к платформе' | 'Запускаемая обработка' |  'Дополнительные параметры строки запуска'  |
| 'Test 1'          | '1538' | ''                  | ''      | ''       |                    |                         |                                             |

Я подключаю клиент тестирования “ИмяКлиентаТестирования” из таблицы клиентов тестирования¶

Синтаксис: Я подключаю клиент тестирования "ИмяКлиентаТестирования" из таблицы клиентов тестирования

Снипет: ЯПодключаюКлиентТестированияИзТаблицыКлиентовТестирования(ИмяКлиентаТестирования)

Пример использования:

Когда Я подключаю клиент тестирования "Кладовщик УТ" из таблицы клиентов тестирования

Я подключаю клиент тестирования “ИмяКлиентаТестирования” из таблицы клиентов тестирования от имени “Логин” с паролем “Пароль”¶

Синтаксис: Я подключаю клиент тестирования "ИмяКлиентаТестирования" из таблицы клиентов тестирования от имени "Логин" с паролем "Пароль"

Снипет: ЯПодключаюКлиентТестированияИзТаблицыКлиентовТестированияОтИмениСПаролем(ИмяКлиентаТестирования,Логин,Пароль)

Пример использования:

И Я подключаю клиент тестирования "Семен Звёздочкин" из таблицы клиентов тестирования от имени "Сёма" с паролем "SemaSuperStar"

Я отключаю текущего клиент тестирования¶

Синтаксис: Я отключаю текущего клиент тестирования

Снипет: ЯОтключаюТекущегоКлиентТестирования()

Пример использования:

Тогда Я отключаю текущего клиент тестирования

Заполняю список таблицы ДанныеКлиентовТестирования¶

Синтаксис: Заполняю список таблицы ДанныеКлиентовТестирования

Снипет: ЗаполняюСписокТаблицыДанныеКлиентовТестирования()

Добавляет в таблицу на закладке “Test client’s” 2 строки подключения к БД: 1-я строка с именем “VanessaUser1”, 2-я — “VanessaUser2”.
На данный момент выдает синтаксическую ошибку

Пример использования:

И Заполняю список таблицы ДанныеКлиентовТестирования

В базе есть пользователь “Логин” с паролем “Пароль”¶

Синтаксис: В базе есть пользователь "Логин" с паролем "Пароль"

Снипет: ВБазеЕстьПользовательСПаролем(Парам01,Парам02)

Пример использования:

Когда В базе есть пользователь "Алиса Шляпкина" с паролем "ShcaltajBoltaj"

Я удаляю пользователя “ИмяПользователя”¶

Синтаксис: Я удаляю пользователя "ИмяПользователя"

Снипет: ЯУдаляюПользователя(ИмяПользователя)

Удаляет пользователя информационной базы с указанным именем через метод ПользовательИнформационнойБазы.Удалить().

Пример использования:

Тогда Я удаляю пользователя "Всего лишь гость в этом бренном мире"

Я работаю в сеансе, запущенного с ключом TESTMANAGER¶

Синтаксис: Я удаляю пользователя "ИмяПользователя"

Снипет: ЯРаботаюВСеансеЗапущенногоСКлючомTESTMANAGER()

Пример использования:

Когда Я работаю в сеансе, запущенного с ключом TESTMANAGER

Я сворачиваю все окна¶

Синтаксис: Я сворачиваю все окна"

Снипет: ЯСворачиваюВсеОкна()

Пример использования:

Я запускаю сеанс 1С с ключом TESTCLIENT¶

Синтаксис: Я запускаю сеанс с ключом TESTCLIENT"

Снипет: ЯЗапускаюСеанс1ССКлючомTESTCLIENTСЛогиномИПаролем()

Пример использования:

И Я запускаю сеанс 1С с ключом TESTCLIENT

Я устанавливаю соединение с сеансом TESTCLIENT¶

Синтаксис: Я устанавливаю соединение с сеансом TESTCLIENT

Снипет: ЯУстанавливаюСоединениеССеансомTESTCLIENT()

Пример использования:

И Я устанавливаю соединение с сеансом TESTCLIENT

Я активизирую главное окно сеанса TESTCLIENT¶

Синтаксис: Я активизирую главное окно сеанса TESTCLIENT

Снипет: ЯАктивизируюГлавноеОкноСеансаTESTCLIENT()

Пример использования:

Тогда Я активизирую главное окно сеанса TESTCLIENT

В переменной Контекст появилось значение ГлавноеОкноТестируемого¶

Синтаксис: В переменной Контекст появилось значение ГлавноеОкноТестируемого

Снипет: ВПеременнойКонтекстПоявилосьЗначениеГлавноеОкноТестируемого()

Пример использования:

Тогда В переменной Контекст появилось значение ГлавноеОкноТестируемого

Я закрываю сеанс TESTCLIENT¶

Синтаксис: Я закрываю сеанс TESTCLIENT

Снипет: ЯЗакрываюСеансTESTCLIENT()

Пример использования:

Тогда Я закрываю сеанс TESTCLIENT

Работа с интерфейсом¶

Таблица формы¶

В открытой форме в ТЧ “ТабличнаяЧасть1” из выпадающего списка с заголовком “Реквизит справочник” я выбираю “ТестовыйЭлемент21” с выбором¶

Синтаксис: В открытой форме в ТЧ "ТабличнаяЧасть1" из выпадающего списка с заголовком "Реквизит справочник" я выбираю "ТестовыйЭлемент21" с выбором

Снипет: ВОткрытойФормеВТЧИзВыпадающегоСпискаСЗаголовкомЯВыбираюСВыбором(Парам01,Парам02,Парам03)

Пример использования:

В открытой форме в ТЧ "ТабличнаяЧасть1" из выпадающего списка с заголовком "Реквизит справочник" я выбираю "ТестовыйЭлемент21" с выбором

В открытой форме в ТЧ “ТабличнаяЧасть1” из выпадающего списка “Реквизит справочник” я выбираю “ТестовыйЭлемент21” с выбором¶

Синтаксис: В открытой форме в ТЧ "ТабличнаяЧасть1" из выпадающего списка "Реквизит справочник" я выбираю "ТестовыйЭлемент21" с выбором

Снипет: ВОткрытойФормеВТЧИзВыпадающегоСпискаЯВыбираюСВыбором(Парам01,Парам02,Парам03)

Пример использования:

В открытой форме в ТЧ "ТабличнаяЧасть1" из выпадающего списка "Реквизит справочник" я выбираю "ТестовыйЭлемент21" с выбором

В ТЧ “ТабличнаяЧасть1” из выпадающего списка “Реквизит справочник” я выбираю “ТестовыйЭлемент21” с выбором¶

Синтаксис: В ТЧ "ТабличнаяЧасть1" из выпадающего списка "Реквизит справочник" я выбираю "ТестовыйЭлемент21" с выбором

Снипет: ВТЧИзВыпадающегоСпискаЯВыбираюСВыбором(Парам01,Парам02,Парам03)

Пример использования:

В ТЧ "ТабличнаяЧасть1" из выпадающего списка "Реквизит справочник" я выбираю "ТестовыйЭлемент21" с выбором

В форме “Справочник1” в ТЧ “ТабличнаяЧасть1” я завершаю редактирование строки¶

Синтаксис: В форме "Справочник1" в ТЧ "ТабличнаяЧасть1" я завершаю редактирование строки

Снипет: ВФормеВТЧЯЗавершаюРедактированиеСтроки(Парам01,Парам02)

Пример использования:

В форме "Справочник1" в ТЧ "ТабличнаяЧасть1" я завершаю редактирование строки

Я завершаю редактирование строки¶

Синтаксис: Я завершаю редактирование строки

Снипет: ЯЗавершаюРедактированиеСтроки()

Пример использования:

Я завершаю редактирование строки

В открытой форме в ТЧ “ДокументыПоВидам” я нажимаю кнопку выбора у реквизита с заголовком “Скан”¶

Синтаксис: В открытой форме в ТЧ "ДокументыПоВидам" я нажимаю кнопку выбора у реквизита с заголовком "Скан"

Снипет: ВОткрытойФормеВТЧЯНажимаюКнопкуВыбораУРеквизитаСЗаголовком(Парам01,Парам02)

Пример использования:

В открытой форме в ТЧ "ДокументыПоВидам" я нажимаю кнопку выбора у реквизита с заголовком "Скан"

В открытой форме в ТЧ “ДокументыПоВидам” я нажимаю кнопку выбора у реквизита “Скан”¶

Синтаксис: В открытой форме в ТЧ "ДокументыПоВидам" я нажимаю кнопку выбора у реквизита "Скан"

Снипет: ВОткрытойФормеВТЧЯНажимаюКнопкуВыбораУРеквизита(Парам01,Парам02)

Пример использования:

В открытой форме в ТЧ "ДокументыПоВидам" я нажимаю кнопку выбора у реквизита "Скан"

В ТЧ “ДокументыПоВидам” я нажимаю кнопку выбора у реквизита “Скан”¶

Синтаксис: В ТЧ "ДокументыПоВидам" я нажимаю кнопку выбора у реквизита "Скан"

Снипет: ВТЧЯНажимаюКнопкуВыбораУРеквизита(Парам01,Парам02)

Пример использования:

В ТЧ "ДокументыПоВидам" я нажимаю кнопку выбора у реквизита "Скан"

И В открытой форме в ТЧ “Список” я перехожу на одну строку вниз¶

Синтаксис: И     В открытой форме в ТЧ  "Список" я перехожу на одну строку вниз

Снипет: ВОткрытойФормеВТЧЯПерехожуНаОднуСтрокуВниз(Парам01)

Пример использования:

И     В открытой форме в ТЧ  "Список" я перехожу на одну строку вниз

И в ТЧ “Список” я перехожу на одну строку вниз¶

Синтаксис: И     в ТЧ  "Список" я перехожу на одну строку вниз

Снипет: ВТЧЯПерехожуНаОднуСтрокуВниз(Парам01)

Пример использования:

И     в ТЧ  "Список" я перехожу на одну строку вниз

И таблица формы с именем “ТабличнаяЧасть1” стала равной:¶

Синтаксис: И     таблица формы с именем "ТабличнаяЧасть1" стала равной:

Снипет: ТаблицаФормыСИменемСталаРавной(Парам01,ТабПарам)

Пример использования:

И     таблица формы с именем "ТабличнаяЧасть1" стала равной:

И таблица формы с именем “ТабличнаяЧасть1” содержит строки:¶

Синтаксис: И     таблица формы с именем "ТабличнаяЧасть1" содержит строки:

Снипет: ТаблицаФормыСИменемСодержитСтроки(Парам01,ТабПарам)

Пример использования:

И     таблица формы с именем "ТабличнаяЧасть1" содержит строки:

Тогда таблица формы с именем “ТабличнаяЧасть1” содержит изменения:¶

Синтаксис: Тогда таблица формы с именем "ТабличнаяЧасть1" содержит изменения:

Снипет: ТаблицаФормыСИменемСодержитИзменения(Парам01,ТабПарам)

Пример использования:

Тогда таблица формы с именем "ТабличнаяЧасть1" содержит изменения:

И В открытой форме в ТЧ “ТабличнаяЧасть1” в поле с заголовком “Реквизит число” я ввожу текст “56,78”¶

Синтаксис: И     В открытой форме в ТЧ "ТабличнаяЧасть1" в поле с заголовком "Реквизит число" я ввожу текст "56,78"

Снипет: ВОткрытойФормеВТЧВПолеСЗаголовкомЯВвожуТекст(Парам01,Парам02,Парам03)

Пример использования:

И     В открытой форме в ТЧ "ТабличнаяЧасть1" в поле с заголовком "Реквизит число" я ввожу текст "56,78"

И В открытой форме в ТЧ “ТабличнаяЧасть1” в поле “Реквизит число” я ввожу текст “56,78”¶

Синтаксис: И     В открытой форме в ТЧ "ТабличнаяЧасть1" в поле "Реквизит число" я ввожу текст "56,78"

Снипет: ВОткрытойФормеВТЧВПолеЯВвожуТекст(Парам01,Парам02,Парам03)

Пример использования:

И     В открытой форме в ТЧ "ТабличнаяЧасть1" в поле "Реквизит число" я ввожу текст "56,78"

И в ТЧ “ТабличнаяЧасть1” в поле “Реквизит число” я ввожу текст “56,78”¶

Синтаксис: И     в ТЧ "ТабличнаяЧасть1" в поле "Реквизит число" я ввожу текст "56,78"

Снипет: ВТЧВПолеЯВвожуТекст(Парам01,Парам02,Парам03)

Пример использования:

И     в ТЧ "ТабличнаяЧасть1" в поле "Реквизит число" я ввожу текст "56,78"

И В открытой форме в ТЧ “ТабличнаяЧасть1” в поле с именем “Реквизит число” я ввожу текст “56,78”¶

Синтаксис: И     В открытой форме в ТЧ "ТабличнаяЧасть1" в поле с именем "Реквизит число" я ввожу текст "56,78"

Снипет: ВОткрытойФормеВТЧВПолеСИменемЯВвожуТекст(Парам01,Парам02,Парам03)

Пример использования:

И     В открытой форме в ТЧ "ТабличнаяЧасть1" в поле с именем "Реквизит число" я ввожу текст "56,78"

И в ТЧ “ТабличнаяЧасть1” в поле с именем “Реквизит число” я ввожу текст “56,78”¶

Синтаксис: И     в ТЧ "ТабличнаяЧасть1" в поле с именем "Реквизит число" я ввожу текст "56,78"

Снипет: ВТЧВПолеСИменемЯВвожуТекст(Парам01,Парам02,Парам03)

Пример использования:

И     в ТЧ "ТабличнаяЧасть1" в поле с именем "Реквизит число" я ввожу текст "56,78"

И В открытой форме в ТЧ “ТабличнаяЧасть1” из выпадающего списка с заголовком “Реквизит справочник” я выбираю “ТестовыйЭлемент21”¶

Синтаксис: И     В открытой форме в ТЧ "ТабличнаяЧасть1" из выпадающего списка с заголовком "Реквизит справочник" я выбираю "ТестовыйЭлемент21"

Снипет: ВОткрытойФормеВТЧИзВыпадающегоСпискаСЗаголовкомЯВыбираю(Парам01,Парам02,Парам03)

Пример использования:

И     В открытой форме в ТЧ "ТабличнаяЧасть1" из выпадающего списка с заголовком "Реквизит справочник" я выбираю "ТестовыйЭлемент21"

И В открытой форме в ТЧ “ТабличнаяЧасть1” из выпадающего списка “Реквизит справочник” я выбираю “ТестовыйЭлемент21”¶

Синтаксис: И     В открытой форме в ТЧ "ТабличнаяЧасть1" из выпадающего списка "Реквизит справочник" я выбираю "ТестовыйЭлемент21"

Снипет: ВОткрытойФормеВТЧИзВыпадающегоСпискаЯВыбираю(Парам01,Парам02,Парам03)

Пример использования:

И     В открытой форме в ТЧ "ТабличнаяЧасть1" из выпадающего списка "Реквизит справочник" я выбираю "ТестовыйЭлемент21"

И в ТЧ “ТабличнаяЧасть1” из выпадающего списка “Реквизит справочник” я выбираю “ТестовыйЭлемент21”¶

Синтаксис: И     в ТЧ "ТабличнаяЧасть1" из выпадающего списка "Реквизит справочник" я выбираю "ТестовыйЭлемент21"

Снипет: ВТЧИзВыпадающегоСпискаЯВыбираю(Парам01,Парам02,Парам03)

Пример использования:

И     в ТЧ "ТабличнаяЧасть1" из выпадающего списка "Реквизит справочник" я выбираю "ТестовыйЭлемент21"

И В открытой форме в ТЧ “ТабличнаяЧасть1” я изменяю флаг с заголовком “Реквизит булево”¶

Синтаксис: И     В открытой форме в ТЧ "ТабличнаяЧасть1" я изменяю флаг с заголовком "Реквизит булево"

Снипет: ВОткрытойФормеВТЧЯИзменяюФлагСЗаголовком(Парам01,Парам02)

Пример использования:

И     В открытой форме в ТЧ "ТабличнаяЧасть1" я изменяю флаг с заголовком "Реквизит булево"

И В открытой форме в ТЧ “ТабличнаяЧасть1” я изменяю флаг “Реквизит булево”¶

Синтаксис: И     В открытой форме в ТЧ "ТабличнаяЧасть1" я изменяю флаг "Реквизит булево"

Снипет: ВОткрытойФормеВТЧЯИзменяюФлаг(Парам01,Парам02)

Пример использования:

И     В открытой форме в ТЧ "ТабличнаяЧасть1" я изменяю флаг "Реквизит булево"

И в ТЧ “ТабличнаяЧасть1” я изменяю флаг “Реквизит булево”¶

Синтаксис: И     в ТЧ "ТабличнаяЧасть1" я изменяю флаг "Реквизит булево"

Снипет: ВТЧЯИзменяюФлаг(Парам01,Парам02)

Пример использования:

И     в ТЧ "ТабличнаяЧасть1" я изменяю флаг "Реквизит булево"

И В открытой форме в ТЧ “ТабличнаяЧасть1” я выбираю значение реквизита с заголовком “Реквизит справочник выбор из формы списка” из формы списка¶

Синтаксис: И     В открытой форме в ТЧ "ТабличнаяЧасть1" я выбираю значение реквизита с заголовком "Реквизит справочник выбор из формы списка" из формы списка

Снипет: ВОткрытойФормеВТЧЯВыбираюЗначениеРеквизитаСЗаголовкомИзФормыСписка(Парам01,Парам02)

Пример использования:

И     В открытой форме в ТЧ "ТабличнаяЧасть1" я выбираю значение реквизита с заголовком "Реквизит справочник выбор из формы списка" из формы списка

И В открытой форме в ТЧ “ТабличнаяЧасть1” я выбираю значение реквизита “Реквизит справочник выбор из формы списка” из формы списка¶

Синтаксис: И     В открытой форме в ТЧ "ТабличнаяЧасть1" я выбираю значение реквизита "Реквизит справочник выбор из формы списка" из формы списка

Снипет: ВОткрытойФормеВТЧЯВыбираюЗначениеРеквизитаИзФормыСписка(Парам01,Парам02)

Пример использования:

И     В открытой форме в ТЧ "ТабличнаяЧасть1" я выбираю значение реквизита "Реквизит справочник выбор из формы списка" из формы списка

И в ТЧ “ТабличнаяЧасть1” я выбираю значение реквизита “Реквизит справочник выбор из формы списка” из формы списка¶

Синтаксис: И     в ТЧ "ТабличнаяЧасть1" я выбираю значение реквизита "Реквизит справочник выбор из формы списка" из формы списка

Снипет: ВТЧЯВыбираюЗначениеРеквизитаИзФормыСписка(Парам01,Парам02)

Пример использования:

И     в ТЧ "ТабличнаяЧасть1" я выбираю значение реквизита "Реквизит справочник выбор из формы списка" из формы списка

И В открытой форме в ТЧ “ТабличнаяЧасть1” я выбираю значение реквизита с именем “Реквизит справочник выбор из формы списка” из формы списка¶

Синтаксис: И     В открытой форме в ТЧ "ТабличнаяЧасть1" я выбираю значение реквизита с именем "Реквизит справочник выбор из формы списка" из формы списка

Снипет: ВОткрытойФормеВТЧЯВыбираюЗначениеРеквизитаСИменемИзФормыСписка(Парам01,Парам02)

Пример использования:

И     В открытой форме в ТЧ "ТабличнаяЧасть1" я выбираю значение реквизита с именем "Реквизит справочник выбор из формы списка" из формы списка

И в ТЧ “ТабличнаяЧасть1” я выбираю значение реквизита с именем “Реквизит справочник выбор из формы списка” из формы списка¶

Синтаксис: И     в ТЧ "ТабличнаяЧасть1" я выбираю значение реквизита с именем "Реквизит справочник выбор из формы списка" из формы списка

Снипет: ВТЧЯВыбираюЗначениеРеквизитаСИменемИзФормыСписка(Парам01,Парам02)

Пример использования:

И     в ТЧ "ТабличнаяЧасть1" я выбираю значение реквизита с именем "Реквизит справочник выбор из формы списка" из формы списка

И В открытой форме в ТЧ “Товары” я добавляю новую строку¶

Синтаксис: И     В открытой форме в ТЧ "Товары" я добавляю новую строку

Снипет: ВОткрытойФормеВТЧЯДобавляюНовуюСтроку(Парам01)

Пример использования:

И     В открытой форме в ТЧ "Товары" я добавляю новую строку

И в ТЧ “Товары” я добавляю новую строку¶

Синтаксис: И     в ТЧ "Товары" я добавляю новую строку

Снипет: ВТЧЯДобавляюНовуюСтроку(Парам01)

Пример использования:

И     в ТЧ "Товары" я добавляю новую строку

И В открытой форме в ТЧ “ТабличнаяЧасть1” я устанавливаю флаг с заголовком “Реквизит булево”¶

Синтаксис: И     В открытой форме в ТЧ "ТабличнаяЧасть1" я устанавливаю флаг с заголовком "Реквизит булево"

Снипет: ВОткрытойФормеВТЧЯУстанавливаюФлагСЗаголовком(Парам01,Парам02)

Пример использования:

И     В открытой форме в ТЧ "ТабличнаяЧасть1" я устанавливаю флаг с заголовком "Реквизит булево"

И В открытой форме в ТЧ “ТабличнаяЧасть1” я устанавливаю флаг “Реквизит булево”¶

Синтаксис: И     В открытой форме в ТЧ "ТабличнаяЧасть1" я устанавливаю флаг "Реквизит булево"

Снипет: ВОткрытойФормеВТЧЯУстанавливаюФлаг(Парам01,Парам02)

Пример использования:

И     В открытой форме в ТЧ "ТабличнаяЧасть1" я устанавливаю флаг "Реквизит булево"

И в ТЧ “ТабличнаяЧасть1” я устанавливаю флаг “Реквизит булево”¶

Синтаксис: И     в ТЧ "ТабличнаяЧасть1" я устанавливаю флаг "Реквизит булево"

Снипет: ВТЧЯУстанавливаюФлаг(Парам01,Парам02)

Пример использования:

И     в ТЧ "ТабличнаяЧасть1" я устанавливаю флаг "Реквизит булево"

И В открытой форме в ТЧ “ТабличнаяЧасть1” я снимаю флаг с заголовком “Реквизит булево”¶

Синтаксис: И     В открытой форме в ТЧ "ТабличнаяЧасть1" я снимаю флаг с заголовком "Реквизит булево"

Снипет: ВОткрытойФормеВТЧЯСнимаюФлагСЗаголовком(Парам01,Парам02)

Пример использования:

И     В открытой форме в ТЧ "ТабличнаяЧасть1" я снимаю флаг с заголовком "Реквизит булево"

И В открытой форме в ТЧ “ТабличнаяЧасть1” я снимаю флаг “Реквизит булево”¶

Синтаксис: И     В открытой форме в ТЧ "ТабличнаяЧасть1" я снимаю флаг "Реквизит булево"

Снипет: ВОткрытойФормеВТЧЯСнимаюФлаг(Парам01,Парам02)

Пример использования:

И     В открытой форме в ТЧ "ТабличнаяЧасть1" я снимаю флаг "Реквизит булево"

И в ТЧ “ТабличнаяЧасть1” я снимаю флаг “Реквизит булево”¶

Синтаксис: И     в ТЧ "ТабличнаяЧасть1" я снимаю флаг "Реквизит булево"

Снипет: ВТЧЯСнимаюФлаг(Парам01,Парам02)

Пример использования:

И     в ТЧ "ТабличнаяЧасть1" я снимаю флаг "Реквизит булево"

И В открытой форме в таблице с именем “ДеревоТестов” в колонке “Имя” нет значения “Temp1”¶

Синтаксис: И В открытой форме в таблице с именем "ДеревоТестов" в колонке "Имя" нет значения "Temp1"

Снипет: ВОткрытойФормеВТаблицеСИменемВКолонкеНетЗначения(Парам01,Парам02,Парам03)

Пример использования:

И В открытой форме в таблице с именем "ДеревоТестов" в колонке "Имя" нет значения "Temp1"

И в таблице с именем “ДеревоТестов” в колонке “Имя” нет значения “Temp1”¶

Синтаксис: И в таблице с именем "ДеревоТестов" в колонке "Имя" нет значения "Temp1"

Снипет: ВТаблицеСИменемВКолонкеНетЗначения(Парам01,Парам02,Парам03)

Пример использования:

И в таблице с именем "ДеревоТестов" в колонке "Имя" нет значения "Temp1"

И В открытой форме в таблице с именем “ДеревоТестов” в колонке “Имя” есть значение “ОткрытиеФормы”¶

Синтаксис: И В открытой форме в таблице с именем "ДеревоТестов" в колонке "Имя" есть значение "ОткрытиеФормы"

Снипет: ВОткрытойФормеВТаблицеСИменемВКолонкеЕстьЗначение(Парам01,Парам02,Парам03)

Пример использования:

И В открытой форме в таблице с именем "ДеревоТестов" в колонке "Имя" есть значение "ОткрытиеФормы"

И в таблице с именем “ДеревоТестов” в колонке “Имя” есть значение “ОткрытиеФормы”¶

Синтаксис: И в таблице с именем "ДеревоТестов" в колонке "Имя" есть значение "ОткрытиеФормы"

Снипет: ВТаблицеСИменемВКолонкеЕстьЗначение(Парам01,Парам02,Парам03)

Пример использования:

И в таблице с именем "ДеревоТестов" в колонке "Имя" есть значение "ОткрытиеФормы"

И В открытой форме в ТЧ “Отборы” я активизирую поле “Условие”¶

Синтаксис: И     В открытой форме в ТЧ "Отборы" я активизирую поле "Условие"

Снипет: ВОткрытойФормеВТЧЯАктивизируюПоле(Парам01,Парам02)

Пример использования:

И     В открытой форме в ТЧ "Отборы" я активизирую поле "Условие"

И в ТЧ “Отборы” я активизирую поле “Условие”¶

Синтаксис: И     в ТЧ "Отборы" я активизирую поле "Условие"

Снипет: ВТЧЯАктивизируюПоле(Парам01,Парам02)

Пример использования:

И     в ТЧ "Отборы" я активизирую поле "Условие"

И В открытой форме в ТЧ “Отборы” я активизирую поле с именем “Условие”¶

Синтаксис: И     В открытой форме в ТЧ "Отборы" я активизирую поле с именем "Условие"

Снипет: ВОткрытойФормеВТЧЯАктивизируюПолеСИменем(Парам01,Парам02)

Пример использования:

И     В открытой форме в ТЧ "Отборы" я активизирую поле с именем "Условие"

И в ТЧ “Отборы” я активизирую поле с именем “Условие”¶

Синтаксис: И     в ТЧ "Отборы" я активизирую поле с именем "Условие"

Снипет: ВТЧЯАктивизируюПолеСИменем(Парам01,Парам02)

Пример использования:

И     в ТЧ "Отборы" я активизирую поле с именем "Условие"

Поле ввода¶

И В открытой форме в поле с заголовком “Наименование” я ввожу текст “111”¶

Синтаксис: И     В открытой форме в поле с заголовком "Наименование" я ввожу текст "111"

Снипет: ВОткрытойФормеВПолеСЗаголовкомЯВвожуТекст(Парам01,Парам02)

Пример использования:

И     В открытой форме в поле с заголовком "Наименование" я ввожу текст "111"

И В открытой форме в поле “Наименование” я ввожу текст “111”¶

Синтаксис: И     В открытой форме в поле "Наименование" я ввожу текст "111"

Снипет: ВОткрытойФормеВПолеЯВвожуТекст(Парам01,Парам02)

Пример использования:

И     В открытой форме в поле "Наименование" я ввожу текст "111"

И в поле “Наименование” я ввожу текст “111”¶

Синтаксис: И     в поле "Наименование" я ввожу текст "111"

Снипет: ВПолеЯВвожуТекст(Парам01,Парам02)

Пример использования:

И     в поле "Наименование" я ввожу текст "111"

И В открытой форме я нажимаю кнопку выбора у поля с заголовком “Реквизит2”¶

Синтаксис: И     В открытой форме я нажимаю кнопку выбора у поля с заголовком "Реквизит2"

Снипет: ВОткрытойФормеЯНажимаюКнопкуВыбораУПоляСЗаголовком(Парам01)

Пример использования:

И     В открытой форме я нажимаю кнопку выбора у поля с заголовком "Реквизит2"

И В открытой форме я нажимаю кнопку выбора у поля “Реквизит2”¶

Синтаксис: И     В открытой форме я нажимаю кнопку выбора у поля "Реквизит2"

Снипет: ВОткрытойФормеЯНажимаюКнопкуВыбораУПоля(Парам01)

Пример использования:

И     В открытой форме я нажимаю кнопку выбора у поля "Реквизит2"

И я нажимаю кнопку выбора у поля “Реквизит2”¶

Синтаксис: И     я нажимаю кнопку выбора у поля "Реквизит2"

Снипет: ЯНажимаюКнопкуВыбораУПоля(Парам01)

Пример использования:

И     я нажимаю кнопку выбора у поля "Реквизит2"

И В открытой форме я нажимаю кнопку выбора у поля с именем “Реквизит4”¶

Синтаксис: И     В открытой форме я нажимаю кнопку выбора у поля с именем "Реквизит4"

Снипет: ВОткрытойФормеЯНажимаюКнопкуВыбораУПоляСИменем(Парам01)

Пример использования:

И     В открытой форме я нажимаю кнопку выбора у поля с именем "Реквизит4"

И я нажимаю кнопку выбора у поля с именем “Реквизит4”¶

Синтаксис: И     я нажимаю кнопку выбора у поля с именем "Реквизит4"

Снипет: ЯНажимаюКнопкуВыбораУПоляСИменем(Парам01)

Пример использования:

И     я нажимаю кнопку выбора у поля с именем "Реквизит4"

И В открытой форме в поле с именем “Наименование” я ввожу текст “111”¶

Синтаксис: И     В открытой форме в поле с именем "Наименование" я ввожу текст "111"

Снипет: ВОткрытойФормеВПолеСИменемЯВвожуТекст(Парам01,Парам02)

Пример использования:

И     В открытой форме в поле с именем "Наименование" я ввожу текст "111"

И в поле с именем “Наименование” я ввожу текст “111”¶

Синтаксис: И     в поле с именем "Наименование" я ввожу текст "111"

Снипет: ВПолеСИменемЯВвожуТекст(Парам01,Парам02)

Пример использования:

И     в поле с именем "Наименование" я ввожу текст "111"

Тогда элемент формы с именем “Наименование” стал равен “111”¶

Синтаксис: Тогда элемент формы с именем "Наименование" стал равен "111"

Снипет: ЭлементФормыСИменемСталРавен(Парам01,Парам02)

Пример использования:

Тогда элемент формы с именем "Наименование" стал равен "111"

И В открытой форме я нажимаю на кнопку открытия поля с заголовком “Реквизит2”¶

Синтаксис: И     В открытой форме я нажимаю на кнопку открытия поля с заголовком "Реквизит2"

Снипет: ВОткрытойФормеЯНажимаюНаКнопкуОткрытияПоляСЗаголовком(Парам01)

Пример использования:

И     В открытой форме я нажимаю на кнопку открытия поля с заголовком "Реквизит2"

И В открытой форме я нажимаю на кнопку открытия поля “Реквизит2”¶

Синтаксис: И     В открытой форме я нажимаю на кнопку открытия поля "Реквизит2"

Снипет: ВОткрытойФормеЯНажимаюНаКнопкуОткрытияПоля(Парам01)

Пример использования:

И     В открытой форме я нажимаю на кнопку открытия поля "Реквизит2"

И я нажимаю на кнопку открытия поля “Реквизит2”¶

Синтаксис: И     я нажимаю на кнопку открытия поля "Реквизит2"

Снипет: ЯНажимаюНаКнопкуОткрытияПоля(Парам01)

Пример использования:

И     я нажимаю на кнопку открытия поля "Реквизит2"

И В открытой форме я нажимаю на кнопку открытия поля с именем “Реквизит2”¶

Синтаксис: И     В открытой форме я нажимаю на кнопку открытия поля с именем "Реквизит2"

Снипет: ВОткрытойФормеЯНажимаюНаКнопкуОткрытияПоляСИменем(Парам01)

Пример использования:

И     В открытой форме я нажимаю на кнопку открытия поля с именем "Реквизит2"

И я нажимаю на кнопку открытия поля с именем “Реквизит2”¶

Синтаксис: И     я нажимаю на кнопку открытия поля с именем "Реквизит2"

Снипет: ЯНажимаюНаКнопкуОткрытияПоляСИменем(Парам01)

Пример использования:

И     я нажимаю на кнопку открытия поля с именем "Реквизит2"

И В открытой форме я нажимаю кнопку очистить у поля с заголовком “Отбор”¶

Синтаксис: И     В открытой форме я нажимаю кнопку очистить у поля с заголовком "Отбор"

Снипет: ВОткрытойФормеЯНажимаюКнопкуОчиститьУПоляСЗаголовком(Парам01)

Пример использования:

И     В открытой форме я нажимаю кнопку очистить у поля с заголовком "Отбор"

И В открытой форме я нажимаю кнопку очистить у поля “Отбор”¶

Синтаксис: И     В открытой форме я нажимаю кнопку очистить у поля "Отбор"

Снипет: ВОткрытойФормеЯНажимаюКнопкуОчиститьУПоля(Парам01)

Пример использования:

И     В открытой форме я нажимаю кнопку очистить у поля "Отбор"

И я нажимаю кнопку очистить у поля “Отбор”¶

Синтаксис: И     я нажимаю кнопку очистить у поля "Отбор"

Снипет: ЯНажимаюКнопкуОчиститьУПоля(Парам01)

Пример использования:

И     я нажимаю кнопку очистить у поля "Отбор"

И В открытой форме я нажимаю кнопку очистить у поля с именем “Отбор”¶

Синтаксис: И     В открытой форме я нажимаю кнопку очистить у поля с именем "Отбор"

Снипет: ВОткрытойФормеЯНажимаюКнопкуОчиститьУПоляСИменем(Парам01)

Пример использования:

И     В открытой форме я нажимаю кнопку очистить у поля с именем "Отбор"

И я нажимаю кнопку очистить у поля с именем “Отбор”¶

Синтаксис: И     я нажимаю кнопку очистить у поля с именем "Отбор"

Снипет: ЯНажимаюКнопкуОчиститьУПоляСИменем(Парам01)

Пример использования:

И     я нажимаю кнопку очистить у поля с именем "Отбор"

И я перехожу к следующему реквизиту¶

Синтаксис: И     я перехожу к следующему реквизиту

Снипет: ЯПерехожуКСледующемуРеквизиту()

Пример использования:

И     я перехожу к следующему реквизиту

Панель разделов и функций¶

Когда В панели разделов я выбираю “Склады”¶

Синтаксис: Когда В панели разделов я выбираю "Склады"

Снипет: ВПанелиРазделовЯВыбираю(Парам01)

Пример использования:

Когда В панели разделов я выбираю "Склады"

И В панели функций я выбираю “Склады”¶

Синтаксис: И     В панели функций я выбираю "Склады"

Снипет: ВПанелиФункцийЯВыбираю(Парам01)

Пример использования:

И     В панели функций я выбираю "Склады"

Табличный документ¶

И табличный документ формы с именем “РеквизитТабличныйДокумент” стал равен:¶

Синтаксис: И     табличный документ формы с именем "РеквизитТабличныйДокумент" стал равен:

Снипет: ТабличныйДокументФормыСИменемСталРавен(Парам01,ТабПарам)

Пример использования:

И     табличный документ формы с именем "РеквизитТабличныйДокумент" стал равен:

И табличный документ формы с именем “РеквизитТабличныйДокумент” стал пустым¶

Синтаксис: И     табличный документ формы с именем "РеквизитТабличныйДокумент" стал пустым

Снипет: ТабличныйДокументФормыСИменемСталПустым(Парам01)

Пример использования:

И     табличный документ формы с именем "РеквизитТабличныйДокумент" стал пустым

Окна¶

И Я закрыл все окна клиентского приложения¶

Синтаксис: И    Я закрыл все окна клиентского приложения

Снипет: ЯЗакрылВсеОкнаКлиентскогоПриложения()

Пример использования:

И    Я закрыл все окна клиентского приложения

Тогда открылось окно “Справочник1”¶

Синтаксис: Тогда открылось окно "Справочник1"

Снипет: ОткрылосьОкно(Парам01)

Пример использования:

Тогда открылось окно "Справочник1"

И Я закрываю окно с заголовком “Справочник1”¶

Синтаксис: И     Я закрываю окно с заголовком "Справочник1"

Снипет: ЯЗакрываюОкноСЗаголовком(Парам01)

Пример использования:

И     Я закрываю окно с заголовком "Справочник1"

И Я закрываю окно “Справочник1”¶

Синтаксис: И     Я закрываю окно "Справочник1"

Снипет: ЯЗакрываюОкно(Парам01)

Пример использования:

И     Я закрываю окно "Справочник1"

Кнопки формы¶

Когда Я нажимаю кнопку командного интерфейса “Основная”¶

Синтаксис: Когда Я нажимаю кнопку командного интерфейса "Основная"

Снипет: ЯНажимаюКнопкуКомандногоИнтерфейса(Парам01)

Пример использования:

Когда Я нажимаю кнопку командного интерфейса "Основная"

И В открытой форме я нажимаю на кнопку с заголовком “Создать”¶

Синтаксис: И     В открытой форме я нажимаю на кнопку с заголовком "Создать"

Снипет: ВОткрытойФормеЯНажимаюНаКнопкуСЗаголовком(Парам01)

Пример использования:

И     В открытой форме я нажимаю на кнопку с заголовком "Создать"

И В открытой форме я нажимаю на кнопку “Создать”¶

Синтаксис: И     В открытой форме я нажимаю на кнопку "Создать"

Снипет: ВОткрытойФормеЯНажимаюНаКнопку(Парам01)

Пример использования:

И     В открытой форме я нажимаю на кнопку "Создать"

И я нажимаю на кнопку “Создать”¶

Синтаксис: И     я нажимаю на кнопку "Создать"

Снипет: ЯНажимаюНаКнопку(Парам01)

Пример использования:

И     я нажимаю на кнопку "Создать"

И В открытой форме я нажимаю на кнопку с именем “ЗаполнитьРекСтрока1”¶

Синтаксис: И     В открытой форме я нажимаю на кнопку с именем "ЗаполнитьРекСтрока1"

Снипет: ВОткрытойФормеЯНажимаюНаКнопкуСИменем(Парам01)

Пример использования:

И     В открытой форме я нажимаю на кнопку с именем "ЗаполнитьРекСтрока1"

И я нажимаю на кнопку с именем “ЗаполнитьРекСтрока1”¶

Синтаксис: И     я нажимаю на кнопку с именем "ЗаполнитьРекСтрока1"

Снипет: ЯНажимаюНаКнопкуСИменем(Парам01)

Пример использования:

И     я нажимаю на кнопку с именем "ЗаполнитьРекСтрока1"

И В текущем окне я нажимаю кнопку командного интерфейса “Общая команда для справочника1”¶

Синтаксис: И     В текущем окне я нажимаю кнопку командного интерфейса "Общая команда для справочника1"

Снипет: ВТекущемОкнеЯНажимаюКнопкуКомандногоИнтерфейса(Парам01)

Пример использования:

И     В текущем окне я нажимаю кнопку командного интерфейса "Общая команда для справочника1"

Кнопки таблицы¶

И В открытой форме в ТЧ “ТабличнаяЧасть1” я нажимаю на кнопку с заголовком “Добавить”¶

Синтаксис: И     В открытой форме в ТЧ "ТабличнаяЧасть1" я нажимаю на кнопку с заголовком "Добавить"

Снипет: ВОткрытойФормеВТЧЯНажимаюНаКнопкуСЗаголовком(Парам01,Парам02)

Пример использования:

И     В открытой форме в ТЧ "ТабличнаяЧасть1" я нажимаю на кнопку с заголовком "Добавить"

И В открытой форме в ТЧ “ТабличнаяЧасть1” я нажимаю на кнопку “Добавить”¶

Синтаксис: И     В открытой форме в ТЧ "ТабличнаяЧасть1" я нажимаю на кнопку "Добавить"

Снипет: ВОткрытойФормеВТЧЯНажимаюНаКнопку(Парам01,Парам02)

Пример использования:

И     В открытой форме в ТЧ "ТабличнаяЧасть1" я нажимаю на кнопку "Добавить"

И в ТЧ “ТабличнаяЧасть1” я нажимаю на кнопку “Добавить”¶

Синтаксис: И     в ТЧ "ТабличнаяЧасть1" я нажимаю на кнопку "Добавить"

Снипет: ВТЧЯНажимаюНаКнопку(Парам01,Парам02)

Пример использования:

И     в ТЧ "ТабличнаяЧасть1" я нажимаю на кнопку "Добавить"

И В открытой форме в ТЧ “ТабличнаяЧасть1” я нажимаю на кнопку с именем “Добавить”¶

Синтаксис: И     В открытой форме в ТЧ "ТабличнаяЧасть1" я нажимаю на кнопку с именем "Добавить"

Снипет: ВОткрытойФормеВТЧЯНажимаюНаКнопкуСИменем(Парам01,Парам02)

Пример использования:

И     В открытой форме в ТЧ "ТабличнаяЧасть1" я нажимаю на кнопку с именем "Добавить"

И в ТЧ “ТабличнаяЧасть1” я нажимаю на кнопку с именем “Добавить”¶

Синтаксис: И     в ТЧ "ТабличнаяЧасть1" я нажимаю на кнопку с именем "Добавить"

Снипет: ВТЧЯНажимаюНаКнопкуСИменем(Парам01,Парам02)

Пример использования:

И     в ТЧ "ТабличнаяЧасть1" я нажимаю на кнопку с именем "Добавить"

Вкладки¶

И В открытой форме я перехожу к закладке с заголовком “Вспомогательная”¶

Синтаксис: И     В открытой форме я перехожу к закладке с заголовком "Вспомогательная"

Снипет: ВОткрытойФормеЯПерехожуКЗакладкеСЗаголовком(Парам01)

Пример использования:

И     В открытой форме я перехожу к закладке с заголовком "Вспомогательная"

И В открытой форме я перехожу к закладке “Вспомогательная”¶

Синтаксис: И     В открытой форме я перехожу к закладке "Вспомогательная"

Снипет: ВОткрытойФормеЯПерехожуКЗакладке(Парам01)

Пример использования:

И     В открытой форме я перехожу к закладке "Вспомогательная"

И я перехожу к закладке “Вспомогательная”¶

Синтаксис: И     я перехожу к закладке "Вспомогательная"

Снипет: ЯПерехожуКЗакладке(Парам01)

Пример использования:

И     я перехожу к закладке "Вспомогательная"

И В открытой форме я перехожу к закладке с именем “Вспомогательная”¶

Синтаксис: И     В открытой форме я перехожу к закладке с именем "Вспомогательная"

Снипет: ВОткрытойФормеЯПерехожуКЗакладкеСИменем(Парам01)

Пример использования:

И     В открытой форме я перехожу к закладке с именем "Вспомогательная"

И я перехожу к закладке с именем “Вспомогательная”¶

Синтаксис: И     я перехожу к закладке с именем "Вспомогательная"

Снипет: ЯПерехожуКЗакладкеСИменем(Парам01)

Пример использования:

И     я перехожу к закладке с именем "Вспомогательная"

Гиперссылка¶

И В открытой форме я нажимаю на гиперссылку с заголовком “Гиперссылка”¶

Синтаксис: И     В открытой форме я нажимаю на гиперссылку с заголовком "Гиперссылка"

Снипет: ВОткрытойФормеЯНажимаюНаГиперссылкуСЗаголовком(Парам01)

Пример использования:

И     В открытой форме я нажимаю на гиперссылку с заголовком "Гиперссылка"

И В открытой форме я нажимаю на гиперссылку “Гиперссылка”¶

Синтаксис: И     В открытой форме я нажимаю на гиперссылку "Гиперссылка"

Снипет: ВОткрытойФормеЯНажимаюНаГиперссылку(Парам01)

Пример использования:

И     В открытой форме я нажимаю на гиперссылку "Гиперссылка"

И я нажимаю на гиперссылку “Гиперссылка”¶

Синтаксис: И     я нажимаю на гиперссылку "Гиперссылка"

Снипет: ЯНажимаюНаГиперссылку(Парам01)

Пример использования:

И     я нажимаю на гиперссылку "Гиперссылка"

И В открытой форме я нажимаю на гиперссылку с именем “Гиперссылка”¶

Синтаксис: И     В открытой форме я нажимаю на гиперссылку с именем "Гиперссылка"

Снипет: ВОткрытойФормеЯНажимаюНаГиперссылкуСИменем(Парам01)

Пример использования:

И     В открытой форме я нажимаю на гиперссылку с именем "Гиперссылка"

И я нажимаю на гиперссылку с именем “Гиперссылка”¶

Синтаксис: И     я нажимаю на гиперссылку с именем "Гиперссылка"

Снипет: ЯНажимаюНаГиперссылкуСИменем(Парам01)

Пример использования:

И     я нажимаю на гиперссылку с именем "Гиперссылка"

Иерархия элементов¶

И В открытой форме я сворачиваю группу с заголовком “СворачиваемаяГруппа”¶

Синтаксис: И     В открытой форме я сворачиваю группу с заголовком "СворачиваемаяГруппа"

Снипет: ВОткрытойФормеЯСворачиваюГруппуСЗаголовком(Парам01)

Пример использования:

И     В открытой форме я сворачиваю группу с заголовком "СворачиваемаяГруппа"

И В открытой форме я сворачиваю группу “СворачиваемаяГруппа”¶

Синтаксис: И     В открытой форме я сворачиваю группу "СворачиваемаяГруппа"

Снипет: ВОткрытойФормеЯСворачиваюГруппу(Парам01)

Пример использования:

И     В открытой форме я сворачиваю группу "СворачиваемаяГруппа"

И я сворачиваю группу “СворачиваемаяГруппа”¶

Синтаксис: И     я сворачиваю группу "СворачиваемаяГруппа"

Снипет: ЯСворачиваюГруппу(Парам01)

Пример использования:

И     я сворачиваю группу "СворачиваемаяГруппа"

И В открытой форме я сворачиваю группу с именем “СворачиваемаяГруппа”¶

Синтаксис: И     В открытой форме я сворачиваю группу с именем "СворачиваемаяГруппа"

Снипет: ВОткрытойФормеЯСворачиваюГруппуСИменем(Парам01)

Пример использования:

И     В открытой форме я сворачиваю группу с именем "СворачиваемаяГруппа"

И я сворачиваю группу с именем “СворачиваемаяГруппа”¶

Синтаксис: И     я сворачиваю группу с именем "СворачиваемаяГруппа"

Снипет: ЯСворачиваюГруппуСИменем(Парам01)

Пример использования:

И     я сворачиваю группу с именем "СворачиваемаяГруппа"

И В открытой форме я разворачиваю группу с заголовком “СворачиваемаяГруппа”¶

Синтаксис: И     В открытой форме я разворачиваю группу с заголовком "СворачиваемаяГруппа"

Снипет: ВОткрытойФормеЯРазворачиваюГруппуСЗаголовком(Парам01)

Пример использования:

И     В открытой форме я разворачиваю группу с заголовком "СворачиваемаяГруппа"

И В открытой форме я разворачиваю группу “СворачиваемаяГруппа”¶

Синтаксис: И     В открытой форме я разворачиваю группу "СворачиваемаяГруппа"

Снипет: ВОткрытойФормеЯРазворачиваюГруппу(Парам01)

Пример использования:

И     В открытой форме я разворачиваю группу "СворачиваемаяГруппа"

И я разворачиваю группу “СворачиваемаяГруппа”¶

Синтаксис: И     я разворачиваю группу "СворачиваемаяГруппа"

Снипет: ЯРазворачиваюГруппу(Парам01)

Пример использования:

И     я разворачиваю группу "СворачиваемаяГруппа"

И В открытой форме я разворачиваю группу с именем “СворачиваемаяГруппа”¶

Синтаксис: И     В открытой форме я разворачиваю группу с именем "СворачиваемаяГруппа"

Снипет: ВОткрытойФормеЯРазворачиваюГруппуСИменем(Парам01)

Пример использования:

И     В открытой форме я разворачиваю группу с именем "СворачиваемаяГруппа"

И я разворачиваю группу с именем “СворачиваемаяГруппа”¶

Синтаксис: И     я разворачиваю группу с именем "СворачиваемаяГруппа"

Снипет: ЯРазворачиваюГруппуСИменем(Парам01)

Пример использования:

И     я разворачиваю группу с именем "СворачиваемаяГруппа"

Выпадающий список¶

И В открытой форме я открываю выпадающий список с заголовком “Реквизит2”¶

Синтаксис: И     В открытой форме я открываю выпадающий список с заголовком "Реквизит2"

Снипет: ВОткрытойФормеЯОткрываюВыпадающийСписокСЗаголовком(Парам01)

Пример использования:

И     В открытой форме я открываю выпадающий список с заголовком "Реквизит2"

И В открытой форме я открываю выпадающий список “Реквизит2”¶

Синтаксис: И     В открытой форме я открываю выпадающий список "Реквизит2"

Снипет: ВОткрытойФормеЯОткрываюВыпадающийСписок(Парам01)

Пример использования:

И     В открытой форме я открываю выпадающий список "Реквизит2"

И я открываю выпадающий список “Реквизит2”¶

Синтаксис: И     я открываю выпадающий список "Реквизит2"

Снипет: ЯОткрываюВыпадающийСписок(Парам01)

Пример использования:

И     я открываю выпадающий список "Реквизит2"

И В открытой форме я открываю выпадающий список с именем “Реквизит2”¶

Синтаксис: И     В открытой форме я открываю выпадающий список с именем "Реквизит2"

Снипет: ВОткрытойФормеЯОткрываюВыпадающийСписокСИменем(Парам01)

Пример использования:

И     В открытой форме я открываю выпадающий список с именем "Реквизит2"

И я открываю выпадающий список с именем “Реквизит2”¶

Синтаксис: И     я открываю выпадающий список с именем "Реквизит2"

Снипет: ЯОткрываюВыпадающийСписокСИменем(Парам01)

Пример использования:

И     я открываю выпадающий список с именем "Реквизит2"

И В открытой форме из выпадающего списка с заголовком “Реквизит2” я выбираю “ТестовыйЭлемент21”¶

Синтаксис: И     В открытой форме из выпадающего списка с заголовком "Реквизит2" я выбираю "ТестовыйЭлемент21"

Снипет: ВОткрытойФормеИзВыпадающегоСпискаСЗаголовкомЯВыбираю(Парам01,Парам02)

Пример использования:

И     В открытой форме из выпадающего списка с заголовком "Реквизит2" я выбираю "ТестовыйЭлемент21"

И В открытой форме из выпадающего списка “Реквизит2” я выбираю “ТестовыйЭлемент21”¶

Синтаксис: И     В открытой форме из выпадающего списка "Реквизит2" я выбираю "ТестовыйЭлемент21"

Снипет: ВОткрытойФормеИзВыпадающегоСпискаЯВыбираю(Парам01,Парам02)

Пример использования:

И     В открытой форме из выпадающего списка "Реквизит2" я выбираю "ТестовыйЭлемент21"

И из выпадающего списка “Реквизит2” я выбираю “ТестовыйЭлемент21”¶

Синтаксис: И     из выпадающего списка "Реквизит2" я выбираю "ТестовыйЭлемент21"

Снипет: ИзВыпадающегоСпискаЯВыбираю(Парам01,Парам02)

Пример использования:

И     из выпадающего списка "Реквизит2" я выбираю "ТестовыйЭлемент21"

И В открытой форме из выпадающего списка с именем “Реквизит2” я выбираю “ТестовыйЭлемент21”¶

Синтаксис: И     В открытой форме из выпадающего списка с именем "Реквизит2" я выбираю "ТестовыйЭлемент21"

Снипет: ВОткрытойФормеИзВыпадающегоСпискаСИменемЯВыбираю(Парам01,Парам02)

Пример использования:

И     В открытой форме из выпадающего списка с именем "Реквизит2" я выбираю "ТестовыйЭлемент21"

И из выпадающего списка с именем “Реквизит2” я выбираю “ТестовыйЭлемент21”¶

Синтаксис: И     из выпадающего списка с именем "Реквизит2" я выбираю "ТестовыйЭлемент21"

Снипет: ИзВыпадающегоСпискаСИменемЯВыбираю(Парам01,Парам02)

Пример использования:

И     из выпадающего списка с именем "Реквизит2" я выбираю "ТестовыйЭлемент21"

Форма списка¶

И В открытой форме я выбираю значение реквизита с заголовком “Реквизит2” из формы списка¶

Синтаксис: И     В открытой форме я выбираю значение реквизита с заголовком "Реквизит2" из формы списка

Снипет: ВОткрытойФормеЯВыбираюЗначениеРеквизитаСЗаголовкомИзФормыСписка(Парам01)

Пример использования:

И     В открытой форме я выбираю значение реквизита с заголовком "Реквизит2" из формы списка

И В открытой форме я выбираю значение реквизита “Реквизит2” из формы списка¶

Синтаксис: И     В открытой форме я выбираю значение реквизита "Реквизит2" из формы списка

Снипет: ВОткрытойФормеЯВыбираюЗначениеРеквизитаИзФормыСписка(Парам01)

Пример использования:

И     В открытой форме я выбираю значение реквизита "Реквизит2" из формы списка

И я выбираю значение реквизита “Реквизит2” из формы списка¶

Синтаксис: И     я выбираю значение реквизита "Реквизит2" из формы списка

Снипет: ЯВыбираюЗначениеРеквизитаИзФормыСписка(Парам01)

Пример использования:

И     я выбираю значение реквизита "Реквизит2" из формы списка

И В открытой форме я выбираю значение реквизита с именем “Реквизит2” из формы списка¶

Синтаксис: И     В открытой форме я выбираю значение реквизита с именем "Реквизит2" из формы списка

Снипет: ВОткрытойФормеЯВыбираюЗначениеРеквизитаСИменемИзФормыСписка(Парам01)

Пример использования:

И     В открытой форме я выбираю значение реквизита с именем "Реквизит2" из формы списка

И я выбираю значение реквизита с именем “Реквизит2” из формы списка¶

Синтаксис: И     я выбираю значение реквизита с именем "Реквизит2" из формы списка

Снипет: ЯВыбираюЗначениеРеквизитаСИменемИзФормыСписка(Парам01)

Пример использования:

И     я выбираю значение реквизита с именем "Реквизит2" из формы списка

И В форме “Справочник2” в таблице “Список” я перехожу к строке:¶

Синтаксис: И     В форме "Справочник2" в таблице "Список" я перехожу к строке:

Снипет: ВФормеВТаблицеЯПерехожуКСтроке(Парам01,Парам02,ТабПарам)

Пример использования:

И     В форме "Справочник2" в таблице "Список" я перехожу к строке:

И В форме “Справочник2” в ТЧ “Список” я выбираю текущую строку¶

Синтаксис: И     В форме "Справочник2" в ТЧ "Список" я выбираю текущую строку

Снипет: ВФормеВТЧЯВыбираюТекущуюСтроку(Парам01,Парам02)

Пример использования:

И     В форме "Справочник2" в ТЧ "Список" я выбираю текущую строку

Флаг¶

И В открытой форме я изменяю флаг с заголовком “Реквизит булево”¶

Синтаксис: И     В открытой форме я изменяю флаг с заголовком "Реквизит булево"

Снипет: ВОткрытойФормеЯИзменяюФлагСЗаголовком(Парам01)

Пример использования:

И     В открытой форме я изменяю флаг с заголовком "Реквизит булево"

И В открытой форме я изменяю флаг “Реквизит булево”¶

Синтаксис: И     В открытой форме я изменяю флаг "Реквизит булево"

Снипет: ВОткрытойФормеЯИзменяюФлаг(Парам01)

Пример использования:

И     В открытой форме я изменяю флаг "Реквизит булево"

И я изменяю флаг “Реквизит булево”¶

Синтаксис: И     я изменяю флаг "Реквизит булево"

Снипет: ЯИзменяюФлаг(Парам01)

Пример использования:

И     я изменяю флаг "Реквизит булево"

И В открытой форме я изменяю флаг с именем “Реквизит булево”¶

Синтаксис: И     В открытой форме я изменяю флаг с именем "Реквизит булево"

Снипет: ВОткрытойФормеЯИзменяюФлагСИменем(Парам01)

Пример использования:

И     В открытой форме я изменяю флаг с именем "Реквизит булево"

И я изменяю флаг с именем “Реквизит булево”¶

Синтаксис: И     я изменяю флаг с именем "Реквизит булево"

Снипет: ЯИзменяюФлагСИменем(Парам01)

Пример использования:

И     я изменяю флаг с именем "Реквизит булево"

И В открытой форме я снимаю флаг с заголовком “Реквизит булево”¶

Синтаксис: И     В открытой форме я снимаю флаг с заголовком "Реквизит булево"

Снипет: ВОткрытойФормеЯСнимаюФлагСЗаголовком(Парам01)

Пример использования:

И     В открытой форме я снимаю флаг с заголовком "Реквизит булево"

И В открытой форме я снимаю флаг “Реквизит булево”¶

Синтаксис: И     В открытой форме я снимаю флаг "Реквизит булево"

Снипет: ВОткрытойФормеЯСнимаюФлаг(Парам01)

Пример использования:

И     В открытой форме я снимаю флаг "Реквизит булево"

И я снимаю флаг “Реквизит булево”¶

Синтаксис: И     я снимаю флаг "Реквизит булево"

Снипет: ЯСнимаюФлаг(Парам01)

Пример использования:

И     я снимаю флаг "Реквизит булево"

И В открытой форме я снимаю флаг с именем “Реквизит булево”¶

Синтаксис: И     В открытой форме я снимаю флаг с именем "Реквизит булево"

Снипет: ВОткрытойФормеЯСнимаюФлагСИменем(Парам01)

Пример использования:

И     В открытой форме я снимаю флаг с именем "Реквизит булево"

И я снимаю флаг с именем “Реквизит булево”¶

Синтаксис: И     я снимаю флаг с именем "Реквизит булево"

Снипет: ЯСнимаюФлагСИменем(Парам01)

Пример использования:

И     я снимаю флаг с именем "Реквизит булево"

И В открытой форме я устанавливаю флаг с заголовком “Реквизит булево”¶

Синтаксис: И     В открытой форме я устанавливаю флаг с заголовком "Реквизит булево"

Снипет: ВОткрытойФормеЯУстанавливаюФлагСЗаголовком(Парам01)

Пример использования:

И     В открытой форме я устанавливаю флаг с заголовком "Реквизит булево"

И В открытой форме я устанавливаю флаг “Реквизит булево”¶

Синтаксис: И     В открытой форме я устанавливаю флаг "Реквизит булево"

Снипет: ВОткрытойФормеЯУстанавливаюФлаг(Парам01)

Пример использования:

И     В открытой форме я устанавливаю флаг "Реквизит булево"

И я устанавливаю флаг “Реквизит булево”¶

Синтаксис: И     я устанавливаю флаг "Реквизит булево"

Снипет: ЯУстанавливаюФлаг(Парам01)

Пример использования:

И     я устанавливаю флаг "Реквизит булево"

И В открытой форме я устанавливаю флаг с именем “Реквизит булево”¶

Синтаксис: И     В открытой форме я устанавливаю флаг с именем "Реквизит булево"

Снипет: ВОткрытойФормеЯУстанавливаюФлагСИменем(Парам01)

Пример использования:

И     В открытой форме я устанавливаю флаг с именем "Реквизит булево"

И я устанавливаю флаг с именем “Реквизит булево”¶

Синтаксис: И     я устанавливаю флаг с именем "Реквизит булево"

Снипет: ЯУстанавливаюФлагСИменем(Парам01)

Пример использования:

И     я устанавливаю флаг с именем "Реквизит булево"

Переключатель¶

И В открытой форме я меняю значение переключателя с заголовком “Реквизит переключатель” на “Первое значение”¶

Синтаксис: И     В открытой форме я меняю значение переключателя с заголовком "Реквизит переключатель" на "Первое значение"

Снипет: ВОткрытойФормеЯМеняюЗначениеПереключателяСЗаголовкомНа(Парам01,Парам02)

Пример использования:

И     В открытой форме я меняю значение переключателя с заголовком "Реквизит переключатель" на "Первое значение"

И В открытой форме я меняю значение переключателя “Реквизит переключатель” на “Первое значение”¶

Синтаксис: И     В открытой форме я меняю значение переключателя "Реквизит переключатель" на "Первое значение"

Снипет: ВОткрытойФормеЯМеняюЗначениеПереключателяНа(Парам01,Парам02)

Пример использования:

И     В открытой форме я меняю значение переключателя "Реквизит переключатель" на "Первое значение"

И я меняю значение переключателя “Реквизит переключатель” на “Первое значение”¶

Синтаксис: И     я меняю значение переключателя "Реквизит переключатель" на "Первое значение"

Снипет: ЯМеняюЗначениеПереключателяНа(Парам01,Парам02)

Пример использования:

И     я меняю значение переключателя "Реквизит переключатель" на "Первое значение"

И В открытой форме я меняю значение переключателя с именем “Реквизит переключатель” на “Первое значение”¶

Синтаксис: И     В открытой форме я меняю значение переключателя с именем "Реквизит переключатель" на "Первое значение"

Снипет: ВОткрытойФормеЯМеняюЗначениеПереключателяСИменемНа(Парам01,Парам02)

Пример использования:

И     В открытой форме я меняю значение переключателя с именем "Реквизит переключатель" на "Первое значение"

И я меняю значение переключателя с именем “Реквизит переключатель” на “Первое значение”¶

Синтаксис: И     я меняю значение переключателя с именем "Реквизит переключатель" на "Первое значение"

Снипет: ЯМеняюЗначениеПереключателяСИменемНа(Парам01,Парам02)

Пример использования:

И     я меняю значение переключателя с именем "Реквизит переключатель" на "Первое значение"

Справочники¶

И Есть элемент справочника “Справочник1” с наименованием “Тест” и реквизитом “Реквизит2” равным “Группа2Элем2”¶

Синтаксис: И     Есть элемент справочника "Справочник1" с наименованием "Тест" и  реквизитом "Реквизит2" равным "Группа2Элем2"

Снипет: ЕстьЭлементСправочникаСНаименованиемИРеквизитомРавным(Парам01,Парам02,Парам03,Парам04)

Пример использования:

И     Есть элемент справочника "Справочник1" с наименованием "Тест" и  реквизитом "Реквизит2" равным "Группа2Элем2"

И Элемент Справочника1 с именем “Тестовый Элемент 2” записался корректно¶

Синтаксис: И     Элемент Справочника1 с именем "Тестовый Элемент 2" записался корректно

Снипет: ЭлементСправочника1СИменемЗаписалсяКорректно(Парам01)

Пример использования:

И     Элемент Справочника1 с именем "Тестовый Элемент 2" записался корректно

в метаданных есть Справочник “Справочник1”¶

Синтаксис: в метаданных есть Справочник "Справочник1"

Снипет: ВМетаданныхЕстьСправочник(Парам01Строка)

Пример использования:

в метаданных есть Справочник "Справочник1"

я удаляю все элементы Справочника “Справочник1”¶

Синтаксис: я удаляю все элементы Справочника "Справочник1"

Снипет: ЯУдаляюВсеЭлементыСправочника(Парам01Строка)

Пример использования:

я удаляю все элементы Справочника "Справочник1"

в базе нет элементов Справочника “Справочник1”¶

Синтаксис: в базе нет элементов Справочника "Справочник1"

Снипет: ВБазеНетЭлементовСправочника(Парам01Строка)

Пример использования:

в базе нет элементов Справочника "Справочник1"

я создаю сам один элемент справочника “Справочник1”¶

Синтаксис: я создаю сам один элемент справочника "Справочник1"

Снипет: ЯСоздаюСамОдинЭлементСправочника(Парам01Строка)

Пример использования:

я создаю сам один элемент справочника "Справочник1"

В базе появился хотя бы один элемент справочника “Справочник1”¶

Синтаксис: В базе появился хотя бы один элемент справочника "Справочник1"

Снипет: ВБазеПоявилсяХотяБыОдинЭлементСправочника(Парам01Строка)

Пример использования:

В базе появился хотя бы один элемент справочника "Справочник1"

Регистры сведений¶

Когда в метаданных есть РегистрСведений “РегистрСведений1”¶

Синтаксис: Когда в метаданных есть РегистрСведений "РегистрСведений1"

Снипет: ВМетаданныхЕстьРегистрСведений(Парам01)

Пример использования:

Когда в метаданных есть РегистрСведений "РегистрСведений1"

И я удаляю все записи РегистрСведений “РегистрСведений1”¶

Синтаксис: И я удаляю все записи РегистрСведений "РегистрСведений1"

Снипет: ЯУдаляюВсеЗаписиРегистрСведений(Парам01)

Пример использования:

И я удаляю все записи РегистрСведений "РегистрСведений1"

И в базе нет записей РегистрСведений “РегистрСведений1”¶

Синтаксис: И в базе нет записей РегистрСведений "РегистрСведений1"

Снипет: ВБазеНетЗаписейРегистрСведений(Парам01)

Пример использования:

И в базе нет записей РегистрСведений "РегистрСведений1"

И я создал fixture РегистрСведений по макету “Макет”¶

Синтаксис: И я создал  fixture РегистрСведений по макету "Макет"

Снипет: ЯСоздалFixtureРегистрСведенийПоМакету(Парам01)

Пример использования:

И я создал  fixture РегистрСведений по макету "Макет"

Тогда В базе появился хотя бы одна запись РегистрСведений “РегистрСведений1”¶

Синтаксис: Тогда В базе появился хотя бы одна запись РегистрСведений "РегистрСведений1"

Снипет: ВБазеПоявилсяХотяБыОднаЗаписьРегистрСведений(Парам01)

Пример использования:

Тогда В базе появился хотя бы одна запись РегистрСведений "РегистрСведений1"

Внешний файл¶

И я буду выбирать внешний файл “c:temp333.epf”¶

Синтаксис: И     я буду выбирать внешний файл "c:temp333.epf"

Снипет: ЯБудуВыбиратьВнешнийФайл(Парам01)

Пример использования:

И     я буду выбирать внешний файл "c:temp333.epf"

Навигационная ссылка¶

Когда я перехожу по навигационной ссылке “НавигационнаяСсылка”¶

Синтаксис: Когда я перехожу по навигационной ссылке "НавигационнаяСсылка"

Снипет: ЯПерехожуПоНавигационнойСсылке(Парам01)

Пример использования:

Когда я перехожу по навигационной ссылке "НавигационнаяСсылка"

Меню¶

И я выбираю пункт меню “ЗначениеМеню”¶

Синтаксис: И     я выбираю пункт меню "ЗначениеМеню"

Снипет: ЯВыбираюПунктМеню(ЗначениеМеню)

Пример использования:

И     я выбираю пункт меню "ЗначениеМеню"

Список выбора¶

И я выбираю из списка “Значение”¶

Синтаксис: И     я выбираю из списка "Значение"

Снипет: ЯВыбираюИзСписка(Значение)

Пример использования:

И     я выбираю из списка "Значение"

Фиксирование значения поля¶

И я запоминаю значение поля “Номер” как “НомерДокумента”¶

Синтаксис: И     я запоминаю значение поля "Номер" как "НомерДокумента"

Снипет: ЯЗапоминаюЗначениеПоляКак(Парам01,Парам02)

Пример использования:

И     я запоминаю значение поля "Номер" как "НомерДокумента"

Работа с окном сообщений¶

И Я очищаю окно сообщений пользователю¶

Синтаксис: И     Я очищаю окно сообщений пользователю

Снипет: ЯОчищаюОкноСообщенийПользователю()

Пример использования:

И     Я очищаю окно сообщений пользователю

Когда в логе сообщений TestClient есть строка “ИскомаяСтрока”¶

Синтаксис: Когда в логе сообщений TestClient есть строка "ИскомаяСтрока"

Снипет: ВЛогеСообщенийTestClientЕстьСтрока(Парам01)

Пример использования:

Когда в логе сообщений TestClient есть строка "Таблица параметров должна заканчиваться символом |"

Создание fixtures

И Я создаю fixtures по макету “Макет”¶

Синтаксис: И     Я создаю fixtures по макету "Макет"

Снипет: ЯСоздаюFixturesПоМакету(Парам01)

Пример использования:

И     Я создаю fixtures по макету "Макет"

Доступность ролей¶

Мне доступна роль “ДоступнаяРоль”¶

Синтаксис: Мне доступна роль "ДоступнаяРоль"

Снипет: МнеДоступнаРоль(Парам01)

Пример использования:

Мне доступна роль "Админ"

Мне не доступна роль “НедоступнаяРоль”¶

Синтаксис: Мне не доступна роль "НедоступнаяРоль"

Снипет: МнеНеДоступнаРоль(Парам01)

Пример использования:

Мне не доступна роль "НедоступнаяРоль"

Паузы¶

Когда Я делаю паузу 2 секунды¶

Синтаксис: Когда Я делаю паузу 2 секунды

Снипет: ЯДелаюПаузуСекунды(Парам01)

Пример использования:

Когда Я делаю паузу 2 секунды

И Пауза 1¶

Синтаксис: И     Пауза 1

Снипет: Пауза(Парам01)

Пример использования:

Что это и для чего надо

Cinema

Меня не интересуют истории, которые оставляют зрителя безразличным. Я хочу, чтобы выходя из кинотеатра человек думал: «Черт возьми, мне нужно выпить». (с) Киллиан Мёрфи
Так, что это значит Кино и BDD?! Добро пожаловать под кат.

Я расскажу об инструменте, который из сценария, написанного на Gherkin (есть такой язык сценариев), делает инструкцию, а точнее — актуальную документацию (Living documentation).

Чтобы вас не томить — сразу покажу результат моих (и не только) трудов.
Я расскажу вам как из сценария, написанного ниже, сделать вот такой вот ролик одним кликом. Замечу, что сценарии можно писать не только на русском языке, но и на других языках.

Не секрет — документация со временем устаревает, а поддерживать её в актуальном состоянии затратно, да и “ломает”. Документация уже есть, но постоянно надо что-то дополнять, менять скрины и т.п. Тут из ниоткуда выныривают бородатые дядьки и уверяют, что есть волшебный способ сделать всю вашу разработку по крутому (все эти ваши модные TDD/BDD/и т.д.), с помощью которого весь ваш код пишется сам, сам себя тестирует и документирует.

И вот, движимые ленью и верой в светлое будущее, программисты 1С решили реализовать этот концепт. Я буду показывать как это работает на примере инструмента Vanessa-Automation.

Забыл сказать (на самом деле, конечно не забыл, а сознательно оттягивал :-) — этот инструмент для 1С. Моя цель рассказать вам об инструменте, дополняющем 1С. Да, такие инструменты есть, даже больше — они выложены на github и активно развиваются. Позволю себе небольшое отступление. Многие знают, что сейчас есть много фреймворков для JavaScript, то есть живут настоящим, но почему-то многие в отношения 1С живут прошлым. Я хочу показать, что мир 1С развивается. Есть нормальные Open Source инструменты для 1С.

Итак. Одним пользователем нужна документация в виде текстовой документации (HTML, Markdown), другим в виде скринкаста, третьим в виде автовидео. И для всех «хотелок» есть решение в одном флаконе.

Генерация HTML и Markdown

Для того, чтобы генерировать HTML и текст в markdown, необходимо установить утилиту для снятия скриншотов (IrfanView, nircmd или подобное). Далее включаем данную настройку. (Сервис — Автоинструкции. Ищем раздел HTML и Markdown). Настраиваем папку, в которую будем сохранять автоматически сгенерированные автоинструкции. Пример:

autoinstruction

Запускаем нашу feature, если не было ошибок — сохраняется автоинструкция:

autoinstruction

Генерация видео

Без всякого труда мы можем сделать видео. Для этого необходимо настроить окружение для записи видео по инструкции и наслаждаться процессом. Не надо нарезать видео, склеивать и накладывать звук. Это всё делается автоматически.

autoinstruction

Каждое видео идёт с субтитрами. Можем поставить на паузу и почитать. Не сложно. Делаем максимально удобно для пользователя.

Если скучно читать, можно сделать озвучку голосом. Для этого устанавливаем библиотеку и запускаем наш сценарий. Через пару минут видео с озвучкой будет готово.

autoinstruction

Есть функция накладывания водяного знака, подсветки активного элемента на экране (эта фича работает для версий платформы 8.3.11 и ниже) (да, пользователи любят когда им всё разжевывают) и движения мышки туда, где происходит “Экшн”.

Гибкая кастомизация видео

Всё начинается со сценария и на нём же заканчивается. Именно так.

Можно настроить ваш CI сервер так, чтобы он генерировал не для всех сценариев документацию, а только для необходимых. Для этого в сценариях, предназначенных для автодоков добавляем тег, например @tree (далее будет работать отбор по этому тегу) и… наслаждаемся процессом.

По идее, когда вы пишете большой сценарий, вам всё равно придётся его делить на логические блоки, делать в нём комментарии (что вот этот супер важный флажок надо установить, иначе ничего работать не будет).
Идея автовидео в том, чтобы эти комментарии стали частью “истории”, которую мы показываем пользователю.

Для этого, например, можно изменить текст шага, сделать его более “человечным”, так как мы пишем сценарий на Gherkin, но для пользователей не всегда удобно слушать бизнес язык и поэтому есть директива #[autodoc.text]. Для меня это одна из важных фич Vanessa-Automation, так как пользователи разные по компетенции — стараюсь писать максимально понятно.

Некоторые шаги в сценарии хочется объединить в один (часто это касается каких-то очевидных операций). Например, добавить данные в табличную часть. Или когда один шаг бизнес сценария (заполнение шапки какого-нибудь документа) состоит из десятков действий. Тогда используется директива #[autodoc.groupsteps]. Хочу заметить, что директивы автодоков работают как для видео, так и для html и markdown инструкций. Остальные директивы описаны во встроенной справке проекта.

Когда мы смотрим сгенерированное видео, то там изначально будет только видео без звука. Мелькают какие-то скриншоты и текст, становится скучно и перестаёшь вникать. Да и грустно как-то без музыки. Фоном к видео можно поставить “лёгкую” музыку (или какую-нибудь тяжесть, любой каприз), чтобы веселее читалось. Процесс изучения пойдёт быстрее :) Опыт создания таких видео показал, что когда фоном играет музыка, то видео воспринимается проще. Без музыки — сухо как-то.

При записи видео не отображается курсор и не видно куда мы нажимаем, на какой элемент. Для этого есть настройка отображения курсора и подсветка элемента формы.

Все вышеперечисленные настройки показаны в видео и в сценарии, которые сгенерировались после успешного прохождения сценария.

Автообновление видео на ютуб

Для ночной сборки (ну мы же не собираемся заливать ролики на ютуб руками, правда?) можно реализовать автоматическое выкладывание видео на youtube канал.
Натравливаем на папку с нашими feature скрипт, который определяет, что файл изменился, затем делает сборку видео и заливает его куда надо.
Для автовидео я сделал простое приложение на Golang (почему на нём? Изучал go и появилась реальная задача, где можно его применить. Если было бы что-то другое, было бы на чём-то другом), которое отправляет готовый ролик на youtube канал. Это, конечно, просто пример. Видео можно добавлять в ваши Wiki или базу знаний и т.п.

Заключение

Привожу вам тестовый сценарий, по которому сгенерировано видео.
Пример, feature.

#language: ru

@tree

Функциональность: Некоторые возможности автоинструкций.

Контекст: 
    Дано Я запускаю сценарий открытия TestClient или подключаю уже существующий

#[autodoc.ignore.scenarioslide]
Сценарий: Новые возможности.

    #[autodoc.text] Начнём с того, что у шага можно указывать произвольный текст.
    И     В командном интерфейсе я выбираю "Основная" "Приветы Для Habr"

    И текст субтитров "Тут можно писать текст какой нам хочется! А не - в командном интерфейсе я выбираю..."

    И обратите внимание "А тут могла быть ваша реклама :-)"

    #[autodoc.groupsteps]
    Выполняется группа шагов. Но в видео она работает как один шаг, с одним текстом для всей группы.
            И     я нажимаю на кнопку "Создать"
            И     в поле с именем "Наименование" я ввожу текст "Привет Habr"
            И     в поле "Число" я ввожу текст "14,00"
            И     в поле "Дата" я ввожу текст "14.08.2018"
            И     в поле с именем "Текст" я ввожу текст "Передаю всем привет!"
            И     я нажимаю на кнопку "Записать и закрыть"

    И обратите внимание "Спасибо за внимание."

Краткая инструкция как настраивать автодокументирование лежит тут.
Инструкция как настраивать автодокументацию.

Спасибо за потраченное время. Как бы дико это не звучало, но 1С сообщество шагнуло вперёд (и в чём-то даже кого-то обогнало), появились opensource инструменты тестирования, CI — интеграция. 1С делает для своих продуктов API — это и позволяет энтузиастам автоматизировать участки, до которых 1С пока не дошла, но потихоньку идёт. А скоро нас ожидает новый дивный мир :) Я в ожидании, когда мы сможем без критических ошибок творить в EDT.

P.S.

Поддержите проект добрым словом, лайком, критикой (чат проекта в Gitter находится здесь) авторам это всегда приятно.

Ссылки

  • Вебинар
  • Доклад на infostart event 2015
  • Доклад на infostart event 2016 и ответы на вопросы

Разбираемся, что такое mock-сервисы и зачем они нужны.
На основании реального веб-сервиса создадим сервис-заглушку в SoupUI, посмотрим как его запускать из консоли и напишем сценарий в Vanessa-ADD.

Приложения 1С редко работают в изоляции — чаще всего они интегрируются с различными сервисами, которые могут быть расположены как в локальной сети предприятия, так и на удаленных серверах. И иногда встает вопрос тестирования этой интеграции в рамках общего сценарного тестирования. Посмотрим, с какими проблемами при этом можно столкнуться и при чем тут вообще эти самые «заглушки».

Содержание

С чем будем работать

Проблемы тестирования интеграции

Заглушки

Запускаем моки через SoapUI

Шаг 0. Готовим окружение

Шаг 1. Импортируем WSDL-схему

Шаг 2. Запускаем mock-сервис

Шаг 3. Настраиваем ответ

Запускаем проект SoapUI из консоли

Подключаем Ванессу

Готовим данные

Запускаем моки

Ждем запуска моков

Останавливаем мок-сервис

Результат

С чем будем работать

Давайте предположим, что мы ведем разработку функционала, который обращается к удаленному веб-сервису, получает из него данные и запускает в базе 1С механизм расчетов. Не важно какие именно данные возвращает сервис: важно, то, что полученный результат прямо влияет на работу наших алгоритмов.

Предположим, что веб-сервис отвечает на запросы с ощутимым задержками, потому что обращается в нагруженную базу данных в реальном времени. При этом он расположен в VPN-сети и физическое его нахождение нам неизвестно: сервер может находиться в соседнем здании, может быть поднят в облаке или физически располагаться в зарубежном дата-центре.

В целом, используется стандартная схема: 1С обращается к сервису, который опубликован на веб-сервере; веб-сервис обращается к базе данных и возвращает результат.

Мы уже используем сценарное тестирование и хотим, чтобы наши тесты работали стабильно и не зависели от доступности удаленного сервера, загруженности серверного оборудования или от неполадок в сети. Поскольку прогон тестов — процесс не однократный, а регулярный (и в целом автоматический), мы хотим сделать так, чтобы в момент запуска тестов веб-сервис был всегда доступен и работал максимально быстро, стабильно и предсказуемо.

Обратите внимание, что мы не собираемся проверять работоспособность веб-сервиса и заниматься его тестированием — этим занимаются разработчики веб-сервиса. Нам нужно обеспечить его бесперебойную работу на момент проведения тестирования. 

Получается, нам нужна такая «локальная копия» удаленного сервиса, которую можно настроить нужным нам образом, а своему приложению сказать: «Во время тестирования не ходи на удаленный сервер, а ходи на localhost».

Именно такую задачу — подменять реальный объект или сервис его упрощенной реализацией — и помогают решить так называемые «mock-service» (от англ. mock object: «объект-имитация» или «подставка»). Еще их называют просто «моки» или «заглушки». 

Проблемы тестирования интеграции

Вообще, для использования заглушек веб-сервисов может быть много причин. Например, следующих:

  1. Тесты замедляются. Если поставщик сервиса находится далеко, сетевая среда нестабильная и при вызове сервиса происходит задержка, то время прохождения тестов может значительно увеличиваться.

  2. Тесты работают нестабильно. Веб-сервисы могут быть не всегда доступны из-за технических обновлений, подвержены перегрузкам или ошибкам сетевых протоколов.

  3. Тесты покрывают не все возможные варианты ответов сервиса. Не всегда есть возможность получить некоторые ответы от реального веб-сервиса и промоделировать все рабочие ситуации — следовательно, максимально полно протестировать взаимодействие.

  4. Доступ к рабочим веб-сервисам ограничен. Часто встречается ситуация, когда рабочие сервисы недоступны из тестового контура, в котором программисты ведут разработку. Это делает как по причине безопасности, так и для того, чтобы не подвергать лишней нагрузке рабочее окружение.

  5. Из-за ошибок разработчика могут быть подвергнуты риску реальные данные. Например, есть веб-сервисы, которые позволяют добавлять или изменять данные в удаленной системе. Ошибка при вызове такого сервиса может привести к потере данных. 

Давайте теперь поближе рассмотрим мок-объекты.

Заглушки

«Мок» в программировании — это объект-заглушка, реализующий заданный аспект моделируемого программного окружения.

Существует несколько видов объектов, которые позволяют симулировать поведение реальных объектов во время тестирования: 

  1. Dummy — пустые объекты, которые передаются в вызываемые методы, но не используются. Предназначены лишь для заполнения параметров методов.
  2. Fake — объекты, которые имеют реализации, но в таком виде, который делает их неподходящими для использования в рабочей ситуации.
  3. Stub —  предоставляют заранее заготовленные ответы на вызовы во время теста и не отвечают ни на какие другие вызовы, которые не требуются в тесте. 
  4. Mock — объекты, которые заменяют реальный объект в условиях теста и позволяют проверять вызовы своих методов. Содержат заранее подготовленные описания вызовов, которые они ожидают получить. Применяются в основном для тестирования поведения пользователя.

Относительно веб-сервисов можно сказать, что мок-сервис позволяет переопределить реальный сервис и подставить вместо него упрощенную реализацию, которая работает нужным разработчику образом и дает доступ к собственным данным и настройкам. Мы как бы создаем у себя аналог удаленного веб-сервиса, который отвечает на вызовы нашего приложения.

Правда, тут возникают две сложности.

Во-первых, моки надо создать. Надо устанавливать дополнительный софт, описывать логику, загружать нужные данные в макет ответа. Не то чтобы это сложно, но это требует усилий и времени. Может быть, кому-то будет проще сохранить результат вызова в файл и при тестировании обращаться не к заглушке, а к файлу. В небольших проектах с малым количеством тестов такой подход вполне оправдан.

Во-вторых, веб-сервис может поменяться. Например, программист написал рабочую логику для заглушки, а через какое-то время веб-сервис стал работать по-другому (а разработчика, как часто бывает, об этом никто не уведомил). О том, что в работе веб-сервиса что-то поменялось он узнал, когда выкатил обновление на рабочую базу.

Решение простое — для сервиса, который может быть подвержен изменениям нужно сделать набор дымовых тестов (smoke-тесты). Дымовые тесты проверяют, что основные методы сервиса не изменились и обращение к ним не вызывает ошибок.

Мы рассмотрим способ создания мок-сервисов в программе SoapUI, которая является достаточно популярной в мире тестирования. Первоначальная схема работы примет такой вид:

Тестируемое приложение 1С больше не будет обращаться к удаленному сервису, а получит тот ответ, который мы заранее подготовили и опубликовали из SoapUI.

Запускаем моки через SoapUI
 

Шаг 0. Готовим окружение

Программа SoapUI (подробнее о ней можно прочитать в публикации Использование SoapUi для работы с веб-сервисами. Часть1) позволяет на основании WSDL-схемы сервиса создать Mock-service и опубликовать его на собственном веб-сервере, который умеет запускать.

SoapUI можно получить на официальном сайте компании SmartBear. Для наших целей достаточно бесплатной 32х-разрядной OpenSource версии — ее нужно скачать и установить.

В конфигурации 1С, которую мы дорабатываем, есть обработка Расчет трафика — она обращается к веб-сервису CalculateService и вызывает метод CalculateTraffic, в который передает несколько параметров, вроде ID, StoreID и других. Рассчитанный веб-сервисом результат записывается в регистр и запускает внутренний механизм расчетов (что он именно делает, в рамках статьи значения не имеет).

Мы дорабатываем механизм расчетов и во время проведения тестов хотим вместо ответов удаленного сервиса подставлять свои заранее заготовленные варианты.

Сервис, к которому мы обращаемся, расположен по адресу http://localhost/DEMO/ws/CalculateService.1cws?wsdl 

! Поскольку я воспроизвожу пример для статьи на своем компьютере, в адресе вы видите «localhost». Но подразумевается, что в рабочей ситуации мы будем обращаться к рабочему сервису на рабочем сервере.

Для начала запустим браузер и убедимся, что веб-сервис доступен:

Дальше добавим веб-сервис в SoapUI и сделаем для него заглушку.

Шаг 1. Импортируем WSDL-схему

Запустим SoapUI и создадим новый проект.

Импортируем в проект описание нашего веб-сервиса: File -> New Soap Project:

Если при импорте возникает ошибка, дело скорее всего в авторизации: нужно ввести имя пользователя и пароль.

 

Забегая немного вперед, добавлю, что в SoapUI есть удобный способ сохранить данные авторизации: нужно заполнить параметры Username и Password  на вкладке Auth, которая станет доступна в редакторе запроса к сервису:

В дереве проекта появился веб-сервис CalculateService.

Теперь мы можем заполнить параметры и обратиться к сервису:

Шаг 2. Запускаем mock-сервис

Добавляем метод CalculateTraffic в новый мок-сервис: контекстное меню -> Generate Soap MOCK Service:

Задаем параметры MockService:

Обратите внимание на порт, на котором будет доступен сервис и на путь к нему.

Жмем ОК и заполняем имя мок-сервиса:

Открывается окно, из которого можно запустить мок-сервис и указать его настройки:

Зайдем в настройки и укажем, что мок будет подниматься на локальном интерфейсе localhost:

Жмем на Запуск. Если запуск пройдет успешно, станет доступна кнопка Открыть WSDL-схему в браузере:

Проверяем — должна открыться WSDL-схема по адресу http://localhost:8090/MockCalculateService?WSDL.

Теперь имеем:

  • реальный сервис на http://localhost/DEMO/ws/CalculateService.1cws?wsdl 
  • mock-реализацию на http://localhost:8090/MockCalculateService?WSDL

В дереве проекта появился мок-сервис MoskCalculateService с методом CalculateTraffic:

Шаг 3. Настраиваем ответ

Открываем редактор ответа Response 1. В этой форме можно определить данные, которые будет возвращать наш мок-сервис.

Здесь можно заполнить значения полей ответа, подставить любую валидную XML или написать скрипт на Groovy, который будет определять содержание ответа в зависимости от запроса к сервису. Например, мы можем в получать в скрипте значения переданных параметров, считывать файлы с диска и возвращать их клиенту с результатом вызова, при это логгируя все входящие запросы.

Я покажу простой вариант: получаем из входящего запроса значения параметров StoreID и Offset, сам запрос сохраняем на диск, а клиенту возвращаем значение, рассчитанное по формуле Offset*24 + StoreID:

Сохраняем проект командной Project -> Save project as на диск — этот файл нам понадобится дальше.

Я сохранил проект в d:BASE1CDEMOMockCalculateService.xml

Запускаем проект SoapUI из консоли

Часть дела сделана — наш «заглушечный» веб-сервис запущен и к нему уже можно обращаться из 1С, но поскольку наша главная цель — автоматизировать его запуск, идем дальше.

Для того чтобы поднять мок-сервис из командной строки (а, следовательно, иметь возможность сделать это программным образом), нужно выполнить файл mockservicerunner.bat из директории C:Program Files (x86)SmartBearSoapUI-5.5.0in.

Подробное описание параметров запуска mockservicerunner.bat можно найти на странице сайте SoapUI или в консоли:

Главный обязательный параметр — путь к xml-файлу с проектом из SoapUI. Программа считывает настройки проекта из файла и по умолчанию поднимает все мок-сервисы, которые в нем описаны.

Открываем консоль в папке c:Program Files (x86)SmartBearSoapUI-5.5.0in и запускам наш сервис командной:

c:Program Files (x86)SmartBearSoapUI-5.5.0in>mockservicerunner.bat d:BASE1CDEMOMockCalculateService.xml

В консоли наблюдаем, что MockService started on port 8090:

Подробный лог запуска записывается в c:Program Files (x86)SmartBearSoapUI-5.5.0insoapui.log, а ошибки можно найти в файлах soapui-errors.log и errors.log

 Если возникает ошибка ERROR [errorlog] java.lang.ClassNotFoundException

Проверим еще раз, что WSDL-схема доступна по адресу http://localhost:8090/MockCalculateService?WSDL.

Теперь мы умеем запускать заглушки с помощью командной строки. Пойдем дальше и попробуем прикрутить все это дело к Ванессе.

Подключаем Ванессу

Поскольку на Инфостарте уже есть замечательные статьи про тестирование и применение Ванессы на практике, сразу перехожу к делу.

План такой: при запуске теста будем поднимать наш мок-сервис, проверять его доступность, заполнять поля на форме и нажатие на кнопку Рассчитать выызвать его метод CalculateTraffic.

 Обращение к веб-сервису из 1С

Определим примерный набросок сценария:

  1. Поднимаем сервис из файла;

  2. Проверяем, что сервис доступен;

  3. Заполняем параметры на форме обработки;

  4. Выполняем вызов процедуры, которая обращается к сервису;

  5. Проверяем результат расчета;

  6. Завершаем работу мок-сервиса.

Создадим файл ПроверкаСервиса.feature (я взял за основу одну из своих существующих фич) и загрузим его в Ванессу:

Дальше мы будем заниматься реализацией шагов. Итоговый текст фичи будет приведен в конце.

Подготовка данных

Пара слов о том, как будем хранить настройки для обращений к веб-сервисам. 

Полный путь к файлу mockservicerunner.bat записываем в константу ПутьКЗапускателюЗаглушекВебСервисов, а для описаний веб-сервисов добавим справочник ВебСервисы:

При выполнении сценария каждый раз будем заполнять константу:

И добавлять новый элемент в справочник Веб-сервисы:

Делаем это потому, что другой тест или пользователь может перезаписать или удалить наши значения — то есть нет гарантии, что во время тесты в них будут заполнены правильном образом.

Элемент справочника будем загружать из макета. Так удобнее, чем генерировать заполнение полей через кнопко-нажималку.

Чтобы создать данные для макета идем в Внешние инструменты -> Генератор макетов данных и в колонке «Данные для выгрузки» выбираем наш справочник ВебСервисы:

В сгенерированной Ванессой обработке (этап генерации обработки я опускаю, подразумевая, что делать это мы умеем) нужно добавить макет и скопировать туда содержимое табличного документа:

Запускаем моки

Для запуска моков нам нужно выполнить батник mockservicerunner.bat с параметром d:BASE1CDEMOMockCalculateService.xml.

Посмотрим, можно ли это сделать стандартным шагом. Идем в Библиотеки -> Добавить известный шаг и поищем по строке «выполн»:

Видим, что в стандартной библиотеке Ванессы есть шаг Я Запускаю команду с параметром, который позволяет выполнить команду систему с произвольным набором параметров.

Можно было бы воспользоваться этим шагом, но, как говорится — есть нюансы.

Во-первых, придется каждый раз писать что-то вроде «Я запускаю команду ‘c:Program Files (x86)SmartBearSoapUI-5.5.0inmockservicerunner.bat’ с параметром «d:BASE1CDEMOMyServiceProject.xml» — это длинно и неудобно.

Во-вторых, библиотечный шаг выполняется только в синхронном режиме — то есть вызывающий процесс (в нашем случае это 1С)  будет ожидать завершения работы вызываемой команды, чтобы продолжить свое выполнение. Это значит, что 1С запустит мок-сервис и будет висеть, пока он будет запущен. Не совсем то, что нам нужно.

Вот так реализован шаг Я запускаю команду в файле из поставки librariesПлагиныstep_definitionsФича_УправлениеПриложениями.epf:

А вот реализация функции Выполнить команду ОС без показа черного окна в одной из главных обработок Ванессы bddRunner.epf:

Видно, что вызывается метод Run() объекта WScript.Shell и параметр ЖдатьОкончания вроде бы есть, но передать значения в него нельзя. Баг это или фича, честно говоря, я не понял 🙂 Удобнее всего для запуска моков создать свой шаг, в котором можно принудительно указать параметр метода Run().

Реализуем шаг Я запускаю моки из файла:

Шаг «Я Запускаю моки из файла»

&НаКлиенте
Процедура ЯЗапускаюМокиИзФайла(Парам01) Экспорт

ЯЗапускаюМокиИзФайлаНаСервере(Парам01)

КонецПроцедуры

&НаСервере
Процедура ЯЗапускаюМокиИзФайлаНаСервере(ФайлСОписаниемМокСервисов)

ПутьКЗапускателю = Константы.ПутьКЗапускателюЗаглушекВебСервисов.Получить();

Если НЕ ЗначениеЗаполнено(ПутьКЗапускателю) Тогда
ВызватьИсключение "Не заполнена константа ПутьКЗапускателюЗаглушекВебСервисов";
КонецЕсли;

ТекстКоманды = """" + ПутьКЗапускателю + """" """" + ФайлСОписаниемМокСервисов + """";
ИмяВременногоФайлаКоманды = ПолучитьИмяВременногоФайла("bat");
ЗТ = Новый ЗаписьТекста(ИмяВременногоФайлаКоманды, КодировкаТекста.ANSI);
ЗТ.Закрыть();
ЗТ = Новый ЗаписьТекста(ИмяВременногоФайлаКоманды, КодировкаТекста.UTF8, , Истина);
ЗТ.ЗаписатьСтроку("chcp 65001");
ЗТ.ЗаписатьСтроку(ТекстКоманды);
ЗТ.Закрыть();

WshShell = Новый COMОбъект("WScript.Shell");
Рез = WshShell.Run("""" + ИмяВременногоФайлаКоманды + """", 0, 0);
WshShell = Неопределено;

КонецПроцедуры

Ожидание запуска моков

Чтобы понять, что мок-сервис поднялся корректно, нужно к нему обратится. Если он недоступен — подождать немного и попробовать обратиться еще — и так несколько раз. А если он и после 10-й попытки недоступен — значит, что-то пошло не так и тест провален.

Чтобы сделать цикличную проверку доступности сервисов, используем функцию ПодключитьОбработчикОжидания и функцию Ванессы ПродолжитьВыполнениеШагов:

Шаг «Я Ожидаю поднятия мок-сервиса»

&НаКлиенте
Процедура ЯОжидаюПоднятиеМок_сервиса(Парам01) Экспорт

КонтекстСохраняемый.Вставить("МокСервис", Парам01);
КонтекстСохраняемый.Вставить("НомерПопытки", 1);

Ванесса.ЗапретитьВыполнениеШагов();

ПодключитьОбработчикОжидания("ПроверитьДоступностьМокСервисов", 1);

КонецПроцедуры

&НаКлиенте
Процедура ПроверитьДоступностьМокСервисов() Экспорт

ШагУпал = Ложь;

Если КонтекстСохраняемый.НомерПопытки <= 10 Тогда

КонтекстСохраняемый.НомерПопытки = КонтекстСохраняемый.НомерПопытки + 1;

Если ВебСервисДоступенНаСервере(КонтекстСохраняемый.МокСервис) Тогда
ОтключитьОбработчикОжидания("ПроверитьДоступностьМокСервисов");
Ванесса.ПродолжитьВыполнениеШагов();
КонецЕсли;

Иначе

ОтключитьОбработчикОжидания("ПроверитьДоступностьМокСервисов");
ШагУпал = Истина;
Ванесса.ПродолжитьВыполнениеШагов(ШагУпал);

КонецЕсли;

КонецПроцедуры

Остановка мок-сервисов

После того как тестируемая программа выполнила обращение к мок-сервису, нужно остановить его работу.

При использовании графического интерфейса SoapUI все просто: для остановки мок-сервиса нужно на красную кнопку Stop the mock service.

При запуске через командную консоль тоже проблем нет — достаточно нажать сочетание клавиш Ctrl+C (или Ctrl+Z).

А в случае, когда мы запускаем процесс через WScript.Shell, все несколько сложнее —  штатного способа остановить выполнение его нет.

Например, вот вопрос в официальном сообществе SoapUI, который так и остался без ответа: Stop mock service using mockServiceRunner.

Вопрос достаточно распространенный и разработчики предлагают разные решения:

  1. Запоминать PID (идентификатор) процесса и «пристреливать» его после завершения теста. Пример для Linux: Sample script to start/stop soapui mockservicerunner with nohup 

  2. Сделать обертку над SoapUI, которая после запуска веб-сервиса будет пытаться прочитать внешний файл-флаг. Если файла нет — все ок, работаем дальше. Если файл появился — завершаем работу сервиса. Проект на гитхабе: Wrapper to start SoapUI MockService Runner

  3. Написать собственное приложение или скрипт, который будет парсить файл проекта SoapUI, извлекать из него описание сервиса и поднимать собственный веб-сервис.

Пока в публичном доступе готового решения для Windows не найдено, остановимся на простом варианте — будем завершать работу процесса java.exe командой

 taskkill /FI "IMAGENAME eq java.exe"  /F 

это сработает, если больше нет запущенных процессов java.exe (точнее говоря, они все будут завершены в момент выполнения этой команды).

Или можно использовать более продвинутый вариант:

powershell (Get-WmiObject Win32_Process  -FILTER "Commandline like '%MyServiceProject.xml%'").Terminate()

скрипт завершит работы всех процессов, у которых в параметрах запуска есть название нашего файла с проектом: «MyServiceProject.xml».

Коллеги, если у кого есть более изящное решение, сообщите 🙂

Результат

Теперь мы можем составить полный текст нашего сценария «Расчет трафика»:

#language: ru

Функционал: Расчет трафика

Как программист 1С
Я хочу проверить работу механизма расчета трафика
Чтобы убедиться, что доработки его не поломали

Контекст:

Дано Я запускаю сценарий открытия TestClient или подключаю уже существующий
И Я удаляю все элементы справочника "ВебСервисы"
И Я устанавливаю значение константы "ПутьКЗапускателюЗаглушекВебСервисов" равным "c:Program Files (x86)SmartBearSoapUI-5.5.0inmockservicerunner.bat"
И Я создаю fixtures по макету "ТестовоеОкружение"

Сценарий: Расчет трафика и выполнение расчетов
Когда Я запускаю моки из файла "d:BASE1CDEMOMockCalculateService.xml"
И Я ожидаю поднятие мок-сервиса "MockCalculateService"
Тогда В командном интерфейсе я выбираю 'Тестирование' 'Расчет трафика'
Когда открылось окно 'Расчет траффка'
И в поле 'ID' я ввожу текст '10'
И в поле 'Store ID' я ввожу текст '5'
И в поле 'Date' я ввожу текст '2023-02-01'
И в поле 'Offset' я ввожу текст '2'
И в поле 'Logistic ID' я ввожу текст '2'
И в поле 'Main status' я ввожу текст 'true'
И я нажимаю на кнопку 'Рассчитать'
Тогда элемент формы с именем "Результат" стал равен '1 253'
И я выполняю команду "taskkill" с параметрами '/FI "IMAGENAME eq java.exe" /F'
И Я закрываю окно 'Расчет трафика'

Результатом работы служит пройденный без ошибок сценарий: 

Мы решили поставленную задачу в минимальном варианте, на основании которого можно реализовать уже более сложную логику.

  1. #language: ru

  2. @tree

  3. Функционал: Реализация товаров

  4. Контекст:

  5. И в таблице клиентов тестирования я активизирую строку ‘ВебКлиент’

  6. Дано Я запускаю сценарий открытия TestClient или подключаю уже существующий

  7. И я активизирую браузер и устанавливаю полноэкранный режим

  8. И Пауза 7

  9. Сценарий: Создание и заполнение документа Реализация товаров

  10. * Привет одинэс! Подскажи пожалуйста, как оформить продажу товаров?

  11. @YandexTTS: voice=filipp; speed=1.2

  12. И Пауза 1

  13. * Привет! Давай покажу. Продажа товаров осуществляется документом Реализация товаров.

  14. И Пауза 1

  15. * Откроем раздел Продажи, и выберем «Реализация (акты, накладные)»

  16. И я рисую рамку вокруг элемента панели разделов «Продажи» в браузере

  17. |’color’|’red’|

  18. |’size’|’3’|

  19. |’timeout’|’3000’|

  20. И Пауза 2

  21. И В командном интерфейсе я выбираю ‘Продажи’ ‘Реализация (акты, накладные)’

  22. Тогда открылось окно ‘Реализация (акты, накладные)’

  23. * Для создания нового документа нажимаем эту кнопку, или нажимаем на клавиатуре клавишу Инсерт. И выбираем нужный вид операции.

  24. И я показываю подсказку «Тут создаётся новый документ» EnjoyHint у элемента «ПодменюСоздать» в браузере

  25. |’shape’|’rect’|

  26. |’timeout’|’5000’|

  27. И Пауза 5

  28. И я нажимаю на кнопку с именем ‘ФормаСоздатьРеализацияТовары’

  29. * Откроется форма нового документа Реализация

  30. Тогда открылось окно ‘Реализация товаров: Накладная (создание)’

  31. * Организация заполняется автоматически значением по умолчанию

  32. И я рисую рамку вокруг нескольких элементов в браузере

  33. |’elem’|’Организация\#title_div’|

  34. |’elem’|’Организация’|

  35. |’color’|’red’|

  36. |’size’|’3’|

  37. |’timeout’|’5000’|

  38. И Пауза 5

  39. * Указываем контраг+ента

  40. И из выпадающего списка с именем «Контрагент» я выбираю по строке ‘Arnadog’

  41. * Я смотрю что поле Договор заполнилось автоматически, откуда взялось это значение?

  42. @YandexTTS: voice=filipp; speed=1.2

  43. И Пауза 1

  44. * Если у контраг+ента есть всего один договор вида «С покупателем», то он укажется автоматически

  45. И Пауза 3

  46. И я рисую стрелку от «Контрагент» к «ДоговорКонтрагента» в браузере

  47. |’color’|’red’|

  48. |’size’|’3’|

  49. |’startSocket’|’right’|

  50. |’endSocket’|’right’|

  51. |’startSocketGravity’|’ 160, -80’|

  52. |’endSocketGravity’|’ 160, 80’|

  53. |’dropShadow’|’true’|

  54. |’middleLabel’|»|

  55. |’timeout’|’2000’|

  56. И Пауза 2

  57. * Указываем склад, с которого будет происходить отгрузка товаров, а также подразделение

  58. И из выпадающего списка с именем «Склад» я выбираю точное значение ‘Основной склад’

  59. И Пауза 1

  60. И из выпадающего списка с именем «ПодразделениеОрганизации» я выбираю точное значение ‘Основное подразделение’

  61. * Переходим в табличную часть Товары, добавляем новую строку и указываем проданную номенклатуру

  62. И Пауза 1

  63. И в таблице «Товары» я нажимаю на кнопку с именем ‘ТоварыДобавить’

  64. И Пауза 1

  65. И в таблице «Товары» из выпадающего списка с именем «ТоварыНоменклатура» я выбираю по строке ‘Гель для душа’

  66. И в таблице «Товары» я завершаю редактирование строки

  67. * Автоматически заполнилась цена, ставка НДС и счета учета

  68. И я рисую рамку вокруг ячеек таблицы «Товары» в браузере

  69. |’rowNumber’|’0’|

  70. |’rowNumberEnd’|’1’|

  71. |’columnTitle’|’Цена’|

  72. |’color’|’red’|

  73. |’size’|’3’|

  74. |’timeout’|’4000’|

  75. И Пауза 1

  76. И я рисую рамку вокруг ячеек таблицы «Товары» в браузере

  77. |’rowNumber’|’0’|

  78. |’rowNumberEnd’|’1’|

  79. |’columnTitle’|’% НДС’|

  80. |’color’|’red’|

  81. |’size’|’3’|

  82. |’timeout’|’4000’|

  83. И Пауза 1

  84. И я рисую рамку вокруг ячеек таблицы «Товары» в браузере

  85. |’rowNumber’|’0’|

  86. |’rowNumberEnd’|’1’|

  87. |’columnTitle’|’Счета учета’|

  88. |’color’|’red’|

  89. |’size’|’3’|

  90. |’timeout’|’4000’|

  91. И Пауза 4

  92. * Указываем количество, при этом рассчитаются суммы

  93. И в таблице «Товары» в поле с именем ‘ТоварыКоличество’ я ввожу текст ‘4,000’

  94. И в таблице «Товары» я завершаю редактирование строки

  95. И я рисую рамку вокруг ячеек таблицы «Товары» в браузере

  96. |’rowNumber’|’0’|

  97. |’rowNumberEnd’|’1’|

  98. |’columnTitle’|’Сумма’|

  99. |’color’|’red’|

  100. |’size’|’3’|

  101. |’timeout’|’5000’|

  102. И я рисую рамку вокруг ячеек таблицы «Товары» в браузере

  103. |’rowNumber’|’0’|

  104. |’rowNumberEnd’|’1’|

  105. |’columnTitle’|’НДС’|

  106. |’columnTitleEnd’|’Всего’|

  107. |’color’|’red’|

  108. |’size’|’3’|

  109. |’timeout’|’5000’|

  110. И Пауза 5

  111. * Добавляем еще одну строку и выполняем те же действия

  112. И в таблице «Товары» я нажимаю на кнопку с именем ‘ТоварыДобавить’

  113. И в таблице «Товары» из выпадающего списка с именем «ТоварыНоменклатура» я выбираю по строке ‘Ополаскиватель’

  114. И в таблице «Товары» в поле с именем ‘ТоварыКоличество’ я ввожу текст ‘7,000’

  115. И в таблице «Товары» я завершаю редактирование строки

  116. * Проводим документ

  117. И я нажимаю на кнопку с именем ‘ФормаПровести’

  118. Тогда открылось окно ‘Реализация товаров: Накладная * от *’

  119. * Налоговую накладную формируем непосредственно из формы документа реализации. Указываем номер налоговой накладной и нажимаем кнопку «Оформить».

  120. И я показываю подсказку «Формирование налоговой накладной» EnjoyHint у нескольких элементов в браузере

  121. |’elem’|’ДекорацияСчетФактура1’|

  122. |’elem’|’ВыписатьСчетФактуру’|

  123. |’shape’|’rect’|

  124. |’timeout’|’5000’|

  125. И Пауза 5

  126. И в поле с именем ‘НомерНалоговойНакладной’ я ввожу текст ‘AAE001480024’

  127. И я нажимаю на кнопку с именем ‘ВыписатьСчетФактуру’

  128. * Откроем движения документа и посмотрим на сформированные проводки.

  129. И я нажимаю на кнопку с именем ‘ФормаОбщаяКомандаПоказатьДвиженияДокумента’

  130. Тогда открылось окно ‘Движения документа: Реализация (акт, накладная) * от *’

  131. И Пауза 2

  132. * Видим проводки списания товаров с отнесением их на себестоимость продаж

  133. И я показываю подсказку «Дт 711 Кт 217» EnjoyHint у области таблицы «Хозрасчетный» в браузере

  134. |’rowNumber’|’1’|

  135. |’rowNumberEnd’|’2’|

  136. |’shape’|’rect’|

  137. |’timeout’|’5000’|

  138. И Пауза 5

  139. * Формирование дебиторской задолженности, в корреспонденции с увеличением доходов от продажи

  140. И я показываю подсказку «Дт 221 Кт 611» EnjoyHint у области таблицы «Хозрасчетный» в браузере

  141. |’rowNumber’|’3’|

  142. |’rowNumberEnd’|’4’|

  143. |’shape’|’rect’|

  144. |’timeout’|’5000’|

  145. И Пауза 5

  146. * А также, с увеличением нашей задолженности по НДС перед бюджетом.

  147. И я показываю подсказку «Дт 221 Кт 534.4» EnjoyHint у области таблицы «Хозрасчетный» в браузере

  148. |’rowNumber’|’5’|

  149. |’shape’|’rect’|

  150. |’timeout’|’5000’|

  151. И Пауза 6

  152. И Я закрываю окно ‘Движения документа: Реализация (акт, накладная) * от *’

  153. Тогда открылось окно ‘Реализация товаров: Накладная * от *’

  154. * Как мне вывести на печать налоговую накладную, чтобы отдать клиенту?

  155. @YandexTTS: voice=filipp; speed=1.2

  156. И Пауза 1

  157. * Документ Реализация товаров содержит несколько печатных форм. Они доступны в подменю Печать.

  158. И Пауза 4

  159. И я показываю подсказку «Печатные формы документа здесь» EnjoyHint у элемента «ГруппаПечать» в браузере

  160. |’shape’|’rect’|

  161. |’timeout’|’5000’|

  162. И Пауза 5

  163. * Выберем печатную форму «Налоговая накладная»

  164. И я нажимаю на кнопку с именем ‘ГруппаПечатьГруппаПечатьКомандаПечати0’

  165. Тогда открылось окно ‘Налоговая накладная выданная * от *’

  166. * Документ готов для вывода на печать. На этом мы завершили оформление продажи товаров!

  167. И Пауза 2

  168. И Я закрываю окно ‘Налоговая накладная выданная * от *’

  169. Тогда открылось окно ‘Реализация товаров: Накладная * от *’

  170. * Спасибо за подробную инструкцию!

  171. @YandexTTS: voice=filipp; speed=1.2

  172. И Пауза 1

  173. * Всегда рада помочь! До скорых встреч!

  174. И Пауза 1

  175. И Я закрываю окно ‘Реализация товаров: Накладная * от *’

  176. Тогда открылось окно ‘Реализация (акты, накладные)’

  177. И Пауза 1

  178. И Я закрываю окно ‘Реализация (акты, накладные)’

  179. И Пауза 3

Recommend Projects

  • React photo

    React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo

    Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo

    Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo

    TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo

    Django

    The Web framework for perfectionists with deadlines.

  • Laravel photo

    Laravel

    A PHP framework for web artisans

  • D3 photo

    D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Visualization

    Some thing interesting about visualization, use data art

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo

    Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo

    Microsoft

    Open source projects and samples from Microsoft.

  • Google photo

    Google

    Google ❤️ Open Source for everyone.

  • Alibaba photo

    Alibaba

    Alibaba Open Source for everyone

  • D3 photo

    D3

    Data-Driven Documents codes.

  • Tencent photo

    Tencent

    China tencent open source team.

Понравилась статья? Поделить с друзьями:
  • Грузинский праздник вина ртвели
  • Дания праздник убийства дельфинов
  • Дания главный праздник
  • Данганронпа 2 что подарить нагито
  • Дальше тишина спектакль сценарий

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии