Генерация управляемой формы на основе обычной (proof of concept)
В статье рассматривается техническая возможность автоматизированной генерации управляемой формы на основе обычной.
- Описание
- Подробнее
Описание
Каждый опытный разработчик пишет для себя инструменты. И чем больше опыт, тем больше задач приходится автоматизировать, в том числе и поддержка legacy-проектов, переход на новые версии платформы/базовой конфигурации и тд.
Одним из самых сложных таких переходов для многих был/остается переход на управляемые формы. Хорошо, когда код почти типовой — базовую конфигурации переделала сама 1С. Но даже тогда остается задача переписать весь багаж своих привычных обработок на УФ.
Для примера, поиск по infostart’у фразы " для управляемых форм " — "Найдено 4696". Невероятная работа проделана сообществом…
Управляемые формы — это не новый дизайн интерфейса, это концепция разделения работы между клиентом и сервером.
В обычных формах:
- практически всю работу делал клиент (тащил сырые данные с сервера, обрабатывал и отображал результат)
- в любой момент в клиенте можно было делать синхронные, модальные и интерактивные вызовы/операции
- чтобы выполнить код на сервере, нужно было постараться (вынести логику в специальный общий модуль). программисты мало задумывались о том, где код выполняется
В управляемых формах (толстый клиент не рассматриваем как атавизм):
- клиент обеспечивает только отображение данных, пользовательский ввод и простейшие вычисления.
- синхронные и модальные вызовы запрещены даже на клиенте
- работа с данными из СУБД возможна только на сервере
- код должен быть разделен на методы по контексту выполнения (клиент, сервер), а также в местах обратных вызовов (callbacks), т.к. код должен быть асинхронным

А ТаблицуЗначений за что???
В начале работы с УФ это все казалось очень и очень сложным, инертность мышления долго мешала писать правильно (спасибо, что хотя бы многопоточности нет). Но ближе к теме:
Переписывание кода для УФ — нетривиальная задача. Ее может сделать только программист…
Т.е. о генерации валидного кода можно сразу забыть. А как быть с самой формой? В УФ форма — это XML-файл в недрах конфигурации, который можно как выгрузить из конфигурации, так и загрузить обратно… А XML-файл можно сгенерировать программно.
Создание управляемой формы — это всего лишь генерация XML-файла…
Для этого нам понадобится
1) Декомпозиция обычной толстой формы на элементы и анализ их свойств
С этим сообщество разработчиков 1С разобралось достаточно давно, например здесь

Дерево элементов формы "ФормаКонсоли" обработки "ирКонсольЗаданий".
2) Генерация XML-файлов по дереву элементов и свойств обычной формы
Здесь-то и были сосредоточены основные усилия.
— нужно было исследовательским путем определить названия всех свойств всех возможных элементов управляемой формы и их соответствие свойствам элементов обычной формы

