Декомпиляция элементов формы для 8.2 для обычных форм (не управляемых).


Декомпиляция отдельных элементов формы и самой формы в общем, для формирования кода для динамического вывода реквизитов.

Обработка предназначена для динамического формирования реквизитов при следующем алгоритме:

  1. Сначала выполняются работа по техническому заданию, реквизиты добавляются на форму.
  2. После принятия работ, с помощью данной обработки в режиме предприятия считывается код добавленных реквизитов, он добавляется в общий модуль или модуль формы.
  3. Добавленные реквизиты удаляются с формы, теперь они формируются из кода.

Обработка сделана на основе данной: http://avprog.ru/public/22147/, но имеет следующие отличия:

  1. Та обработка универсальна, данная же направлена на реализацию четко одной задачи, то есть подогнана по нее.
  2. Моя разработка работает гораздо быстрее.
  3. Декомпиляция производится только нужных элементов, а не всех, и потому не нужно выискивать нужные в итогом текстовом файле.
  4. Моя разработка выполнена на 8.2, предыдущая же на 8.1, что сейчас приводит к немного неверному формированию ее. Например в коде реализовано отсекание вывода свойств реквизитов, значение которых идентично стандартному. То есть у поля ввода есть свойство "АвтоКонтекстноеМеню", значение по умолчанию которого равно Истина, и если оно так и осталось равно Истина, то выводить его смысла нет. Но в 8.1 при проверке булевского реквизита возращалось строка "Истина", в 8.2 же возвращается "Да",поэтому в той обработке выводятся абсолютно все реквизиты.
  5. Перестроена логика, улучшена юзабилити.

Описание разработки: В левом дерево у метаданного выбирается нужная для декомпиляции форма, при этом в правом дереве формируется дерево элементов формы. При нажатии на галочки в правом дереве в табличном форме формируется код для для вывода элемента программно. Если нужно декомпилировать все элементы, то нажимается кнопка в нижней панели "Декомпилировать всю форму". Левое и правое дерево можно сдвигать, чтобы пространство для кода увеличивалось.

Вместо кода с присвоением длины, ширины, лево, вверх, выводится процедура " УстановитьПоложениеЭлемента(Надпись,25,19,322,103);", ее необходимо вставить в модуль с кодом вывода элементов формы, ну или поместить в общий модуль.


Процедура УстановитьПоложениеЭлемента(Элемент,Верх,Высота,Лево,Ширина)

   
Элемент.Верх = Верх;

   
Элемент.Высота = Высота;

   
Элемент.Лево = Лево;

   
Элемент.Ширина = Ширина;

КонецПроцедуры

Сделано, чтобы выводить меньшее количесто строк.

 

Файлы обработки:

-