Введение
Нередко возникает задача добавить на типовую форму новые элементы программным способом.
Это значительно облегчает дальнейшее обновление и поддержку конфигурации, но отнимает уйму времени при реализации.
До недавнего времени я пользовался разработкой Евгении Карук Декомпиляция управляемых форм. Но столкнулся с тем, что там нет общих форм, с момента создания появились новые свойства элементов и нет условного оформления.
Я прочитал все комментарии к той обработке, и взял ее за основу с учетом полезных изменений от K_A_O
Порядок работы
1. Выбрать нужную форму в дереве метаданных слева*
2. Справа выбираем закладку Элементы, Реквизиты, Команды или Условное оформление
3. Указываем нужный элемент и код сразу отобразится в центре
4. Если нужно сразу несколько элементов, выделяем их пометками и нажимаем Сформировать код.
* Сразу появится сообщение, что:
Для генерации нужно в модуль исследуемой формы в конец процедуры ПриСозданииНаСервере добавить код
НастройкиДекомпиляции = ХранилищеСистемныхНастроек.Загрузить("ВнешняяОбработка.ДекомпиляцияУправляемыхФорм", "НастройкиДекомпиляции"); Если НастройкиДекомпиляции <> Неопределено И НастройкиДекомпиляции.НомерСоединения = НомерСоединенияИнформационнойБазы() Тогда ВнешниеОбработки.Создать(НастройкиДекомпиляции.ИмяОбработки, Ложь).ОпределитьВнутренниеСвойстваЭлементов(ЭтотОбъект); КонецЕсли; КонецПроцедуры //ПриСозданииНаСервере
Его необходимо добавить именно в конец процедуры, так как нужно, чтобы весь код программного дополнения элементов был уже выполнен. Даже лучше будет добавить его в расширение, так как код из расширений выполняется в последнюю очередь, а в каком-нибудь из них может быть дополнение.
Список улучшений
Теперь возможна полноценная работа с общими формами. То, что добавляли раньше, работало не всегда, часто формы выдавали ошибку при попытке декомпиляции, ведь многие общие формы можно открывать только из других форм с необходимым набором входных параметров. Теперь если форма не открывается напрямую, пользователю предлагается открыть ее вручную.
Также я добавил просмотр и генерацию условного оформления. Кто пытался разобраться в нем в конфигураторе, понимает степень сложности, с которой можно столкнуться. Здесь же вы сможете не только разобраться в сделанном ранее, но и отредактировать в конструкторе или добавить новые элементы условного оформления.
Улучшена генерация кода.
Раньше все элементы добавлялись через Вставить, даже последовательно идущие. Теперь если после списка отмеченных для генерации есть элементы. То первый из списка вставляется, а последующие за ним добавляются.
Отображаются только измененные свойства
Недостатком платформы является, что в конструкторе формы нельзя отфильтровать свойства, значение которых отличается от значения по умолчанию. Даже если не нужно формировать динамический код, через эту обработку можно посмотреть, какие свойства элемента были изменены.
Протестировано на платформе 8.3.25.
Также предлагаю ознакомиться с другими моими разработками:
Выгрузка загрузка данных XML адаптивная
Конструктор параметров командной строки
Менеджер внешних обработок и отчетов