Программный код сценария выполняется на клиенте в режиме Тонкий клиент. В тексте сценариев допускается создание клиент-серверных процедур и функций. Для взаимодействия с тестируемым приложением, Тестер предлагает в использование небольшое число оберток над объектами тестируемого приложения платформы 1С:Предприятие. Обертки создавались по принципу частотности практического применения и организованы в виде глобальных функций с короткими именами для простоты написания кода.

Примечание

Работа с тестируемым приложением может быть выполнена на чистом API платформы, за дополнительной информацией обращайтесь на сайт ИТС, а также см. в конфигураторе синтаксис-помощник по объекту ТестируемоеПриложение.

Внимание!

Выполнение серверного кода сценария выполняется в небезопасном режиме. Серверный код сценариев выполняется в контексте конфигурации Тестера, а не тестируемого приложения.

Тестер экспортирует ряд глобальных переменных, которые могут быть использованы в процессе разработки тестов.

Приложение (App)

Тестируемое приложение, объект 1С ТестируемоеПриложение. Может использоваться кодом сценария для вызова методов платформы. При запуске теста, данная переменная не определена. Переменная устанавливается при выполнении метода Подключить.

Пример:

Подключить ();
окно = Приложение.ПолучитьАктивноеОкно ();
окно.Закрыть ();

ИмяПриложения (AppName)

ИД приложения запускаемого теста. Может использоваться кодом сценария для идентификации тестируемой конфигурации.

если ( ИмяПриложения = "ERP20" ) тогда
    Сообщить ( "Тестируется ERP" );
конецесли;

СвойстваПриложения (AppData)

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

Поле Значение
Scenario Ссылка на запускаемый сценарий
Application Ссылка на приложение
Computer Имя компьютера, где производится подключение к тестируемому приложению
Port Порт клиента тестирования с учетом порта, который может быть уточнен для конкретной сессии (см. Приложения)
ClientID Идентификатор веб-клиента, при тестировании веб-клиента
Connected Булевый признак подключения к тестируемому приложению
Proxy Порт прокси, если задан
Localhost Строка с IP-адресом локального сетевого адаптера в случае проксирования соединения
Version Строка с версией платформы, если соединение проксируется и версия задана
ConnectedHost, ConnectedPort Данные поля заполняются в момент подключения к тестируемому приложению и содержат актуальные значения компьютера и порта после подключения тестируемого приложения. Эти значения могут отличаться от полей Computer и Port, в том случае, когда адрес и порт были переданы непосредственно в метод Подключить выполняемого сценария.

ЗаголовокДиалогов (DialogsTitle)

Заголовок диалоговых окон тестируемого приложения. Не используется тестером напрямую, но может быть задействован для разработки тестов, анализирующих заголовки диалоговых окон, таких как вопросы и сообщения, например:

вопрос = Приложение.НайтиОбъект ( Тип ( "ТестируемаяФорма" ), ЗаголовокДиалогов );
если ( вопрос <> неопределено ) тогда
    Нажать ( "Да", вопрос );
конецесли;

ГлавноеОкно (MainWindow)

Главное окно приложения, тип ТестируемоеОкноКлиентскогоПриложения.

Может использоваться кодом сценария для вызова методов платформы.

ГлавноеОкно.ПерейтиКНачальнойСтранице ();

При запуске теста, данная переменная не определена.

Заполняется при выполнении метода Подключить.

ТекущийОбъект (CurrentSource)

Внутренняя переменная, задающая текущий визуальный объект тестируемого приложения. Переменная используется методами Тестера, которые получают значения тестируемых полей, например Получить, Взять.

Каждый метод получения значения, в списке параметров имеет Источник (Source). По умолчанию, этот параметр равен неопределено, что означает использование переменной ТекущийОбъект в качестве источника.

Источником может выступать любой визуальный объект тестируемого приложения, имеющий внутри себя подчиненные визуальный элементы. Примеры: Форма, Группы формы, Таблица.

Устанавливать вручную данную переменную не рекомендуется. Используйте метод Здесь для таких целей.

__ (double underscore)

Глобальная пользовательская переменная, которая доступна всем сценариям. Каждый разработчик сценария может использовать данную переменную по своему усмотрению.

тут (this)

Локальная структура области видимости сценария, передается на сервер.

Пример:

тут.Вставить ( "Товар", "Клавиатура Logitech" );
вывести ();
взятьСсылку ();
ВСтудию ( тут.Ссылка );

&НаКлиенте
Процедура вывестиТовар ()

    ВСтудию ( тут.Товар );

КонецПроцедуры

&НаСервере
Процедура взятьСсылку ()

    ссылка = Справочники.Товары.НайтиПоНаименованию ( тут.Товар );
    тут.Вставить ( "Ссылка", ссылка );

КонецПроцедуры

Debug.Delay

Значение задержки выполнения шагов сценария в миллисекундах. Значение по умолчанию 0 (без задержек). Значение может быть изменено в любой момент выполнения сценария.

Debug.Error

Булевый флаг, являющийся признаком произошедшей ошибки в выполняемом сценарии.

Сам текст ошибки хранится в журнале ошибок, которым является справочник Журнал ошибок. Используя серверные функции, можно получать ошибки выполнения тестов.

Debug.Job

Содержит значение типа Структура в случае выполнения сценария на базе задания (см. Механизм заданий). В остальных случаях, значение не определено.

Структура содержит следующие поля:

Поле Значение
Job Ссылка на выполняемое задание
Row Номер строки выполняемого сценария документа Задание.

Пример получения параметров выполняемого задания:

задание = Debug.Job.Job;
параметры = Conversion.FromJSON ( DF.Pick ( задание, "Parameters" ) );
Сообщить ( параметры.Параметр1 );

Мета (Meta)

Метаданные приложения, пример использования:

Сообщить ( Мета.Справочники.ВидыНоменклатуры.Synonym );

Метаданные могут быть использованы для унификации получения представления объектов метаданных.

Например, требуется открыть форму списка справочника Номенклатура. Для этой цели, можно использовать метод Меню и вызвать его таким образом:

Меню ( "НСИ и администрирование / Номенклатура" );

В этом случае, платформа откроет форму списка справочника. Для того, чтобы дальше взаимодействовать с данной формой, её необходимо установить текущей. Для этого используется метод Здесь. Этому методу, в качестве параметра, нужно передать строку. Чтобы сделать форму текущей, необходимо передать заголовок формы.

В примере ниже показано, как это можно сделать двумя разными способами:

Меню ( "НСИ и администрирование / Номенклатура" );

// Первый способ: просто передаем заголовок формы
Здесь ( "Номенклатура" );

// Второй способ: используем метаданные
Здесь ( Мета.Справочники.Номенклатура.Synonym );

Второй способ более устойчив к изменениям в конфигурации, например, когда синоним справочника Номенклатура, со временем может быть изменен на “Товары” или переведен на другой язык.

Так как Тестер не может напрямую общаться с тестируемым приложением на программном уровне, метаданные для Тестера нужно готовить. Для подготовки метаданных используется обработка Meta.epf. Эту обработку можно скачать из формы справочника Приложения.

СтандартнаяОбработка (StandardProcessing)

Переменная, определяющая стандартное поведение сценария. Переменная задается на уровне каждого сценария и автоматически устанавливается в значение истина перед каждым запуском сценария.

Если СтандартнаяОбработка = истина тогда Тестер, после окончания выполнения каждого сценария, выполняет следующие действия:

  1. Проверяет наличие сообщений пользователю. Если сообщения есть – считается, что возникла ошибка. Тестер выкидывает исключение.
  2. Восстанавливается ТекущийОбъект, который был задан до вызова текущего сценария.

Примеры, когда имеет смысл устанавливать СтандартнаяОбработка в ложь.

Пример 1.

Для вспомогательных тестов, не выполняющих интерактивных действий, можно выключать стандартную обработку. В этом случае, происходит незначительное ускорение хода выполнения сценария.

Пример 2.

Тестируемая форма выводит информационные сообщения пользователю. Если не выключать стандартную обработку, по окончании выполнения такого сценария, Тестер будет считать, что тестирование завершилось ошибкой.

Внимание!

СтандартнаяОбработка = ложь выключает только проверку наличия сообщений пользователю, при окончании выполнения сценария. Обработка других ошибок (ошибки проведения, записи, времени выполнения и другие) продолжают обрабатываться, даже при выключенной стандартной обработке. См. флаг ИгнорироватьОшибки для отключения всех проверок, выполняемых тестером.

ИгнорироватьОшибки (IgnoreErrors)

Глобальный флаг, отвечающий за проверку ошибок выполнения сценариев. По умолчанию устанавливается в ложь перед первым запуском сценария.

В процессе выполнения кода сценариев, Тестер, неявно, после каждой строки кода проверяет наличие ошибок тестирования. Например, если в коде сценария нажимается кнопка Провести, Тестер проверит, не возникло ли ошибок после данного действия.

Нажать ( "Провести" );
// Здесь тестер неявно проверит на ошибки

В некоторых сценариях, требуется намеренно провести тестирование на наличие ошибки. Например, сценарий намеренно списывает больше количества товара со склада с тем, чтобы проверить срабатывание контроля остатков и сообщение пользователю.

В этом случае, необходимо флаг ИгнорироватьОшибки установить в истина, провести документ, проверить наличие сообщений об ошибке и вернуть ИгнорироватьОшибки обратно в значение ложь:

// Отключаем проверку ошибок
ИгнорироватьОшибки = истина;

// Проводим документ с заведомо ошибочной ситуацией
Нажать ( "Провести" );

// Ищем сообщения: 1) Диалоговое окно 2) Непосредственно сообщения
если ( НайтиСообщения ( "Не удалось провести*" ).Количество () = 0 ) тогда
    Стоп ( "<Не удалось провести*> диалоговое окно должно быть показано" );
конецесли;

Нажать ( "OK", Forms.Get1C () ); // Закрыть стандартное 1С окно

если ( НайтиСообщения ( "Недостаточно товара * на складе *" ).Количество () <> 1 ) тогда
    Стоп ( "<" + _ + "> сообщение об ошибке должно быть показано один раз" );
конецесли;

// Возвращаем проверку ошибок
ИгнорироватьОшибки = ложь;

Подробнее об особенности метода Коммандос в случае включения флага ИгнорироватьОшибки = истина, читайте здесь

СпециальныеПоля (SpecialFields)

Глобальная структура для задания синонимов специальных колонок, которые зависят от языка конфигурации. Вы можете использовать данную структуру для задания своих собственных значений.

Данная структура также используется в некоторых внутренних функциях Тестера для автоматической навигации. Например, при активации табличной части, Тестер анализирует, есть ли в таблице активная строка и если нет, пытается активировать первую строку таблицы. Для такой активации, тестер использует структуру СпециальныеПоля для определения названия колонки с номером. В русской конфигурации это будет N, в английской #.

ПараметрыЗапуска (LaunchParameters)

Глобальное соответствие, содержащие параметры запуска Тестера.

Параметры запуска передаются по ключу /C при запуске 1С:Предприятие 8.3.

Пример строки запуска:

"C:\Program Files (x86)\1cv8\8.3.10.2252\bin\1CV8C.exe" /IBName"Infobase" /N"Администратор" /TESTMANAGER /C"-ParameterName1 ParameterValue1 -ParameterName2 ParameterValue2"

В результате, в программном коде сценариев можно будет обратиться к переданным параметрам следующим образом:

// Выведет ParameterValue1
Сообщить ( ПараметрыЗапуска [ "ParameterName1" ] );

Практическое применение может быть самое разнообразное. Например, с помощью передаваемых параметров можно организовать нагрузочное тестирование путем запуска тестов в некотором цикле, с передачей параметров используемых портов и тестов.

Для подобных задач, можно использовать зарезервированные ключи:

Ключ Значение
Scenario Полный путь к запускаемому сценарию. Если данный ключ задан – Тестер запустит указанный сценарий на выполнение
Application Название приложения. Указанное приложение будет установлено в качестве тестируемого при запуске тестовой сессии

Пример ниже выполняет запуск некоторого сценария из командной строки:

"C:\Program Files (x86)\1cv8\8.3.10.2252\bin\1CV8C.exe" /IBName"Infobase" /N"Администратор" /TESTMANAGER /C"-Scenario МойСценарий -Application МоеПриложение -SomeParameter1 SomeValue1"

Существует еще один способ запуска сценария на выполнение, однако передача ключей в этом случае не поддерживается:

"C:\Program Files (x86)\1cv8\8.3.10.2252\bin\1CV8C.exe" /IBName"Infobase" /N"Администратор" /TESTMANAGER /C"МоеПриложение#МойСценарий"

В обоих примерах запуска сценария на выполнение, указание приложения не обязательно

ScreenshotsLocator

Переменная используется системой для автоматического снятия скриншотов в случае возникновения ошибок прохождения тестов или использования хронографа. Переменная инициализируется автоматически (согласно настройкам приложения в справочнике, см. здесь) при запуске теста на выполнение.

Необходимость в изменении данной переменной может возникнуть по ходу теста в случае, если в таком тесте идет тестирование сразу нескольких приложений (см. здесь).

В переменной задается регулярное выражение, для поиска тестируемого приложения по заголовку его главного окна.

ВыполняетсяДелегированноеЗадание (RunningDelegatedJob)

Глобальная переменная булевого типа. Принимает значение истина когда агент начинает выполнение делегированного ему задания. Если текущий пользователь не агент, значение переменной принимает значение неопределено.

Переменная может быть использована в сценариях запуска тестов, например, для предварительного обновления тестируемого приложения и его запуска.

Подробнее об агентах и заданиях см. в разделе Механизм заданий.

ЯАгент (IAmAgent)

Глобальная переменная булевого типа. Принимает значение истина для пользователей-агентов. Значение переменной присваивается при старте системы и за время жизни сеанса не изменяется.

Подробнее об агентах и заданиях см. в разделе Механизм заданий.

Подключить (Connect)

Подключить ( ОчищатьОшибки = истина, Порт = неопределено, Компьютер = неопределено )

Параметр Тип Значение
ОчищатьОшибки Булево Значение, задающее необходимость закрытия всех окон в случае подключения к тестируемому приложению, когда в нем уже произошли какие-то ошибки на момент подключения (например, упал предыдущий тест).
Порт Число Номер порта подключения к тестируемому приложению. Если не задан тогда будет использован порт из справочника Приложения.
Компьютер Строка Передается IP-адрес или сетевое имя компьютера, на котором запущено тестируемое приложению. Если не задан тогда будет использован порт из справочника Приложения.

Производит подключение Тестера к тестируемому приложению. Настройки подключения указываются в справочнике Приложения. При подключении, платформа проверяет точное соответствие версии платформы менеджера (где запущен Тестер) и тестируемого приложения. В случае несовпадения версий, платформа выдаст соответствующее предупреждение. Если вам требуется проводить тестирование приложения, версия платформы которого отличается от версии платформы, где запущен Тестер, для этого можно воспользоваться функцией проксирования.

Внимание!

Взаимодействие менеджера и клиента тестирования через проксирование является нештатной возможностью, и может приводить к непредсказуемым результатам. Используйте прокси в тех крайних случаях, когда версии платформ менеджера и клиента сопоставить нельзя.

Также, следует учитывать следующие ограничения и особенности:
1. Проксирование работает локально
2. Проксирование нестабильно при взаимодействии с разными мажорными версиями платформ (например, взаимодействие между клиентом 8.3.13 и менеджером 8.3.14 может приводить к падению клиента)
3. Проксирование не работает для Web-клиента

Для включения проксирования, необходимо открыть профиль вашего пользователя, перейти в навигационной панели в список сеансов, и для текущего сеанса включить режим проксирования.

После подключения к тестируемому приложению, Тестер проверит текущее состояние тестируемого приложения, и если оно находится в ошибочном состоянии, Тестер попытается закрыть все окна в тестируемом приложении. Ошибочное состояние, это когда в окне тестируемого приложения, на момент подключения, находится ошибка проведения документа, сохранения данных и другие ошибки.

Если требуется подключиться к приложению без подобного анализа, метод подключения может быть вызван напрямую:

Test.ConnectClient ( false );

Отключить (Disconnect)

Отключить ( Закрыть = ложь, ТушитьПрокси = ложь )

Параметр Тип Значение
Закрыть Булево Если Истина тогда тестируемое приложение будет закрыто.
ТушитьПрокси Булево Если Истина тогда прокси соединение будет разорвано. Имеет смысл устанавливать в Истина в случае запуска большого количества тестируемых сессий, например для нагрузочного тестирования.

Производит отключение от тестируемого приложения.

ЗакрытьВсе(ё) (CloseAll)

ЗакрытьВсе ()

Закрывает все окна в тестируемом приложении. Если есть окна с несохраненными данными, Тестер будет пытаться ответить Нет на возникающие вопросы системы.

Если вы тестируете приложение и/или используете язык локализации интерфейса платформы, отличный от русского или английского, для работы данного метода, возможно придется внести корректировки на уровне конфигурации, в модуль Forms.CloseWindows (). Изменения касаются поиска окна с вопросом о сохранении данных и надписей нажимаемой кнопки Нет на локализованном языке.

Закрыть (Close)

Закрыть ( Форма = неопределено )

Параметр Тип Значение
Форма Строка | ТестируемаяФорма Может быть передан заголовок окна или непосредственно форма, которую требуется закрыть. Если параметр не задан, тогда будет закрыт ТекущийОбъект

Закрывает форму. Данный метод не анализирует признак модифицированности формы и не пытается ответить на вопрос о сохранении данных.

Здесь (With)

Объект = Здесь ( Имя = неопределено, Активировать = ложь )

Параметр Тип Значение
Объект Тестируемый объект Найденный объект согласно переданного в Имя параметра
Имя Строка | Тестируемый объект Если в параметр передать строку, тогда метод будет искать объекты следующих типов: ТестируемоеОкноКлиентскогоПриложения (TestedClientApplicationWindow), ТестируемаяФорма (TestedForm) В строке могут использоваться символы \* и ? для поиска по шаблону. Если в метод передается объект, метод установит ТекущийОбъект равный переданному объекту. Если параметр опущен, текущим источником будет установлена текущая активная форма.
Активировать Булево Если истина – найденный объект будет активирован. Параметр может использоваться для переключения между открытыми неблокирующими формами.

Определяет значение глобальной переменной ТекущийОбъект согласно найденного визуального объекта.

Примеры:

// Тестер будет искать форму с заголовком "Номенклатура"
Здесь ( "Номенклатура" );

// Вызов с использованием автоподстановочных знаков
форма = Здесь ( "Заказ покупателя (соз*" );

// Текущая форма
Здесь ();

Меню (OpenMenu)

Меню ( Путь )

Параметр Тип Значение
Путь Строка Строка к объекту, разделенная символом /

Открывает ссылку на объект в глобальном командном интерфейсе.

Внимание!

Работа данного метода имеет следующую особенность: если в открываемом объекте, содержится программная ошибка, возникающая до открытия основной формы объекта, такая ошибка не может быть перехвачена Тестером и программно обработана кодом сценария (например, через попытку/исключение). Таким образом, если вы используете в коде сценария, собственный механизм перехвата сообщений об ошибках, для открытия объектов нужно использовать Коммандос, вместо Меню

Пример:

// Откроет подсистему Продажи и "нажмет" на Заказы клиентов
Меню ( "Продажи / Заказы клиентов" );

Получить (Get)

Объект = Получить ( Имя, Источник = неопределено, Тип = неопределено )

Параметр Тип Значение
Объект Тестируемый объект Найденный тестируемый объект согласно переданных параметров
Имя Строка Идентификатор или Заголовок объекта. Имя может задаваться с префиксом ! или #. В этом случае, Тестер будет рассматривать имя как идентификатор искомого поля. В имени может быть задан полный путь к искомому полю.

Примеры: Товары / Сумма, или Дополнительно / !Код.

Применяется к объектам: Кнопка, КоманднаяПанель, КомандныйИнтерфейс, КонтекстноеМеню, Декорация, Поле, Форма, Группа, КнопкаКИ, ГруппаКИ, Таблица, Окно
Источник Строка | ТестируемыйОбъект Строка с заголовком формы или сам объект формы. В строке могут использоваться символы * и ? для поиска по шаблону. Если значение не задано, тогда в качестве источника будет использоваться глобальная переменная ТекущийОбъект.
Тип Строка Отбор по типу. Доступны следующие строковые значения: Поле (Field), Группа (Group), Кнопка (Button), Таблица (Table), Декорация (Decoration)

Если тип не задан, отбор по типу установлен не будет.

Возвращает тестируемый объект.

Примеры:

// Получить поле Сумма. Надпись к полю будет использована при поиске объекта
поле = Получить ( "Сумма" );

// Тоже самое, но при поиске будет использован идентификатор поля.
// Такой вариант получения полей может быть использован для многоязычных конфигураций
поле = Получить ( "!Сумма" );

// Вначале будет найден объект Товары, а затем внутри него будет найдено поле Итого.
// Префиксы "!", "#" могут быть использованы в любой части выражения
поле = Получить ( "Товары / Итого" );

// Вернет ячейку поля табличного документа
поле = Получить ( "!ТабличныйДокумент [R1C1]" );

// Вернет поле Количество во второй строке таблицы Товары
таблица = Фокус ( "!Товары" );
поле = Получить ( "!ТаблицаКоличество [ 2 ]", таблица );

Взять (Fetch)

Представление = Взять ( Имя, Источник = неопределено, Тип = неопределено )

Параметр Тип Значение
Представление Строка Строковое представление значения объекта
Имя Строка Идентификатор или Заголовок объекта. Имя может задаваться с префиксом ! или #. В этом случае, Тестер будет рассматривать имя как идентификатор искомого поля. В имени может быть задан полный путь к искомому полю.

Примеры: Товары / Сумма, или Дополнительно / !Код.

Применяется к объектам: Поле
Источник Строка | ТестируемыйОбъект Строка с заголовком формы или сам объект формы. В строке могут использоваться символы * и ? для поиска по шаблону. Если значение не задано, тогда в качестве источника будет использоваться глобальная переменная ТекущийОбъект.
Тип Строка Отбор по типу. Доступны следующие строковые значения: Поле (Field), Группа (Group), Кнопка (Button), Таблица (Table), Декорация (Decoration)

Если тип не задан, отбор по типу установлен не будет.

Возвращает строковое представление значения объекта.

Примеры:

код = Взять ( "Дополнительно / Код" );

// Вернет значение в этой ячейке
текст = Взять ( "!ТабличныйДокумент [R1C1]" );

// Вернет значение количества во второй строке таблицы Товары.
// Внимание! Возвращаемое значение будет отформатировано согласно
// региональных настроек информационной базы и сеанса
таблица = Фокус ( "!Товары" );
поле = Взять ( "!ТоварыКоличество [ 2 ]", таблица );

Примечание

У данного метода есть особенность поведения в случае получения значений ячеек таблиц у неактивных форм объектов. Подробнее см. здесь.

Установить (Set)

Объект = Установить ( Имя, Значение, Источник = неопределено, Тип = неопределено )

Параметр Тип Значение
Объект Тестируемый объект Найденный тестируемый объект согласно переданных параметров
Значение Строка Устанавливаемое в поле значение
Имя Строка Идентификатор или Заголовок объекта. Имя может задаваться с префиксом ! или #. В этом случае, Тестер будет рассматривать имя как идентификатор искомого поля. В имени может быть задан полный путь к искомому полю.

Примеры: Товары / Сумма, или Дополнительно / !Код.

Применяется к объектам: Поле
Источник Строка | ТестируемыйОбъект Строка с заголовком формы или сам объект формы. В строке могут использоваться символы * и ? для поиска по шаблону. Если значение не задано, тогда в качестве источника будет использоваться глобальная переменная ТекущийОбъект.
Тип Строка Отбор по типу. Доступны следующие строковые значения: Поле (Field), Группа (Group), Кнопка (Button), Таблица (Table), Декорация (Decoration)

Если тип не задан, отбор по типу установлен не будет.

Активирует и устанавливает значение в поле. Если тип поля Переключатель тогда метод ВыбратьВариант будет использован. В остальных случаях ВвестиТекст (речь идет о методах платформы 1С по работе с тестовым приложением).

Примечание

При установке значений в полях таблиц, нужно учитывать, в каком режиме находится строка таблицы. Если строка находится не в режиме редактирования, необходимо в параметр Источник передать редактируемую таблицу. В этом случае, Тестер сможет сам перевести строку таблицы в режим редактирования, установить значение в нужную колонку, и закончить режим редактирования.

Примеры:

// Устанавливает значение в поле
Установить ( "#Комментарий", "Важный комментарий" );

// Устанавливает количество в новой строке таблицы
Нажать ( "!ТоварыДобавить" );
Установить ( "!ТоварыКоличество", 7 );

// Устанавливает количество во второй строке, пример 1
таблица = Фокус ( "!Товары" );
Установить ( "!ТоварыКоличество [ 2 ]", 15, таблица );

// Устанавливает количество во второй строке, пример 2
Установить ( "!ТоварыКоличество [ 2 ]", 15, Получить ( "!Товары" ) );

// Устанавливает значение в ячейке табличного документа
Установить ( "!ПечатныйДокумент [R1C1]", "Привет мир" );

Ввести (Put)

Объект = Ввести ( Имя, Значение, Источник = неопределено, Тип = неопределено, ПроверитьЗначение = ложь )

Параметр Тип Значение
Объект Тестируемый объект Найденный тестируемый объект согласно переданных параметров
Имя Строка Идентификатор или Заголовок объекта. Имя может задаваться с префиксом ! или #. В этом случае, Тестер будет рассматривать имя как идентификатор искомого поля. В имени может быть задан полный путь к искомому полю.

Примеры: Товары / Сумма, или Дополнительно / !Код.

Применяется к объектам: Поле
Значение Строка Устанавливаемое в поле значение
Источник Строка | ТестируемыйОбъект Строка с заголовком формы или сам объект формы. В строке могут использоваться символы * и ? для поиска по шаблону. Если значение не задано, тогда в качестве источника будет использоваться глобальная переменная ТекущийОбъект.
Тип Строка Отбор по типу. Доступны следующие строковые значения: Поле (Field), Группа (Group), Кнопка (Button), Таблица (Table), Декорация (Decoration)

Если тип не задан, отбор по типу установлен не будет.
ПроверитьЗначение Булево Флаг определяет, нужно ли сверять установленное значение с переданным в данный метод значением

Метод работает аналогично методу Установить (см. выше) с той разницей, что для ссылочных значений, этот метод будет ждать выпадающего списка предлагаемых платформой значений и выбирать первое значение из этого списка, если оно там будет обнаружено.

Важно учитывать, что данный метод не может полностью проверить правильность выбранного значения. Например, данным методом, вы вводите некоторое значение в ссылочное поле с типом ДокументСсылка. В качестве значения вы передаете номер документа. После того, как метод отработает, в поле будет выбран найденный документ. Однако, если такого документа найдено не будет, в поле всё равно будет выбрано значение, первое из списка.

Сверить значение, выведенное в поле с переданным значением в метод, в общем случае, нельзя. Представление выбранного в поле объекта может отличаться от переданного параметра. Однако, если эти значения всё-таки могут быть проверены, можно задействовать параметр ПроверитьЗначение. В этом случае, метод проверит на полное равенство выбранного в поле значения и переданного в метод (параметр Значение).

В некоторых случаях, использование данного метода является единственным выходом из-за специфичной работы метода Установить в случае перехода фокуса между полем и таблицей, или полем в строке таблицы. Особенность заключается в том, что в некоторых случаях, платформа пропускает установленное значение методом Установить, что приводит к незапланированному поведению. В таких случаях, можно использовать метод Ввести, который гарантированно заставит платформу выбрать значение в поле.

Очистить (Clear)

Объект = Очистить ( Имя, Источник = неопределено, Тип = неопределено )

Параметр Тип Значение
Объект Тестируемый объект Найденный тестируемый объект согласно переданных параметров
Имя Строка Идентификатор или Заголовок объекта. Имя может задаваться с префиксом ! или #. В этом случае, Тестер будет рассматривать имя как идентификатор искомого поля. В имени может быть задан полный путь к искомому полю.

Примеры: Товары / Сумма, или Дополнительно / !Код.

Применяется к объектам: Поле
Источник Строка | ТестируемыйОбъект Строка с заголовком формы или сам объект формы. В строке могут использоваться символы * и ? для поиска по шаблону. Если значение не задано, тогда в качестве источника будет использоваться глобальная переменная ТекущийОбъект.
Тип Строка Отбор по типу. Доступны следующие строковые значения: Поле (Field), Группа (Group), Кнопка (Button), Таблица (Table), Декорация (Decoration)

Если тип не задан, отбор по типу установлен не будет.

Очищает поле.

Подобрать (Pick)

Объект = Подобрать ( Имя, Значение, Источник = неопределено, Тип = неопределено )

Параметр Тип Значение
Объект Тестируемый объект Найденный тестируемый объект согласно переданных параметров
Имя Строка Идентификатор или Заголовок объекта. Имя может задаваться с префиксом ! или #. В этом случае, Тестер будет рассматривать имя как идентификатор искомого поля. В имени может быть задан полный путь к искомому полю.

Примеры: Товары / Сумма, или Дополнительно / !Код.

Применяется к объектам: Поле
Значение Строка Устанавливаемое в поле значение
Источник Строка | ТестируемыйОбъект Строка с заголовком формы или сам объект формы. В строке могут использоваться символы * и ? для поиска по шаблону. Если значение не задано, тогда в качестве источника будет использоваться глобальная переменная ТекущийОбъект.
Тип Строка Отбор по типу. Доступны следующие строковые значения: Поле (Field), Группа (Group), Кнопка (Button), Таблица (Table), Декорация (Decoration)

Если тип не задан, отбор по типу установлен не будет.

Производит выбор значения из списка выбора.

Примеры:

таблица = Фокус ( "!Товары" );
Подобрать ( "!ТоварыТип [ 2 ]", "Услуга", таблица );

Выбрать (Choose)

Объект = Выбрать ( Имя, Источник = неопределено, Тип = неопределено )

Параметр Тип Значение
Объект Тестируемый объект Найденный тестируемый объект согласно переданных параметров
Имя Строка Идентификатор или Заголовок объекта. Имя может задаваться с префиксом ! или #. В этом случае, Тестер будет рассматривать имя как идентификатор искомого поля. В имени может быть задан полный путь к искомому полю.

Примеры: Товары / Сумма, или Дополнительно / !Код.

Применяется к объектам: Поле
Источник Строка | ТестируемыйОбъект Строка с заголовком формы или сам объект формы. В строке могут использоваться символы * и ? для поиска по шаблону. Если значение не задано, тогда в качестве источника будет использоваться глобальная переменная ТекущийОбъект.
Тип Строка Отбор по типу. Доступны следующие строковые значения: Поле (Field), Группа (Group), Кнопка (Button), Таблица (Table), Декорация (Decoration)

Если тип не задан, отбор по типу установлен не будет.

Начинает процесс выбора значения в поле ввода.

Примеры:

// Равносильно нажатию на кнопку выбора в поле Покупатель
Выбрать ( "Покупатель" );

таблица = Фокус ( "!Товары" );
Выбрать ( "!ТоварыТовар [ 3 ]", таблица );

Фокус (Activate)

Объект = Фокус ( Имя, Источник = неопределено, Тип = неопределено )

Параметр Тип Значение
Объект Тестируемый объект Найденный тестируемый объект согласно переданных параметров
Имя Строка Идентификатор или Заголовок объекта. Имя может задаваться с префиксом ! или #. В этом случае, Тестер будет рассматривать имя как идентификатор искомого поля. В имени может быть задан полный путь к искомому полю.

Примеры: Товары / Сумма, или Дополнительно / !Код.

Применяется к объектам: Кнопка, КоманднаяПанель, Декорация, Поле, Форма, Группа, Таблица, Окно
Источник Строка | ТестируемыйОбъект Строка с заголовком формы или сам объект формы. В строке могут использоваться символы * и ? для поиска по шаблону. Если значение не задано, тогда в качестве источника будет использоваться глобальная переменная ТекущийОбъект.
Тип Строка Отбор по типу. Доступны следующие строковые значения: Поле (Field), Группа (Group), Кнопка (Button), Таблица (Table), Декорация (Decoration)

Если тип не задан, отбор по типу установлен не будет.

Активирует поле.

Примеры:

Фокус ( "!ТабДок [R1C1]" );

таблица = Фокус ( "!Товары" );
Фокус ( "!ТоварыКоличество [ 2 ]", таблица );

Нажать (Click)

Объект = Нажать ( Имя, Источник = неопределено, Тип = неопределено )

Параметр Тип Значение
Объект Тестируемый объект Найденный тестируемый объект согласно переданных параметров
Имя Строка Идентификатор или Заголовок объекта. Имя может задаваться с префиксом ! или #. В этом случае, Тестер будет рассматривать имя как идентификатор искомого поля. В имени может быть задан полный путь к искомому полю.

Примеры: Товары / Сумма, или Дополнительно / !Код.

Применяется к объектам: Кнопка, Декорация, Поле, КнопкаКИ
Источник Строка | ТестируемыйОбъект Строка с заголовком формы или сам объект формы. В строке могут использоваться символы * и ? для поиска по шаблону. Если значение не задано, тогда в качестве источника будет использоваться глобальная переменная ТекущийОбъект.
Тип Строка Отбор по типу. Доступны следующие строковые значения: Поле (Field), Группа (Group), Кнопка (Button), Таблица (Table), Декорация (Decoration)

Если тип не задан, отбор по типу установлен не будет.

Активирует и нажимает на поле. Также, может использоваться для нажатия на гиперссылку в декорации (начиная с версии платформы 8.3.13) и сворачиваемую группу.

Примеры:

// Нажать чекбокс если Товар не Услуга
нажать = ? ( услуга, "Да", "Нет" ) <> Взять ( "!ЭтоУслуга" );
если ( нажать ) тогда
    Нажать ( "!ЭтоУслуга" );
конецесли;

// Нажать в табличной части
таблица = Фокус ( "!Товары" );
Нажать ( "!ТоварыРезервировать [ 2 ]", таблица );

// Нажать на гиперссылку в декорации
Нажать ( "!ДокументОснование" );

// Нажать на вторую гиперссылку в декорации
Нажать ( "!Ссылки[2]" );

// Нажать на определенную гиперссылку в декорации.
// Обратите внимание:
// 1. Для нажатия на ссылку по заголовку, нужно использовать точное представление,
//    подстановочные символы не допускаются
// 2. Для того, чтобы правильно была переда надпись, слэши экранируются обратными слешами
Нажать ( "!Ссылки[Поступление ТМЦ №123456 от 01\/\/01\/2019]" );

Проверить (Check)

Проверить ( Имя, Значение, Источник = неопределено, Тип = неопределено )

Параметр Тип Значение
Имя Строка Идентификатор или Заголовок объекта. Имя может задаваться с префиксом ! или #. В этом случае, Тестер будет рассматривать имя как идентификатор искомого поля. В имени может быть задан полный путь к искомому полю.

Примеры: Товары / Сумма, или Дополнительно / !Код.

Применяется к объектам: Поле
Значение Cтрока | Число | Дата Значение, которое будет сравниваться с значением, хранящимся в проверяемом поле.
Источник Строка | ТестируемыйОбъект Строка с заголовком формы или сам объект формы. В строке могут использоваться символы * и ? для поиска по шаблону. Если значение не задано, тогда в качестве источника будет использоваться глобальная переменная ТекущийОбъект.
Тип Строка Отбор по типу. Доступны следующие строковые значения: Поле (Field), Группа (Group), Кнопка (Button), Таблица (Table), Декорация (Decoration)

Если тип не задан, отбор по типу установлен не будет.

Сравнивает значение поля с переданным значением. Если значения не совпадают, будет вызвано исключение.

Примеры:

Установить ( "Количество", 3 );
Установить ( "Цена", 10 );
Проверить ( "Сумма", "30.00" );

// В пятой строке таблицы Начисления
Проверить ( "#Начисления / Результат [ 5 ]", 1000 );

ПроверитьСтатус (CheckState)

ПроверитьСтатус ( Имя, Значение, Флаг = истина, Источник = неопределено, Тип = неопределено )

Параметр Тип Значение
Имя Строка Идентификатор или Заголовок объекта. Имя может задаваться с префиксом ! или #. В этом случае, Тестер будет рассматривать имя как идентификатор искомого поля. В имени может быть задан полный путь к искомому полю.

Примеры: Товары / Сумма, или Дополнительно / !Код.

Применяется к объектам: Кнопка, КоманднаяПанель, Декорация, Поле, Группа, КнопкаКИ, ГруппаКИ, Таблица

В параметр можно передать несколько полей для проверки, разделяя их запятыми.
Значение Строка Может принимать одно из следующих значений: Видимость (Visible), Доступность (Enable), ТолькоЧтение (ReadOnly)
Флаг Булево Указывается требуемое состояние значения. Например, Видимость ложь или истина
Источник Строка | ТестируемыйОбъект Строка с заголовком формы или сам объект формы. В строке могут использоваться символы * и ? для поиска по шаблону. Если значение не задано, тогда в качестве источника будет использоваться глобальная переменная ТекущийОбъект.
Тип Строка Отбор по типу. Доступны следующие строковые значения: Поле (Field), Группа (Group), Кнопка (Button), Таблица (Table), Декорация (Decoration)

Если тип не задан, отбор по типу установлен не будет.

Проверяет оформление поля. Если оформление не совпадает с ожидаемым, будет вызвано исключение.

Примеры:

// Указанные поля должны быть доступны, иначе, будет исключение
ПроверитьСтатус ( "Часовой тариф, Время, Сумма проекта", "Доступность" );

// Проверка колонок таблицы
таблица = Фокус ( "!Товары" );
ПроверитьСтатус ( "!ТоварыКоличествоУпаковок [2]", "Доступность", , таблица );

// Валюта не должна быть видимой
ПроверитьСтатус ( "!Валюта", "Видимость", ложь );

ПроверитьШаблон (CheckTemplate)

ПроверитьШаблон ( Имя, Источник = неопределено, Тип = неопределено, Шаблон = неопределено )

Параметр Тип Значение
Имя Строка Идентификатор или Заголовок объекта. Имя может задаваться с префиксом ! или #. В этом случае, Тестер будет рассматривать имя как идентификатор искомого поля. В имени может быть задан полный путь к искомому полю.

Примеры: Товары / Сумма, или Дополнительно / !Код.

Применяется к объектам: Поле
Источник Строка | ТестируемыйОбъект Строка с заголовком формы или сам объект формы. В строке могут использоваться символы * и ? для поиска по шаблону. Если значение не задано, тогда в качестве источника будет использоваться глобальная переменная ТекущийОбъект.
Тип Строка Отбор по типу. Доступны следующие строковые значения: Поле (Field), Группа (Group), Кнопка (Button), Таблица (Table), Декорация (Decoration)

Если тип не задан, отбор по типу установлен не будет.
Шаблон Структура Если значение не определено, в качестве шаблона используется шаблон самого теста (задается на вкладке Шаблон). При необходимости, можно передать шаблон в виде структуры, полученной программно, пример такой передачи см. здесь

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

Проверка шаблона может быть осуществлена полностью или по выделенным областям. Проверяются только значения полей, оформление игнорируется. При проверке, могут быть использованы знаки автоподстановки, например знак *. Подробнее о проверке шаблонов см. в разделе Проверка бизнес логики.

Пример:

ПроверитьШаблон ( "!ОтчетРезультат" );

ПроверитьОшибки (CheckErrors)

ПроверитьОшибки ()

Проверяет наличие сообщений. Если сообщения есть, Тестер выкинет исключение.

Стоп (Stop)

Стоп ( Причина = неопределено )

Параметр Тип Значение
Причина Строка Текстовое описание возникшей причины для остановки сценария

Завершает выполнение сценария.

Дождаться (Waiting)

Результат = Дождаться ( Имя, Таймаут = 3, Тип = неопределено )

Параметр Тип Значение
Результат Булево истина если объект появился, ложь в противном случае
Имя Строка Заголовок формы. В строке могут использоваться символы * и ? для поиска по шаблону.

Применяется к объектам: Форма, Окно
Таймаут Число Время в секундах, в течение которого Тестер будет ждать появления запрошенного объекта
Тип Строка Отбор по типу. Доступны следующие строковые значения: Поле (Field), Группа (Group), Кнопка (Button), Таблица (Table), Декорация (Decoration)

Если тип не задан, отбор по типу установлен не будет.

Приостанавливает выполнение сценария до появления запрошенного объекта, например - окна.

Примеры:

если ( не Дождаться ( "Помощник*" ) ) тогда
    Стоп ( "Окно с помощником должно было появиться" );
конецесли;

ПолучитьОкно (GetWindow)

Окно = ПолучитьОкно ( Форма = неопределено )

Параметр Тип Значение
Окно ТестируемоеОкноКлиентскогоПриложения Тестируемое окно клиентского приложения
Форма ТестируемаяФорма Если значение не задано, будет предпринята попытка получения окна для значения ТекущийОбъект

Возвращает объект типа ТестируемоеОкноКлиентскогоПриложения (TestedClientApplicationWindow) для переданной или текущий формы.

Примеры:

форма = Здесь ( "Клиенты" );
окно = ПолучитьОкно ();
окно.Закрыть ();

НайтиФорму (FindForm)

Форма = НайтиФорму ( Имя )

Параметр Тип Значение
Форма ТестируемаяФорма Тестируемая форма
Имя Строка Заголовок формы. В строке могут использоваться символы * и ? для поиска по шаблону.

Применяется к объектам: Форма

Находит и возвращает форму по переданному заголовку. В отличие от метода Здесь, данная функция не устанавливает ТекущийОбъект.

Примеры:

форма = НайтиФорму ( "Важная информация" );
Нажать ( "ОК", форма );

// Также, возможна более краткая запись, в этом случае, НайтиФорму будет вызвана неявно:
Нажать ( "ОК", "Важная информация" );

ПолучитьСсылки (GetLinks)

Ссылки = ПолучитьСсылки ( Форма = неопределено )

Параметр Тип Значение
Ссылки ТестируемыйКомандныйИнтерфейсОкна Тестируемый командный интерфейс окна
Форма ТестируемаяФорма Если значение не задано, будет предпринята попытка получения окна для значения ТекущийОбъект

Возвращает командный интерфейс формы.

Примеры:

ГлавноеОкно.ВыполнитьКоманду ( "e1cib/command/Catalog.Партнеры.Create" );

форма = Здесь ( "Партнер (соз*" );
Установить ( "!НаименованиеПолноеКомпания", "Тестовый партнер" );
Нажать ( "Поставщик" );
Установить ( "!ГруппаДоступа", "Поставщики" );
Нажать ( "!ФормаЗаписать" );

// Создание контрагента
Нажать ( "Контрагенты", ПолучитьСсылки () ); // Пример работы метода
Здесь ( "Контрагенты*" );

Пример на картинке:

ПолучитьСообщения (GetMessages)

Сообщения = ПолучитьСообщения ()

Параметр Тип Значение
Сообщения ФиксированныйМассив Массив найденных сообщений

Возвращает фиксированный массив сообщений активного окна. Метод может быть использован для анализа сообщений.

Пример:

Нажать ( "!ФормаПровести" );
если ( ПолучитьСообщения ().Количество () = 0 ) тогда
    Стоп ( "Ожидалось сообщение об ошибке" );
конецесли;

НайтиСообщения (FindMessages)

Сообщения = НайтиСообщения ( Шаблон )

Параметр Тип Значение
Сообщения Массив Массив найденных сообщений
Шаблон Строка Текст сообщения, который должен быть найден. В строке допускается использование регулярных выражений. Использование символов * и ? имеет небольшое отклонение от стандартных правил регулярных выражений. Эти символы будут трансформированы в [\s\S\]+ и [\s\S\] соответственно. Для дополнительной информации по регулярным выражениям см. http://userguide.icu-project.org/strings/regexp

Возвращает массив найденных сообщений.

Примеры:

если ( НайтиСообщения ( "Не удалось провести*" ).Количество () = 0 ) тогда
    Стоп ( "<Не удалось провести*> диалоговое окно должно быть показано" );
конецесли;

Нажать ( "OK", Forms.Get1C () ); // Закрыть стандартное 1С окно

если ( НайтиСообщения ( "Списываемое количество превышает *" ).Количество () <> 1 ) тогда
    Стоп ( "Сообщение об ошибке должно быть показано один раз" );
конецесли;

Пауза (Pause)

Пауза ( Секунды )

Параметр Тип Значение
Секунды Число Число секунд

Останавливает процесс выполнения сценария на заданное число секунд.

Пример:

Пауза ( 5 ); // Система будет здесь стоять 5 секунд

ТекущаяВкладка (CurrentTab)

ТекущаяВкладка ( Имя, Источник = неопределено, Тип = неопределено )

Параметр Тип Значение
Имя Строка Идентификатор или Заголовок объекта. Имя может задаваться с префиксом ! или #. В этом случае, Тестер будет рассматривать имя как идентификатор искомого поля. В имени может быть задан полный путь к искомому полю.

Примеры: Товары / Сумма, или Дополнительно / !Код.

Применяется к объектам: Группа
Источник Строка | ТестируемыйОбъект Строка с заголовком формы или сам объект формы. В строке могут использоваться символы * и ? для поиска по шаблону. Если значение не задано, тогда в качестве источника будет использоваться глобальная переменная ТекущийОбъект.
Тип Строка Отбор по типу. Доступны следующие строковые значения: Поле (Field), Группа (Group), Кнопка (Button), Таблица (Table), Декорация (Decoration)

Если тип не задан, отбор по типу установлен не будет.

Пример:

// Получаем заголовок текущей вкладки
ТекущаяВкладка ( "!ГруппаСтраницы" ).ТекстЗаголовка;

Далее (Next)

Далее ()

Выполняет переход к следующему, согласно расположения элементов, полю.

КСтроке (GotoRow)

Перешли = КСтроке ( Таблица, Колонка, Значение, ИзНачала = истина, Источник = неопределено )

Параметр Тип Значение
Перешли Булево Результат перехода
Таблица Строка | ТестируемаяТаблицаФормы Идентификатор, заголовок или объект таблицы. Имя может задаваться с префиксом ! или #. В этом случае, Тестер будет рассматривать имя как идентификатор искомого поля. В имени может быть задан полный путь к искомому полю. Примеры: ГруппаТовары / Товары, или Дополнительно / !ТаблицаИзделий
Колонка Строка Строка с наименованием (не идентификатором) колонки, в которой будет производиться поиск значения для перехода
Значение Строка Искомое в переданной колонке значение. Значение должно полностью соответствовать искомому, в значении нельзя указать только часть искомой строки или использовать подстановочные символы.
ИзНачала Булево Значение, задающее старт поиска. По умолчанию, значение истина. Это означает, что метод вначале переместится в начало таблицы, и только потом начнет поиск. Если передать значение ложь, поиск начнется с текущий строки таблицы.
Источник Строка | ТестируемыйОбъект Строка с заголовком формы или сам объект формы. В строке могут использоваться символы * и ? для поиска по шаблону. Если значение не задано, тогда в качестве источника будет использоваться глобальная переменная ТекущийОбъект.

Производит переход к строке таблицы. Метод не предназначен для поиска строк, метод предназначен для навигации к нужной строке.

Необходимо обращать дополнительное внимание при использовании данного метода в случае навигации по строкам связанных таблиц. Особенность в том, что если вторая таблица связана с первой через обработчик ожидания, то строки во второй таблице могут появиться позже, чем отработает метод КСтроке, что приведет к ошибке и остановке теста. Во избежании подобных ситуаций, используйте метод Пауза перед переходом к связанной таблице.

Примеры:

Здесь ( "Заказ поставщику *" );

// Перейдет в третью строку табличной части Товары
// (если есть как минимум три строки)
КСтроке ( "!Товары", "N", 3 );

// Переход по строкам связанных таблиц
Здесь ( "Внутренние документы" );
КСтроке ( "!Папки", "Наименование", "Служебные записки" );
Пауза ( 1 );
КСтроке ( "!Список", "Наименование", "О выделении персонального телефонного аппарата" );

См. также Как перейти к строке таблицы по значениям нескольких колонок?

Коммандос (Commando)

Объект = Коммандос ( Действие, Активировать = истина )

Параметр Тип Значение
Объект ТестируемаяФорма Открытая форма после перехода по навигационной ссылке
Действие Строка Навигационная ссылка
Активировать Булево Флаг отвечает за автоматическую установку открываемой формы – текущей

Выполняет навигационную команду системы по переданному строковому параметру.

Начиная с версии 1.3.3.1, метод также выполняет установку открытой формы текущей. Таким образом, вызов метода Здесь может быть опущен, если он выполняется сразу после выполнения навигационной команды.

Если флаг Активировать = истина, метод после выполнения перехода по указанной навигационной ссылке, выполняет вызова метода Здесь. Важно учитывать особенность работы метода в случае использования флага ИгнорироватьОшибки = истина. Особенность заключается в том, что в случае неудачного перехода по навигационной ссылке (например, навигационная ссылка в параметре Действие задана неверно, или в процессе открытия формы объекта, возникла ошибка), платформа генерирует исключение в виде модального диалога. При этом, Тестер не может определить, является ли это окно целевой формой объекта, или результатом исключения его открытия. В любом случае, если параметр Активировать = истина, Тестер пытается активировать выведенное окно, и если это окно с ошибкой, генерируется системное исключение Объект не может быть найден (1С:Предприятие), что может вызвать конфуз при анализе проблемы. Таким образом, если вам требуется включать флаг ИгнорироватьОшибки = истина, следует рассмотреть установку параметра Активировать в значение ложь (соответственно метод Здесь придется вызвать самостоятельно).

Примеры:

// Открывает стандартную форму списка
Коммандос ( "e1cib/list/Справочник.Номенклатура" );

// Открывает стандартную форму нового объекта
Коммандос ( "e1cib/command/Справочник.Номенклатура.Создать" );

// Открывает не параметризованную команду справочника
Коммандос ( "e1cib/command/Справочник.Номенклатура.Команда.НовыйЭлемент" );

// Открывает отчет
Коммандос ( "e1cib/app/Отчет.ОстаткиТоваров" );

// Открывает обработку
Коммандос ( "e1cib/app/Обработка.ИмяМоейОбработки" );

// Открывает общую команду
Коммандос ( "e1cib/command/ОбщаяКоманда.ПанельОтчетовЗакупки" );

// Открывает общую форму
Коммандос ( "e1cib/data/ОбщаяФорма.Настройки" ); // Примечание: если при открытии формы возникнет ошибка, она не сможет быть обработана Тестером

// Открывает журнал документов
Коммандос ( "e1cib/list/DocumentJournal.ПередачиВозвратыТоваровМеждуОрганизациями" );

Вызвать (Call)

Результат = Вызвать ( Сценарий, Параметры = неопределено, Приложение = неопределено )

Параметр Тип Значение
Результат Любой Возвращаемое вызываемым сценарием значение
Сценарий Строка Полный путь к запускаемому сценарию (каждый сценарий в системе имеет уникальный путь в пределах приложения)
Параметры Любой Значение, которое будет передано в вызываемый сценарий. Вызванный сценарий может обращаться к переданным параметрам через переменную _. В качестве параметра допускается передача строки в формате JSon. В этом случае, строка будет преобразована в структуру и вызываемый сценарий получит в переменную _ структуру параметров.
Приложение Строка Имя приложения для поиска запускаемого сценария. Если имя не задано, поиск сценария будет производиться в наборе сценариев приложения вызвавшего сценария. Если сценарий не будет найден, поиск будет продолжен в приложении, установленном по умолчанию в настройках окружения текущего пользователя. Если сценарий опять не будет найден, тогда будет произведена попытка поиска сценария в глобальном наборе сценариев, для которых приложение не задано. Если сценарий найден не будет, Тестер сгенерирует исключение

Выполняет запуск сценария.

Пример:

// Пример 1
Вызвать ( "Общее.ОткрытьСписок", Мета.Справочники.Номенклатура );

// Пример 2
п = новый Структура ();
п.Вставить ( "Товар", "Втулка" );
п.Вставить ( "Цена", "150" );
Вызвать ( "МойТест", п );

// В теле МойТест обращение к переданным параметрам идет через _
Сообщить ( _.Товар ); // Втулка

// Пример 3. Тоже самое как и в Пример 2, только через строку JSon
Вызвать ( "МойТест", "{'Товар': 'Втулка', 'Цена': '150'}" );

// В теле МойТест обращение к переданным параметрам идет через _
Сообщить ( _.Товар ); // Втулка

Позвать (Run)

Результат = Позвать ( Сценарий, Параметры = неопределено, Приложение = неопределено )

Выполняет запуск сценария в текущей папке сценариев. Метод аналогичен методу Вызвать, с той разницей, что поиск сценария будет производиться начиная с папки, где находится вызывающий сценарий. Таким образом, метод Позвать является краткой записью метода Вызвать.

Пример:

// Полный путь
Вызвать ( "Справочник.Номенклатура.Создать.Параметры" );

// Будет работать, если вызывающий тест находится внутри "Справочник.Номенклатура"
Позвать ( "Создать.Параметры" );

Test.Start

Test.Start ( Сценарий, Приложение = неопределено )

Метод не имеет русскоязычного аналога, потому что является частью программной реализации Тестера

Параметр Тип Значение
Сценарий Строка Полный путь к запускаемому сценарию (каждый сценарий в системе имеет уникальный путь в пределах приложения)
Приложение Строка Имя приложения для поиска запускаемого сценария. Если имя не задано, поиск сценария будет производиться в наборе сценариев приложения вызвавшего сценария. Если сценарий не будет найден, поиск будет продолжен в приложении, установленном по умолчанию в настройках окружения текущего пользователя. Если сценарий опять не будет найден, тогда будет произведена попытка поиска сценария в глобальном наборе сценариев, для которых приложение не задано. Если сценарий найден не будет, Тестер сгенерирует исключение

Запускает на выполнение сценарий. В отличие от методов Вызвать и Позвать, этот метод запускает сценарий с полной инициализацией окружения и глобальных переменных. Метод работает также, как если бы пользователь вручную запустил выбранный сценарий в дереве сценариев.

Метод можно использовать для запуска тестов по расписанию или запуска группы несвязанных тестов.

Пример:

Test.Start ( "Инвойс.Создать" );
Test.Start ( "Инвойс.Провести" );

ЗаписатьОшибку (LogError)

ЗаписатьОшибку ( Текст )

Параметр Тип Значение
Текст Строка Текст ошибки

Выполняет добавление сообщения в журнал ошибок из кода сценария без остановки выполнения сценария.

Пример:

попытка
    Вызвать ( "КакойтоТест", p );
исключение
    ошибка = ОписаниеОшибки ();
    ЗаписатьОшибку ( ошибка );
конецпопытки;

МояВерсия (MyVersion)

Это = МояВерсия ( Выражение )

Параметр Тип Значение
Это Булево Моя версия
Выражение Строка Формат выражения: <Приложение> [<|>|=|<>|<=|>=] <Версия>

Определяет текущую версию приложения, сравнивает с переданной в выражении и возвращает результат сравнения.

Данный метод удобно использовать при групповой разработке решения. Например, программист работает над новым модулем учета ТМЗ и ему требуется в тест Справочники.Номенклатура.Создать добавить заполнение нового поля. Однако, данное поле будет только в его конфигурации, и не будет в конфигурациях других разработчиков, а также, например, в той конфигурации, которая используется для ночного тестирования. Конечно, программист может захватить этот тест и не отпускать его, пока не закончит работу. В этом случае, Тестер будет использовать предыдущую версию данного теста и проблем у других разработчиков не возникнет. Однако, захватывать на долго тесты может быть проблемой для тех программистов, которым нужно внести свои изменения, и возможно – эти изменения, общие для всех участников команды.

Таким образом, для кратковременного захвата теста без потери его работоспособности для других участников процесса, можно использовать данную функцию, для условной установки значений полей, присутствующих только в вашей разработке. Впоследствии, эти условия можно будет удалить, используя поиск по дереву тестов.

Другой подход, это использование Тестера в режиме офф-лайн с обменами тестов через github (см. Выгрузка/Загрузка). Однако, во многих случаях, такие конфликты быстрей решать точечными модификациями общих тестов.

Примечание

Учет версий ведется в справочнике Приложения. Тестер не умеет получать версию запускаемого тестируемого приложения автоматически. Версии для каждого пользователя должны задаваться отдельно, в самом Тестере.

Примеры:

если ( МояВерсия ( "ERP2 = 2.2.1.102 - новый модуль ТМЗ" ) ) тогда
    Ввести ( "!ДополнительныйКоэф", 1.5 );
конецесли;

если ( МояВерсия ( "Бух <= 3.1" ) ) тогда
    // прочие поля в данных версиях недоступны
    возврат;
конецесли;

ОтладкаСтарт (DebugStart)

ОтладкаСтарт ()

После выполнения данного метода, Тестер начнет пошаговое выполнение кода сценария. Фактически, данный метод является условным включением режима отладки сценария.

Пример:

если ( Взять ( "!Сумма" ) = 0 ) тогда
    ОтладкаСтарт ();
конецесли;

Для глобального отключения всех точек останова, используйте служебное свойство Running в структуре Debug.

Пример ниже отключит все точки останова. Например, это может понадобиться при запуске ночных тестов, когда отлаживать будет некому:

если ( ИмяПользователя () = "НочнойТестер" ) тогда
    Debug.Running = true;
конецесли;

ОтладкаСтарт (); // Будет игнорироваться для пользователя "НочнойТестер"

СохранитьОкружение (RegisterEnvironment)

СохранитьОкружение ( ИД )

Параметр Тип Значение
ИД Строка Идентификатор окружения

Сохраняет идентификатор тестового окружения во внутренней базе Тестера. Подробнее о подходе в организации тестового окружения читайте в разделе Структура сценария.

СозданоОкружение (EnvironmentExists)

Создано = СозданоОкружение ( ИД )

Параметр Тип Значение
ИД Строка Идентификатор окружения

Проверяет наличие ранее созданного тестового окружения по переданному идентификатору. Подробнее о подходе в организации тестового окружения читайте в разделе Структура сценария.

Снимок (Screenshot)

Картинка = Снимок ( Заголовок = "", Сжато = неопределено )

Параметр Тип Значение
Картинка ДвоичныеДанные Полученная картинка
Заголовок Строка Регулярное выражение для поиска главного окна тестируемого приложения. Если параметр не задан, Тестер будет искать приложение по заголовку, заданному в профиле тестируемого приложения:


Подробнее о регулярных выражениях читайте на сайте https://www.regular-expressions.info/
Сжато Булево Если значение не задано, качество получаемых скриншотов будет определяться согласно настройке профиля тестируемого приложения:

Возвращает скриншот тестируемого приложения. Дополнительную информацию можно получить в разделе Формирование скриншотов.

ХронографСтарт (RecorderStart)

ХронографСтарт ()

Активирует хронограф. При активации хронографа, инициализируется служебная структура Хронограф, доступ к которой может быть осуществлен из кода сценария.

Структура содержит следующие поля:

Поле Тип
Сценарий (Scenario) СправочникСсылка.Scenario | СправочникСсылка.Versions
Модуль (Module) СправочникСсылка.Modules

Значения полей структуры могут быть использованы для очистки хронографа, см. метод ХронографОчистить.

Однажды активированный хронограф остается активированным в течение всей тестовой сессии или до первого вызова ХронографСтоп. Вложенность вызовов ХронографСтарт / ХронографСтоп не поддерживается.

ХронографСтоп (RecorderStop)

ХронографСтоп ()

Останавливает хронограф. Очистка структуры Хронограф не производится.

ХронографОчистить (RecorderClean)

ХронографОчистить ( Сценарий = неопределено, ПоДату = неопределено, Сессия = неопределено )

Параметр Тип Значение
Сценарий СправочникСсылка.Scenarios | СправочникСсылка.Versions Если параметр задан, будут очищены записи указанного сценария не включая вызываемые из него сценарии. Если параметр не задан, будут очищены записи по всем сценариям.
ПоДату Дата Дата, по которую включительно будут удалены записи. Если значение не задано, будут удалены записи за весь период.
Сессия СправочникСсылка.Sessions Если значение не задано, будут удалены записи текущей сессии пользователя

Производит очистку записей хронографа по переданным параметрам.

Примеры:

// Очищает все записи моей текущей сессии
ХронографОчистить ();

// Очищает все записи текущего сценария.
// Внимание! Метод ХронографСтарт () должен быть предварительно
// вызван для определения структуры Хронограф
ХронографОчистить ( Хронограф.Сценарий );

МаксимизироватьОкно (MaximizeWindow)

МаксимизироватьОкно ( Заголовок = "" )

Параметр Тип Значение
Заголовок Строка Регулярное выражение для поиска главного окна тестируемого приложения. Если параметр не задан, Тестер будет искать приложение по заголовку, заданному в профиле тестируемого приложения:


Подробнее о регулярных выражениях читайте на сайте https://www.regular-expressions.info/

Разворачивает окно приложения по переданному заголовку. Работа метода может зависеть от прав доступа к процессу обрабатываемого окна. Если метод максимизации окна не отрабатывает, попробуйте перезапустить Тестер от имени администратора системы.

МинимизироватьОкно (MinimizeWindow)

МинимизироватьОкно ( Заголовок = "" )

Параметр Тип Значение
Заголовок Строка Регулярное выражение для поиска главного окна тестируемого приложения. Если параметр не задан, Тестер будет искать приложение по заголовку, заданному в профиле тестируемого приложения:


Подробнее о регулярных выражениях читайте на сайте https://www.regular-expressions.info/

Сворачивает окно приложения по переданному заголовку. Работа метода может зависеть от прав доступа к процессу обрабатываемого окна. Если метод максимизации окна не отрабатывает, попробуйте перезапустить Тестер от имени администратора системы.

ВСтудию (VStudio)

ВСтудию ( Текст )

Параметр Тип Значение
Текст Строка Текст сообщения

Выводит сообщение в список сообщений Тестера, а также в панель Output текстового редактора Visual Studio Code. Подробнее см. в разделе Интеграция с Visual Studio Code.

Пример:

1С:Предприятие:

Visual Studio Code:

УстановитьПриложение (PinApplication)

УстановитьПриложение ( Имя )

Параметр Тип Значение
Имя Строка Идентификатор приложения согласно справочника Приложения

Устанавливает в тестируемом окружении текущее приложение.

Данный метод может быть использован в делегируемых сценариях (см. Механизм заданий) для задания агенту текущего приложения, с которым ему нужно работать.

Например, вы тестируете два приложения. Для каждого приложения у вас разрабатывается свой набор тестов. Также, у вас есть агент, который по заданию запускает наборы тестов для данных приложений.

Чтобы агент знал, с каким приложением он работает, ему нужно установить такое приложение текущим, перед выполнением сценариев. Такая необходимость связана с тем, что часть разрабатываемых тестов может быть не привязана к конкретному приложению (например, тестирование общих механизмов).

Вызов метода сопровождается отключением тестируемого приложения и модификацией структуры СвойстваПриложения (AppData) и обновлением глобальных переменных (ИмяПриложения и другие), за исключением случаев, когда приложение не было подключено или в параметр метода передано приложение, которое было текущим до вызова.

УстановитьВерсию (SetVersion)

УстановитьВерсию ( Версия, Приложение = неопределено )

Параметр Тип Значение
Версия Строка Название существующей версии приложения. Версии создаются в справочнике Приложения. Если версия не будет найдена, будет вызвано исключение.
Приложение Строка Идентификатор приложения согласно справочника Приложения. Если значение не задано, версия будет установлена для текущего приложения пользователя.

Устанавливает текущую версию приложения. Данный метод может быть использован в делегируемых сценариях (см. Механизм заданий) совместно с методом МояВерсия для задания агенту текущей версии тестируемого приложения.

Например, вы хотите запустить сценарий на тестирование удаленно, делегируя агенту. Для того, чтобы агент знал, какую именно информационную базу необходимо запустить на тестирование, ваш скрипт может явно задать версию, а в сценарии запуска, определить параметры информационной базы путем анализа версии методом МояВерсия.

НовоеЗадание (NewJob)

НовоеЗадание ( Агент, Сценарий, Приложение = неопределено, Параметры = неопределено, Компьютер = неопределено, Комментарий = неопределено )

Параметр Тип Значение
Агент Строка Имя пользователя-агента, который будет выполнять задание
Сценарий Строка Полный путь к запускаемому сценарию (каждый сценарий в системе имеет уникальный путь в пределах приложения)
Приложение Строка Идентификатор приложения согласно справочника Приложения. Если значение не задано, поиск сценария будет производиться среди общих сценариев. Если сценарий найден не будет, Тестер сгенерирует исключение
Параметры Любой Любой сериализуемый объект. Тестер будет производить сериализацию параметра в JSON методом Conversion.ToJSON. Затем, эти параметры будут преобразовываться обратно перед запуском целевого сценария задания. В целевом сценарии, переданные параметры будут доступны в переменной _
Компьютер Строка Идентификатор компьютера, где должно выполняться задание. Если параметр не задан, задание будет выполнено первым свободным агентом, указанным в параметре вызова процедуры
Комментарий Строка Произвольная дополнительная информация, будет сохранена в поле Комментарий созданного задания

Создает делегированное задание (см. Механизм заданий), которое будет сразу принято к выполнению свободным агентом. Метод доступен как в клиентском, так и серверном контексте.

Пример:

Создаем задание для пользователя Тестер:

параметры = новый Структура ( "Параметр1, Параметр2", "Привет", "мир!" );
НовоеЗадание ( "Тестер", "МойСценарий", , параметры );

В сессии пользователя Тестер, в теле сценария МойСценарий можно будет обратиться к переданным параметрам вот так:

// Привет мир!
Сообщить ( _.Параметр1 + " " + _.Параметр2 );

ПерейтиВКонсоль (GotoConsole)

ПерейтиВКонсоль ()

Метод перенаправляет текущую сессию в основную консоль сервера. Метод имеет смысл вызывать в сценариях, выполняемых на удаленных серверах, где тестирование производится по запросу или регламенту. Главную проблему, которую решает данных метод – это формирование скриншотов на удаленных серверах. Подробнее см. Почему скриншот формируется в виде черного квадрата?

Заявить (Assert)

Заявить ( Что, Детали = "" )

Параметр Тип Значение
Что Любой Проверяемое значение
Детали Строка Детали проверки, которые будут дополнять сообщение об ошибке в случае невыполнения текучего условия.

Метод для работы с библиотекой текучих выражений по тестированию значений. Текучие выражения позволяют выполнять проверку сразу нескольких условий, записанных одной строкой программного кода. В случае, если проверяемое в выражении условие не выполняется, Тестер генерирует исключение с выдачей соответствующего сообщения; выполнение сценария прекращается.

Текучие функции

Проверка на условие

Русский Английский
ЭтоИстина () IsTrue ()
ЭтоЛожь () IsFalse ()
Равно ( Значение ) Equal ( Value )
НеРавно ( Значение ) NotEqual ( Value )
Больше ( Значение ) Greater ( Value )
БольшеИлиРавно ( Значение ) GreaterOrEqual ( Value )
Меньше ( Значение ) Less ( Value )
МеньшеИлиРавно ( Значение ) LessOrEqual ( Value )

Примеры:

// "0 + " для автоматического получения числа из поля с суммой
сумма = 0 + Взять ( "!СуммаСНДС" );

// Первый вариант
Заявить ( сумма ).Равно ( 1500 );

// Второй вариант
Заявить ( сумма = 1500 ).ЭтоИстина ();

Проверка (не)заполненности

Русский Английский
Заполнено () Filled ()
Пусто () Empty ()

Проверка на null или неопределено

Русский Английский
ЭтоNull () IsNull ()
ЕстьNull ()
ЭтоНеопределено () IsUndefined ()

Значение не null и не неопределено

Русский Английский
Существует () Exists ()

Проверка на вхождение в диапазон

Русский Английский
Между ( Старт, Финиш ) Between ( Start, Finish )

Проверка на вхождение в объект

Если объектом является строка, функция будет искать подстроку. Если объектом является коллекция (массив, список значений, структура, соответствие, или их фиксированные аналоги) будет проверяться вхождение значения в коллекцию:

Русский Английский
Содержит ( Значение ) Contains ( Value )

Примеры:

// Строка
покупатель = Взять ( "!Покупатель" );
Заявить ( покупатель ).Содержит ( "LTD" );

// Массив
список = новый Массив ();
список.Добавить ( Взять ( "!Статус1" ) );
список.Добавить ( Взять ( "!Статус2" ) );
список.Добавить ( Взять ( "!Статус3" ) );
Заявить ( список ).Содержит ( "Одобрено" );

Проверяет на длину или размер

Русский Английский
Вмещает ( Значение ) Has ( Value )
ИмеетДлину ( Значение )

Если в качестве параметра передана строка, будет произведена проверка длины строки. Если в качестве параметра передана коллекция (массив, список значений, структура, соответствие, или их фиксированные аналоги), будет проверено количество элементов в коллекции.

Инверсия условия

Русский Английский
Не_ () Not_ ()

Метод-префикс для реверса следующего за ним условия.

Например:

Заявить ( истина ).Не_ ().ЭтоЛожь ();

Примеры текучих функций

течьНаКлиенте ();
течьНаСервере ();

&НаКлиенте
Процедура течьНаКлиенте ()

    Заявить ( 2 ).Равно ( 1 + 1 );
    Заявить ( 2 ).Не_ ().Равно ( 3 ).Равно ( 2 ).Не_ ().Равно ( 4 );
    Заявить ( 2 ).Больше ( 1 );
    Заявить ( 2 ).Заполнено ();
    Заявить ( неопределено ).Не_ ().Заполнено ();
    Заявить ( неопределено).Пусто ();
    Заявить ( 0 ).Существует ();
    Заявить ( null ).Не_ ().Существует ();
    Заявить ( 2 ).Не_ ().Между ( 10, 15 ).Между ( 0, 5 );
    Заявить ( "Строка", "Содержание в строке" ).Содержит ( "к" ).Не_ ().Содержит ( "2" );
    Заявить ( новый Структура ( "п1, п2, п3", 1, 2, 3 ), "Содержание в структуре").Содержит ( 2 );

    массив = новый Массив (); 
    массив.Добавить ( 1 );
    массив.Добавить ( 3 );
    массив.Добавить ( 5 );
    Заявить ( массив).Вмещает ( 3 ).Не_ ().Вмещает ( 5 );

КонецПроцедуры

&НаСервере
Процедура течьНаСервере ()

    Заявить ( 2 ).Равно ( 1 + 1 );
    Заявить ( 2 ).Не_ ().Равно ( 3 ).Равно ( 2 ).Не_ ().Равно ( 4 );
    Заявить ( 2 ).Больше ( 1 );
    Заявить ( 2 ).Заполнено ();
    Заявить ( неопределено ).Не_ ().Заполнено ();
    Заявить ( неопределено).Пусто ();
    Заявить ( 0 ).Существует ();
    Заявить ( null ).Не_ ().Существует ();
    Заявить ( 2 ).Не_ ().Между ( 10, 15 ).Между ( 0, 5 );
    Заявить ( "Строка", "Содержание в строке" ).Содержит ( "к" ).Не_ ().Содержит ( "2" );
    Заявить ( новый Структура ( "п1, п2, п3", 1, 2, 3 ), "Содержание в структуре").Содержит ( 2 );

    массив = новый Массив (); 
    массив.Добавить ( 1 );
    массив.Добавить ( 3 );
    массив.Добавить ( 5 );
    Заявить ( массив).Вмещает ( 3 ).Не_ ().Вмещает ( 5 );

КонецПроцедуры

ПрогрессПоказать (ProgressShow)

ПрогрессПоказать ()

Метод производит включение отображения диалогового окна с прогрессом выполнения сценария. При запуске тестов, индикация включена по умолчанию, и явный вызов этого метода не требуется.

ПрогрессСкрыть (ProgressHide)

ПрогрессСкрыть ()

Метод отключает отображение окна прогресса выполнения сценария.

ПеременнаяСреды (SystemVariable)

Значение = ПеременнаяСреды ( Имя )

Параметр Тип Значение
Значение Строка Значение переменной
Имя Строка Имя запрашиваемого параметра среды

Функция возвращает значение параметра системного окружения.

Пример:

папка = ПеременнаяСреды ( "USERPROFILE" );
ВСтудию ( папка );