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

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

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

Дерево элементов в упр. форме. Сгенерированные имена не отличаются красотой
В прикрепленных изображениях и в прикрепленном файле можно посмотреть исходную форму и результат работы на примере обработки ирКонсольЗаданий.epf из шикарной библиотеки "Инструменты разработчика". К сожалению, выложить файл бесплатно (за 0 SM) нельзя.
Генерация форм была выполнена на платформе 8.3.9.2309.
***
Это концептуальная статья, а сам инструмент в стадии глубокой альфа-версии, поэтому код генератора не выложен. Буду благодарен за конструктивные комментарии.
upd 14.11.19
Не все объекты из толстых форм могут быть отображены на управляемой форме (к примеру, объект ПостроительОтчета), но в целом можно генерировать довольно похожие на оригинал формы.
Консоль запросов из ИР

Становится примерно такой. Похоже?

P.s. если задаться целью, можно даже так:

Результат автоматической генерации
но из за сильных отличий построения UI в 7.7 и УФ результат слишком кривой (в основном мешает управление слоями в форме 7.7)
Вступайте в нашу телеграмм-группу Инфостарт