Расширение тестируемого поля формы для поля ввода.Создать

Методы · Create

Создает новый элемент из поля ввода (аналогично нажатию кнопки "Создать" в списке выбора).

Синтаксис

Создать()
Полное описание, параметры и ограничения

Расширение тестируемого поля формы для поля ввода.Создать (Tested form field extension for an input field.Create)

Расширение тестируемого поля формы для поля ввода (Tested form field extension for an input field)

Создать (Create)

Доступен, начиная с версии 8.3.6.

Синтаксис:
Создать()
Описание:

Создает новый элемент из поля ввода (аналогично нажатию кнопки "Создать" в списке выбора).

Доступность:

Тонкий клиент, толстый клиент.

Использование в версии:

Доступен, начиная с версии 8.3.6.

Методическая информация

Практические примеры

Открыть свою карточку и показать новый черновик без записи каталога

Источник — настоящая собственная ссылка BOOK. Методы инициируют реальные события поля; собственные обработчики отменяют стандартное открытие/создание и показывают подготовленную область карточки в этой форме.

Где и как запускать

Полный модуль своей формы МенеджерВвода85.Пульт: имя своей конфигурации возвращает отдельная серверная функция без контекста, UI выполняется в /TESTMANAGER, тонкий клиент 8.5.1.1343. Реальный собственный /TESTCLIENT этой же базы УчебныйВыборВвода85 на вручную проверенном 127.0.0.1:15383; ни один модуль не запускался.

Подготовка

  1. Используйте только свою новую конфигурацию УчебныйВыборВвода85, язык Русский, управление Такси, платформа 8.5.1.1343. Создайте свой справочник УчебныеКниги85 по урокам выбора: иерархия групп и элементов, код Строка 10 без автонумерации, реквизиты МеткаСтенда и Секция типа Строка 30.

  2. Только в своём стенде вручную подготовьте группу BOOKGROUP и элемент BOOK/Книга, МеткаСтенда = owned-input85, Секция = Книги. Тест не создаёт и не записывает даже собственную книгу: использует заранее подготовленную настоящую ссылку.

  3. Создайте общую управляемую форму УчебныйВводТест85. Вставьте полный дополнительный модуль ниже и назначьте ПриСозданииНаСервере. Это испытуемая форма, основной модуль урока в неё не вставляйте.

  4. Реквизиты испытуемой формы: МеткаСеанса, НазваниеКниги85, УчебныйВыпадающий85, УчебныйСписок85, ИтогВыбора85 и Карточка85 — Строка 100; УчебноеКоличество85, Открытий85, Созданий85 — Число 6.0; УчебнаяКнига85 — СправочникСсылка.УчебныеКниги85.

  5. На испытуемой форме создайте отдельные поля ввода УчебныйВыпадающий85, УчебныйСписок85, УчебноеКоличество85 и УчебнаяКнига85 с одноимёнными ПутьКДанным. Это не колонки таблицы. Покажите МеткаСеанса, ИтогВыбора85, Открытий85 и Созданий85 как отдельные поля только для просмотра с одноимёнными путями.

  6. Для числовых полей задайте Формат ЧГ=0;ЧДЦ=0, чтобы контрольные представления были 3, 4, 0, 1 без группировки и дробной части. Для редактируемых полей доступность/видимость включены, ТолькоПросмотр выключено.

  7. Добавьте обычную группу КарточкаКниги85 и внутри поле Карточка85 только для просмотра. События Открытие/Создание показывают эту реальную собственную область и её данные; они не открывают стандартную форму записи каталога.

  8. Создайте команду и кнопку СброситьСвойВвод85 с одноимённым действием, ИзменяетСохраняемыеДанные = Ложь. Другие события поля назначаются кодом fixture, вручную их не привязывайте.

  9. Создайте собственную общую команду без параметра ОткрытьУчебныйВвод85 с дополнительным модулем запуска ниже; покажите её в единственной учебной подсистеме. Она открывает только подготовленную ОбщаяФорма.УчебныйВводТест85.

  10. Создайте обработку МенеджерВвода85 с управляемой формой Пульт, реквизитами Согласие (Булево), МеткаСеанса (Строка 100), Итог (Строка неограниченной длины). Команда и кнопка ВыполнитьСвойТест85, действие ВыполнитьСвойТест85. Основной код урока — полный модуль этого менеджера; назначьте ПриОткрытии(Отказ).

  11. Покажите флажок согласия, редактируемую фактическую метку и многострочный Итог только для просмотра. Для каждого урока используйте отдельную копию менеджера; одноимённые процедуры не вставляйте дважды.

  12. Самостоятельно обновите только свой стенд. Если позже решите выполнить ручной UI-тест, запустите свои тонкие клиенты с /TESTCLIENT -TPort15383 и /TESTMANAGER. Свободный локальный порт 15383 должен принадлежать только этому собственному тестовому клиенту. Код клиентов не запускает и порт не меняет.

  13. В своём /TESTCLIENT откройте испытуемую форму, скопируйте её настоящий UUID в менеджер, подтвердите согласие. Метку не создавайте в менеджере вместо источника. Не запускайте опыт в production или против чужого тестового приложения.

  14. Эти модули здесь не выполнялись: runtimeVerifiedScenarios=0, никаких 1С, GUI, соединений и кликов не запускалось. Авторские проверки статические, фактический выбор и действия интерфейса ещё требуют отдельного разрешённого ручного теста.

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

&НаКлиенте
Процедура ПриОткрытии(Отказ)
    Согласие = Ложь;
    МеткаСеанса = "";
    Итог = "Подготовьте свой /TESTCLIENT и скопируйте реальный UUID формы";
КонецПроцедуры

&НаКлиенте
Функция СвоеПоле85(Форма, Имя)
    Поле = Форма.ПолучитьОбъект(Тип("ТестируемоеПолеФормы"), , Имя, 10);
    Если Поле.Имя <> Имя Или Поле.Вид <> ВидПоляФормы.ПолеВвода Тогда
        ВызватьИсключение "Нужно именно своё отдельное поле ввода";
    КонецЕсли;
    Если Не Поле.ТекущаяВидимость() Или Не Поле.ТекущаяДоступность() Или Поле.ТекущееТолькоПросмотр() Тогда
        ВызватьИсключение "Своё поле должно быть видно, доступно и редактируемо";
    КонецЕсли;
    Возврат Поле;
КонецФункции

&НаКлиенте
Функция СвоеПредставление85(Форма, Имя)
    Поле = Форма.ПолучитьОбъект(Тип("ТестируемоеПолеФормы"), , Имя, 10);
    Возврат Поле.ПолучитьПредставлениеДанных();
КонецФункции

&НаКлиенте
Процедура ВыполнитьСвойТест85(Команда)
    Если Не Согласие Тогда
        ВызватьИсключение "Нужны свой стенд и явное согласие на UI-опыт только в своей форме";
    КонецЕсли;
    UUIDМетки = Новый УникальныйИдентификатор(МеткаСеанса);
    Если Строка(UUIDМетки) <> МеткаСеанса Тогда
        ВызватьИсключение "Нужно точное фактическое значение UUID своей формы";
    КонецЕсли;
    Приложение = Новый ТестируемоеПриложение("127.0.0.1", 15383);
    Форма = Неопределено;
    Поле = Неопределено;
    ИсходныйЛимит = Неопределено;
    ОшибкаТеста = "";
    ОшибкиЗавершения = "";
    Итог = "Результат ещё не получен";
    Попытка
        Приложение.УстановитьСоединение();
        ИсходныйЛимит = Приложение.ПолучитьМаксимальноеВремяВыполненияДействия();
        Приложение.УстановитьМаксимальноеВремяВыполненияДействия(10);
        Заголовок = "Учебный ввод85 " + МеткаСеанса;
        Формы = Приложение.НайтиОбъекты(Тип("ТестируемаяФорма"), Заголовок, , 10);
        Если ТипЗнч(Формы) <> Тип("ФиксированныйМассив") Или Формы.Количество() <> 1 Тогда
            ВызватьИсключение "Нужна ровно одна настоящая собственная форма этого сеанса";
        КонецЕсли;
        Форма = Приложение.ПолучитьОбъект(Тип("ТестируемаяФорма"), Заголовок, , 10);
        Если СвоеПредставление85(Форма, "МеткаСеанса") <> МеткаСеанса Тогда
            ВызватьИсключение "Реальная метка источника не совпала";
        КонецЕсли;
        Если СвоеПредставление85(Форма, "УчебныйВыпадающий85") <> "Книга"
            Или СвоеПредставление85(Форма, "ИтогВыбора85") <> "Книга"
            Или СвоеПредставление85(Форма, "УчебноеКоличество85") <> "3"
            Или СвоеПредставление85(Форма, "Открытий85") <> "0"
            Или СвоеПредставление85(Форма, "Созданий85") <> "0" Тогда
            ВызватьИсключение "Сначала вручную сбросьте собственный опыт; чужие изменения не затираются";
        КонецЕсли;
        Поле = СвоеПоле85(Форма, "УчебнаяКнига85");
        Поле.Открыть();
        Если СвоеПредставление85(Форма, "Открытий85") <> "1"
            Или СвоеПредставление85(Форма, "Карточка85") <> "Просмотр: Книга" Тогда
            ВызватьИсключение "Реальное открытие своей области просмотра не подтвердилось";
        КонецЕсли;
        Поле.Создать();
        Если СвоеПредставление85(Форма, "Созданий85") <> "1"
            Или СвоеПредставление85(Форма, "Карточка85") <> "Новый учебный черновик без записи" Тогда
            ВызватьИсключение "Реальная собственная команда черновика не подтвердилась";
        КонецЕсли;
        Итог = "Собственная область показала просмотр и новый черновик; стандартная запись каталога не вызывалась";
    Исключение
        ОшибкаТеста = ОписаниеОшибки();
    КонецПопытки;
    Если Поле <> Неопределено Тогда
        Попытка
            Если Поле.ВыпадающийСписокОткрыт() Тогда
                Поле.ЗакрытьВыпадающийСписок();
            КонецЕсли;
        Исключение
            ОшибкиЗавершения = "Закрытие своего списка не подтверждено: " + ОписаниеОшибки();
        КонецПопытки;
    КонецЕсли;
    Если Форма <> Неопределено Тогда
        Попытка
            Сброс = Форма.ПолучитьОбъект(Тип("ТестируемаяКнопкаФормы"), , "СброситьСвойВвод85", 10);
            Сброс.Нажать();
            Если СвоеПредставление85(Форма, "УчебныйВыпадающий85") <> "Книга"
                Или СвоеПредставление85(Форма, "ИтогВыбора85") <> "Книга"
                Или СвоеПредставление85(Форма, "УчебноеКоличество85") <> "3"
                Или СвоеПредставление85(Форма, "Открытий85") <> "0"
                Или СвоеПредставление85(Форма, "Созданий85") <> "0" Тогда
                ВызватьИсключение "Свои исходные данные не восстановлены";
            КонецЕсли;
        Исключение
            ОшибкиЗавершения = ОшибкиЗавершения + " Не выполнен собственный сброс: " + ОписаниеОшибки();
        КонецПопытки;
    КонецЕсли;
    Если ТипЗнч(ИсходныйЛимит) = Тип("Число") Тогда
        Попытка
            Приложение.УстановитьМаксимальноеВремяВыполненияДействия(ИсходныйЛимит);
        Исключение
            ОшибкиЗавершения = ОшибкиЗавершения + " Не восстановлен лимит: " + ОписаниеОшибки();
        КонецПопытки;
    КонецЕсли;
    Попытка
        Приложение.РазорватьСоединение();
    Исключение
        ОшибкиЗавершения = ОшибкиЗавершения + " Разрыв соединения не подтверждён: " + ОписаниеОшибки();
    КонецПопытки;
    Если ОшибкаТеста <> "" Или ОшибкиЗавершения <> "" Тогда
        Итог = "Опыт не завершён успешно: " + ОшибкаТеста + " " + ОшибкиЗавершения;
        ВызватьИсключение Итог;
    КонецЕсли;
    Итог = Итог + "; свои данные восстановлены, лимит восстановлен, соединение разорвано; клиент остаётся открытым";
КонецПроцедуры


УчебныйВводТест85

УчебныйВыборВвода85 → Общие формы → УчебныйВводТест85 → Модуль

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Если Метаданные.ОбщиеРеквизиты.Количество() <> 0 Тогда
        ВызватьИсключение "Нужен только собственный новый неразделённый стенд УчебныйВыборВвода85";
    КонецЕсли;
    УчебнаяКнига85 = Справочники.УчебныеКниги85.НайтиПоКоду("BOOK");
    Если Не ЗначениеЗаполнено(УчебнаяКнига85) Тогда
        ВызватьИсключение "Нужен свой заранее созданный BOOK";
    КонецЕсли;
    Если УчебнаяКнига85.ЭтоГруппа Или УчебнаяКнига85.МеткаСтенда <> "owned-input85" Тогда
        ВызватьИсключение "BOOK должен быть своим учебным элементом";
    КонецЕсли;
    НазваниеКниги85 = УчебнаяКнига85.Наименование;
    ЭтаФорма.АвтоЗаголовок = Ложь;
    МеткаСеанса = Строка(Новый УникальныйИдентификатор);
    ЭтаФорма.Заголовок = "Учебный ввод85 " + МеткаСеанса;
    УчебныйВыпадающий85 = "Книга";
    УчебныйСписок85 = "Книга";
    УчебноеКоличество85 = 3;
    ИтогВыбора85 = "Книга";
    Карточка85 = "Закрыта";
    Открытий85 = 0;
    Созданий85 = 0;
    Элементы.КарточкаКниги85.Видимость = Ложь;
    Поле = Элементы.УчебныйВыпадающий85;
    Поле.РежимВыбораИзСписка = Истина;
    Поле.СписокВыбора.Добавить("Книга", "Книга");
    Поле.СписокВыбора.Добавить("Ручка", "Ручка");
    Поле.КнопкаВыпадающегоСписка = Истина;
    Поле.КнопкаОчистки = Истина;
    Поле.АвтоОтображениеКнопкиОчистки = Ложь;
    Поле = Элементы.УчебныйСписок85;
    Поле.РежимВыбораИзСписка = Истина;
    Поле.СписокВыбора.Добавить("Книга", "Книга");
    Поле.СписокВыбора.Добавить("Ручка", "Ручка");
    Поле.КнопкаВыбора = Истина;
    Поле.КнопкаСпискаВыбора = Истина;
    Поле.КнопкаОчистки = Истина;
    Поле.АвтоОтображениеКнопкиОчистки = Ложь;
    Поле.УстановитьДействие("НачалоВыбора", "НачатьСвойВыбор85");
    Поле.УстановитьДействие("ПриИзменении", "СвойВыборИзменен85");
    Поле = Элементы.УчебноеКоличество85;
    Поле.КнопкаРегулирования = Истина;
    Поле.Формат = "ЧГ=0;ЧДЦ=0";
    Поле.УстановитьДействие("Регулирование", "ИзменитьСвоеКоличество85");
    Поле = Элементы.УчебнаяКнига85;
    Поле.КнопкаОткрытия = Истина;
    Поле.АвтоОтображениеКнопкиОткрытия = Ложь;
    Поле.КнопкаСоздания = Истина;
    Поле.КнопкаВыпадающегоСписка = Истина;
    Поле.УстановитьДействие("Открытие", "ПоказатьСвоюКарточку85");
    Поле.УстановитьДействие("Создание", "НачатьСвойЧерновик85");
КонецПроцедуры

&НаКлиенте
Процедура НачатьСвойВыбор85(Элемент, ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    Если ВыборДобавлением Тогда
        ВызватьИсключение "Урок использует одиночное строковое поле, не добавление множественных значений";
    КонецЕсли;
    ДанныеВыбора = Новый СписокЗначений;
    ДанныеВыбора.Добавить("Книга", "Книга");
    ДанныеВыбора.Добавить("Ручка", "Ручка");
КонецПроцедуры

&НаКлиенте
Процедура СвойВыборИзменен85(Элемент)
    ИтогВыбора85 = УчебныйСписок85;
КонецПроцедуры

&НаКлиенте
Процедура ИзменитьСвоеКоличество85(Элемент, Направление, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    Если Направление <> 1 И Направление <> -1 Тогда
        ВызватьИсключение "Неожиданное направление собственного регулирования";
    КонецЕсли;
    НовоеКоличество = УчебноеКоличество85 + Направление;
    Если НовоеКоличество >= 0 И НовоеКоличество <= 5 Тогда
        УчебноеКоличество85 = НовоеКоличество;
    КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ПоказатьСвоюКарточку85(Элемент, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    Открытий85 = Открытий85 + 1;
    Карточка85 = "Просмотр: " + НазваниеКниги85;
    Элементы.КарточкаКниги85.Видимость = Истина;
КонецПроцедуры

&НаКлиенте
Процедура НачатьСвойЧерновик85(Элемент, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    Созданий85 = Созданий85 + 1;
    Карточка85 = "Новый учебный черновик без записи";
    Элементы.КарточкаКниги85.Видимость = Истина;
КонецПроцедуры

&НаКлиенте
Процедура СброситьСвойВвод85(Команда)
    УчебныйВыпадающий85 = "Книга";
    УчебныйСписок85 = "Книга";
    УчебноеКоличество85 = 3;
    ИтогВыбора85 = "Книга";
    Карточка85 = "Закрыта";
    Открытий85 = 0;
    Созданий85 = 0;
    Элементы.КарточкаКниги85.Видимость = Ложь;
КонецПроцедуры
ОткрытьУчебныйВвод85

УчебныйВыборВвода85 → Общие команды → ОткрытьУчебныйВвод85 → Модуль

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

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
    ОткрытьФорму("ОбщаяФорма.УчебныйВводТест85");
КонецПроцедуры

Разбор по шагам

  1. На сервере найдена настоящая собственная BOOK и проверена её метка. НазваниеКниги85 берётся из неё на сервере: клиентские события не читают серверные реквизиты ссылки.

  2. Открыть эмулирует кнопку открытия поля. Свой обработчик получает Элемент и СтандартнаяОбработка, отключает стандартное действие и показывает реально созданную группу КарточкаКниги85.

  3. Карточка85 содержит Просмотр: Книга, а Открытий85 увеличивается. Менеджер читает оба фактических результата, не объявляет само наличие метода открытой карточкой.

  4. Создать инициирует собственное Создание. Обработчик отключает стандартное открытие формы нового элемента и показывает свой черновик в той же области.

  5. Новый учебный черновик — текст и состояние собственной формы в памяти, не созданная ссылка или сохранённая книга. УчебнаяКнига85 остаётся подготовленной BOOK.

  6. Сброс скрывает карточку и возвращает оба счётчика к 0; клиент и сама форма не закрываются.

Как проверить результат

  1. После Открыть: Открытий85 = 1 и фактическая Карточка85 = Просмотр: Книга.

  2. После Создать: Созданий85 = 1 и фактическая карточка черновика. После завершения оба счётчика 0, область скрыта.

  3. В своём каталоге не появляется новый элемент: в обоих событиях СтандартнаяОбработка = Ложь и вызова Записать нет.

Ожидаемый результат

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

На что обратить внимание

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

  2. Создать не выдаётся за сохранение каталога. Здесь специально переопределена команда создания собственного интерфейса.

  3. Открыть имеет специальное поведение для колонки вне редактирования в интерфейсе Версия 8.5; наш стенд использует отдельное поле в Такси, не такую колонку.

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

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.