Обработка предназначена для динамического формирования реквизитов при следующем алгоритме:
- Сначала выполняются работа по техническому заданию, реквизиты добавляются на форму.
- После принятия работ, с помощью данной обработки в режиме предприятия считывается код добавленных реквизитов, он добавляется в общий модуль или модуль формы.
- Добавленные реквизиты удаляются с формы, теперь они формируются из кода.
Обработка сделана на основе данной: //infostart.ru/public/22147/, но имеет следующие отличия:
- Та обработка универсальна, данная же направлена на реализацию четко одной задачи, то есть подогнана по нее.
- Моя разработка работает гораздо быстрее.
- Декомпиляция производится только нужных элементов, а не всех, и потому не нужно выискивать нужные в итогом текстовом файле.
- Моя разработка выполнена на 8.2, предыдущая же на 8.1, что сейчас приводит к немного неверному формированию ее. Например в коде реализовано отсекание вывода свойств реквизитов, значение которых идентично стандартному. То есть у поля ввода есть свойство "АвтоКонтекстноеМеню", значение по умолчанию которого равно Истина, и если оно так и осталось равно Истина, то выводить его смысла нет. Но в 8.1 при проверке булевского реквизита возращалось строка "Истина", в 8.2 же возвращается "Да",поэтому в той обработке выводятся абсолютно все реквизиты.
- Перестроена логика, улучшена юзабилити.
Описание разработки: В левом дерево у метаданного выбирается нужная для декомпиляции форма, при этом в правом дереве формируется дерево элементов формы. При нажатии на галочки в правом дереве в табличном форме формируется код для для вывода элемента программно. Если нужно декомпилировать все элементы, то нажимается кнопка в нижней панели "Декомпилировать всю форму". Левое и правое дерево можно сдвигать, чтобы пространство для кода увеличивалось.
Вместо кода с присвоением длины, ширины, лево, вверх, выводится процедура " УстановитьПоложениеЭлемента(Надпись,25,19,322,103);", ее необходимо вставить в модуль с кодом вывода элементов формы, ну или поместить в общий модуль.
Процедура УстановитьПоложениеЭлемента(Элемент,Верх,Высота,Лево,Ширина)
Элемент.Верх = Верх;
Элемент.Высота = Высота;
Элемент.Лево = Лево;
Элемент.Ширина = Ширина;
КонецПроцедуры
Сделано, чтобы выводить меньшее количесто строк.