Возвращает текущее значение признака модифицированности для тестируемой формы
Синтаксис
ТекущаяМодифицированность()Полное описание, параметры и ограничения
ТестируемаяФорма.ТекущаяМодифицированность (TestedForm.CurrentModified)
ТестируемаяФорма (TestedForm)
ТекущаяМодифицированность (CurrentModified)
Доступен, начиная с версии 8.3.3.
Синтаксис:
ТекущаяМодифицированность()
Возвращаемое значение:
Тип: Булево.
Истина - объект модифицирован; Ложь в противном случае.
Описание:
Возвращает текущее значение признака модифицированности для тестируемой формы
Доступность:
Тонкий клиент, толстый клиент.
Использование в версии:
Доступен, начиная с версии 8.3.3.
Методическая информация
Практические примеры
Прочитать паспорт собственной формы и найти её элементы
Проверяем название, поиск, непосредственных детей, панель и кнопку по умолчанию, не нажимая её.
Где и как запускать
Полный модуль формы менеджера /TESTMANAGER; fixture открыт отдельно в /TESTCLIENT.
Подготовка
Только собственная пустая конфигурация УчебнаяКонфигурацияСинтаксиса. Для первого урока создайте новую внешнюю обработку УчебныйИнтерфейсТестирования с пустой основной управляемой формой Форма.
Запустите два отдельных тонких клиента собственной учебной базы: тестируемый с /TESTCLIENT -TPort15380, менеджер с /TESTMANAGER. Порт 15380 — собственный учебный; убедитесь, что на нём не работает другой клиент. Не подключайте менеджер к рабочей базе/чужому приложению.
В fixture назначьте событие ПриСозданииНаСервере одноимённому обработчику и вставьте весь модуль первого урока. Элементы и реквизиты вручную не создавайте. Откройте эту обработку в /TESTCLIENT.
Каждый следующий урок — полный отдельный модуль формы другой обработки менеджера /TESTMANAGER с командой ВыполнитьПример. Перед каждым тестом заново откройте fixture; не выполняйте тест на изменённом состоянии предыдущего урока.
Исходно первое поле Книга, второе Ручка, статус Готово, выбор book/Книга. Любые кнопки/ссылки действуют только на этой памяти формы; нет записи базы и внешних URL.
Это код штатного механизма тестирования 1С, не браузерная проверка HTML. В данном окружении выполнение UI-тестов в настоящей 1С не подтверждено.
&НаКлиенте
Процедура ВыполнитьПример(Команда)
Приложение = Новый ТестируемоеПриложение("127.0.0.1", 15380);
Приложение.УстановитьСоединение();
ИсходныйЛимит = Неопределено;
ОшибкаТеста = "";
Попытка
Форма = Приложение.ПолучитьОбъект(Тип("ТестируемаяФорма"), "Учебная форма guide-owned-form-2026", , 10);
ИсходныйЛимит = Приложение.ПолучитьМаксимальноеВремяВыполненияДействия();
Приложение.УстановитьМаксимальноеВремяВыполненияДействия(10);
Форма.Активизировать();
Сообщить(Форма.ТекстЗаголовка = "Учебная форма guide-owned-form-2026");
Сообщить(Не ПустаяСтрока(Форма.ИмяФормы));
Сообщить(Форма.ТекущаяДоступность());
Сообщить(Не Форма.ТекущаяМодифицированность());
Сообщить(Не Форма.ТекущееТолькоПросмотр());
ПервоеПоле = Форма.ПолучитьОбъект(Тип("ТестируемоеПолеФормы"), , "ПолеПервое", 10);
Сообщить(ПервоеПоле.ПолучитьОтображаемыйТекст() = "Книга");
Сообщить(Форма.НайтиОбъект(Тип("ТестируемоеПолеФормы"), , "НеСуществуетGuideOwnedПоле", 1) = Неопределено);
Поля = Форма.НайтиОбъекты(Тип("ТестируемоеПолеФормы"), , "Поле*", 1);
Сообщить(Поля.Количество() = 4);
Дети = Форма.ПолучитьПодчиненныеОбъекты();
Сообщить("Непосредственных объектов: " + Строка(Дети.Количество()));
Сообщить(Форма.ПолучитьРодителя());
Панель = Форма.ПолучитьКоманднуюПанель();
Сообщить(ТипЗнч(Панель) = Тип("ТестируемаяГруппаФормы"));
СобственнаяПанель = Форма.ПолучитьОбъект(Тип("ТестируемаяГруппаФормы"), , "УчебнаяПанель", 10);
Сообщить(СобственнаяПанель.Имя = "УчебнаяПанель");
КнопкаПоУмолчанию = Форма.НайтиКнопкуПоУмолчанию();
Если КнопкаПоУмолчанию = Неопределено Тогда
ВызватьИсключение "В собственном fixture нет кнопки по умолчанию";
КонецЕсли;
Сообщить(КнопкаПоУмолчанию.Имя = "КнопкаУчебноеЗакрытие");
Исключение
ОшибкаТеста = ОписаниеОшибки();
КонецПопытки;
ОшибкиЗавершения = ЗавершитьСобственныйУчебныйТест(Приложение, ИсходныйЛимит);
Если Не ПустаяСтрока(ОшибкаТеста) Или Не ПустаяСтрока(ОшибкиЗавершения) Тогда
ВызватьИсключение "Ошибка учебного UI-теста: " + ОшибкаТеста + " " + ОшибкиЗавершения;
КонецЕсли;
Сообщить("Сценарий завершён без исключения. Отдельно сверяйте контрольные Истина и видимые данные учебного клиента");
КонецПроцедуры
&НаКлиенте
Функция ЗавершитьСобственныйУчебныйТест(Приложение, ИсходныйЛимит)
ОшибкиЗавершения = "";
Если ТипЗнч(ИсходныйЛимит) = Тип("Число") Тогда
Попытка
Приложение.УстановитьМаксимальноеВремяВыполненияДействия(ИсходныйЛимит);
Исключение
ОшибкиЗавершения = "Не восстановлен лимит действий: " + ОписаниеОшибки();
КонецПопытки;
КонецЕсли;
Попытка
Приложение.РазорватьСоединение();
Исключение
ОшибкиЗавершения = ОшибкиЗавершения + " Не разорвано соединение: " + ОписаниеОшибки();
КонецПопытки;
Возврат ОшибкиЗавершения;
КонецФункцииРазбор по шагам
Тест подключается только к своему 127.0.0.1:15380 и получает точную собственную форму с таймаутом 10 секунд.
ИмяФормы — имя метаданных, ТекстЗаголовка — видимый заголовок. Не подменяем одно другим и не угадываем имя внешней обработки по подписи.
ПолучитьОбъект используется для обязательного поля, НайтиОбъект для ожидаемого отсутствия, НайтиОбъекты для всех четырёх полей внутри уже выбранной собственной формы.
Дети — непосредственные объекты, а не все потомки рекурсивно. Родитель выводится диагностически; состав иерархии не выдаётся за гарантированный тип окна.
GetCommandBar формы возвращает её командную панель; она не объявляется той же произвольно добавленной группой УчебнаяПанель. Собственная группа отдельно находится по точному имени.
Кнопка по умолчанию найдена и проверена по имени, но здесь не нажата.
Доступность, ТолькоПросмотр и модифицированность — разные состояния; fixture открыт заново и исходно немодифицирован.
Исходный лимит действий восстанавливается, соединение отдельно разрывается и при ошибке. Разрыв соединения не закрывает весь тестируемый клиент.
Как проверить результат
Одиннадцать логических проверок ожидаются Истина; две отдельные диагностики описывают детей и родителя.
Собственная форма осталась открыта, Книга и Ручка не изменились.
Ожидаемый результат
Показаны настоящий объект тестируемой формы, стратегии поиска и её собственная панель.
На что обратить внимание
Наличие кнопки по умолчанию не разрешает нажимать её в чужой форме.
Если поле редактировали вручную, исходное состояние восстановите переоткрытием fixture.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Выбрать Ручка в собственном открытом меню
Нажимаем только свою кнопку меню и выбираем видимую подпись; экспортный callback устанавливает значение pen в статусе.
Где и как запускать
Полный модуль формы менеджера /TESTMANAGER; fixture открыт отдельно в /TESTCLIENT.
Подготовка
Только собственная пустая конфигурация УчебнаяКонфигурацияСинтаксиса. Для первого урока создайте новую внешнюю обработку УчебныйИнтерфейсТестирования с пустой основной управляемой формой Форма.
Запустите два отдельных тонких клиента собственной учебной базы: тестируемый с /TESTCLIENT -TPort15380, менеджер с /TESTMANAGER. Порт 15380 — собственный учебный; убедитесь, что на нём не работает другой клиент. Не подключайте менеджер к рабочей базе/чужому приложению.
В fixture назначьте событие ПриСозданииНаСервере одноимённому обработчику и вставьте весь модуль первого урока. Элементы и реквизиты вручную не создавайте. Откройте эту обработку в /TESTCLIENT.
Каждый следующий урок — полный отдельный модуль формы другой обработки менеджера /TESTMANAGER с командой ВыполнитьПример. Перед каждым тестом заново откройте fixture; не выполняйте тест на изменённом состоянии предыдущего урока.
Исходно первое поле Книга, второе Ручка, статус Готово, выбор book/Книга. Любые кнопки/ссылки действуют только на этой памяти формы; нет записи базы и внешних URL.
Это код штатного механизма тестирования 1С, не браузерная проверка HTML. В данном окружении выполнение UI-тестов в настоящей 1С не подтверждено.
&НаКлиенте
Процедура ВыполнитьПример(Команда)
Приложение = Новый ТестируемоеПриложение("127.0.0.1", 15380);
Приложение.УстановитьСоединение();
ИсходныйЛимит = Неопределено;
ОшибкаТеста = "";
Попытка
Форма = Приложение.ПолучитьОбъект(Тип("ТестируемаяФорма"), "Учебная форма guide-owned-form-2026", , 10);
ИсходныйЛимит = Приложение.ПолучитьМаксимальноеВремяВыполненияДействия();
Приложение.УстановитьМаксимальноеВремяВыполненияДействия(10);
КнопкаМеню = Форма.ПолучитьОбъект(Тип("ТестируемаяКнопкаФормы"), , "КнопкаУчебноеМеню", 10);
КнопкаМеню.Нажать();
Форма.ВыполнитьВыборИзМеню("Ручка");
ПараметрыПроверки = Новый Структура("Форма,ИмяПоля,ОжидаемыйТекст", Форма, "ПолеУчебногоСтатуса", "Меню: pen");
Условие = Новый ОписаниеОповещения("УчебноеПолеДостиглоСостояния", ЭтотОбъект, ПараметрыПроверки);
Сообщить(Приложение.ОжидатьСостояния(Условие, 5));
ПолеСтатуса = Форма.ПолучитьОбъект(Тип("ТестируемоеПолеФормы"), , "ПолеУчебногоСтатуса", 10);
Сообщить(ПолеСтатуса.ПолучитьОтображаемыйТекст() = "Меню: pen");
Сообщить(Не Форма.ТекущаяМодифицированность());
Исключение
ОшибкаТеста = ОписаниеОшибки();
КонецПопытки;
ОшибкиЗавершения = ЗавершитьСобственныйУчебныйТест(Приложение, ИсходныйЛимит);
Если Не ПустаяСтрока(ОшибкаТеста) Или Не ПустаяСтрока(ОшибкиЗавершения) Тогда
ВызватьИсключение "Ошибка учебного UI-теста: " + ОшибкаТеста + " " + ОшибкиЗавершения;
КонецЕсли;
Сообщить("Сценарий завершён без исключения. Отдельно сверяйте контрольные Истина и видимые данные учебного клиента");
КонецПроцедуры
&НаКлиенте
Функция ЗавершитьСобственныйУчебныйТест(Приложение, ИсходныйЛимит)
ОшибкиЗавершения = "";
Если ТипЗнч(ИсходныйЛимит) = Тип("Число") Тогда
Попытка
Приложение.УстановитьМаксимальноеВремяВыполненияДействия(ИсходныйЛимит);
Исключение
ОшибкиЗавершения = "Не восстановлен лимит действий: " + ОписаниеОшибки();
КонецПопытки;
КонецЕсли;
Попытка
Приложение.РазорватьСоединение();
Исключение
ОшибкиЗавершения = ОшибкиЗавершения + " Не разорвано соединение: " + ОписаниеОшибки();
КонецПопытки;
Возврат ОшибкиЗавершения;
КонецФункции
&НаКлиенте
Функция УчебноеПолеДостиглоСостояния(ДополнительныеПараметры) Экспорт
Поле = ДополнительныеПараметры.Форма.НайтиОбъект(Тип("ТестируемоеПолеФормы"), , ДополнительныеПараметры.ИмяПоля, 1);
Если Поле = Неопределено Тогда
Возврат Ложь;
КонецЕсли;
Возврат Поле.ПолучитьОтображаемыйТекст() = ДополнительныеПараметры.ОжидаемыйТекст;
КонецФункцииРазбор по шагам
Тест подключается только к своему 127.0.0.1:15380 и получает точную собственную форму с таймаутом 10 секунд.
Кнопка подготовленного fixture открывает только два значения. Меню привязано к своему полю, а не кнопке командной панели: такая привязка запрещена в API ПоказатьВыборИзМеню.
ВыполнитьВыборИзМеню принимает представление Ручка, не внутренний код pen. Можно передавать индекс с нуля, но подпись здесь устойчивее.
Обработка результата относится к fixture. Менеджер ограниченно ожидает статус через экспортную функцию, не крутит бесконечный цикл.
Метод не поддерживает выбор из вложенного контекстного меню. В fixture меню плоское, без вложений.
Исходный лимит действий восстанавливается, соединение отдельно разрывается и при ошибке. Разрыв соединения не закрывает весь тестируемый клиент.
Как проверить результат
Три проверки ожидаются Истина; callback записал Меню: pen только в собственный реквизит формы.
В рабочую базу не записано ничего, сторонняя команда меню не выбиралась.
Ожидаемый результат
Есть полный пример штатного открытия, тестового выбора и проверки завершившегося callback.
На что обратить внимание
Нельзя выполнять выбор, если собственное меню не открыто.
Исходно Готово и правильный заголовок обязательны; при ошибке меню своего fixture закройте вручную и переоткройте его.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.