Цель разработки
Создать внешнюю обработку для платформы «1С:Предприятие 8.3», которая сравнивает исходную и визуально доработанную формы, а затем автоматически формирует программный код создания новых элементов и их обработчиков событий.
Механизм сокращает время на написание однотипного кода, уменьшает количество ошибок и снижает зависимость расширения от изменений формы основной конфигурации при обновлении на новые версии.
Идея решения
Разработчик проектирует интерфейс привычным способом — в визуальном редакторе форм конфигуратора. Обработка сравнивает XML-представления исходной и измененной форм, находит добавленные элементы и преобразует их структуру и свойства в код на встроенном языке 1С.
Полученный код предназначен для копирования в целевое расширение и выполнения при создании формы. Визуальное редактирование при этом используется только как удобный способ проектирования будущего интерфейса.
Интерфейс обработки
Перед запуском генерации пользователь указывает:
- каталог XML-выгрузки эталонного расширения;
- каталог XML-выгрузки макетного расширения;
- форму, которую необходимо сравнить;
- способ выдачи результата.
Результат можно получить в виде текста для ручной вставки в модуль либо как дополненное исходное расширение — XML-выгрузку с измененным модулем формы.
До начала сравнения обработка проверяет существование каталогов и файлов выгрузки, наличие выбранной формы в обеих версиях, соответствие форм друг другу и отсутствие критических ошибок чтения XML.
Чтение и сравнение XML
Обработка находит XML-файлы выбранной формы, учитывает пространства имен, читает структуру элементов и их свойства, а также сохраняет порядок элементов внутри родительских групп.
При сравнении двух вариантов формы выделяется дельта:
- новые элементы и их родители;
- дочерние элементы и вложенность;
- зависимости между новыми элементами;
- ссылки на существующие элементы формы;
- изменения свойств существующих элементов.
Элементы должны создаваться в таком порядке, чтобы к моменту настройки дочернего элемента его родитель и связанные объекты уже существовали.
Поддерживаемые элементы
Первая версия генератора преобразует в код наиболее востребованные элементы управляемой формы:
- обычные группы и группы страниц;
- страницы;
- поля ввода, флажка, переключателя и надписи;
- таблицы формы и их поля;
- декорации;
- кнопки формы и команды.
Свойства элементов
Для каждого поддерживаемого элемента обработка считывает и переносит значимые настройки:
- имя, тип и родителя;
- заголовок и вид;
- путь к данным;
- видимость и доступность;
- режим «Только просмотр»;
- положение заголовка;
- ширину, высоту и растягивание;
- связь с командой;
- имя обработчика события.
Генерация кода
На основе найденных отличий обработка формирует синтаксически корректный код встроенного языка 1С. Код разделяется на логические процедуры, получает читаемое форматирование и понятные имена временных переменных.
// Код сформирован автоматически обработкой «Генератор форм»
//
// 1. Создание команд формы.
// 2. Создание родительских групп.
// 3. Создание вложенных элементов.
// 4. Настройка свойств.
// 5. Назначение обработчиков событий.Результирующий текст выводится на форме обработки и доступен для копирования. Повторная генерация по одним и тем же исходным данным должна давать идентичный результат.
Результат
«Генератор форм» — внешняя обработка, которая формирует программный код создания новых элементов управляемой формы.
Как устроена и выглядит: Работает на 2х расширениях. Эталонном: в которое будет вноситься код и которое будет считаться бланком. Макетном, созданным на основе эталона и отредактированном в визуальном редакторе форм 1С.
Для использования генератора выполните следующие действия:
- Выгрузите в файлы расширение, которое планируется дорабатывать. Структура объекта, реквизиты и табличные части для привязки элементов формы уже должны быть подготовлены. Это эталонное расширение.
- Создайте копию эталонного расширения, внесите нужные изменения в визуальном редакторе форм и выгрузите макетное расширение в файлы.
- Запустите обработку в любой подходящей конфигурации.
- Укажите каталоги эталонной и макетной XML-выгрузок.
- Дождитесь чтения структуры и формирования списка общих форм.
- Выберите форму и нажмите «Сгенерировать код».
- Проверьте результат и вставьте код в разрабатываемое расширение.
Файлы результата и собранная обработка доступны в блоке «Материалы».
Критерии успешности
- обе XML-выгрузки открываются без ошибок;
- пользователь может выбрать общую форму;
- все добавленные элементы поддерживаемых типов найдены;
- правильно определены родители и вложенность;
- элементы создаются в корректном порядке;
- код проходит синтаксический контроль 1С;
- тестовая форма открывается без ошибок;
- программно созданная форма визуально соответствует макету.
После вставки сгенерированного кода в модуль формы эталонного расширения его интерфейс в пользовательском режиме должен быть визуально неотличим от формы макетного расширения в пределах поддерживаемых свойств.
Условия и ограничения
Перед началом работы пользователь самостоятельно подготавливает эталонное и макетное расширения в конфигураторе и вручную выгружает их в XML.
Генерация охватывает ограниченный набор типов элементов и свойств формы. Неподдерживаемые конструкции должны явно фиксироваться в результатах проверки, чтобы разработчик мог доработать их вручную.
Заключение
«Генератор форм» объединяет удобство визуального проектирования с надежностью программного создания элементов. Разработчик собирает интерфейс стандартными средствами конфигуратора, а обработка берет на себя анализ XML, восстановление связей и подготовку повторяемого кода.
Такой подход ускоряет разработку расширений, уменьшает объем рутинной работы и помогает сохранить доработки при изменениях типовой формы после обновления основной конфигурации.