Редактирование объектов конфигурации

Функционал не доступен в бесплатной версии,
необходим ключ защиты

Объекты конфигурации представляют из себя текстовые записи или MXL, HTML и XML файлы. Иногда текстовые записи состоят из 2 блоков, как например форма - состоит из модуля формы и непосредственно самой формы, которую видит пользователь. 

В этом случае форма встроенного языка обретает черты консоли, поскольку в левой части отображается структура элемента.


В контекстом меню строки "form.data" можно выбрать:
  1. Пункт меню Показать форму который, на основе текстовых данных формирует представление формы;
  2. Пункт меню Построить форму который, на основе текстовых данных формирует выражение создания данной формы

Пример

...

эфДеревоЗначений.Шрифт  = Новый Шрифт();
эфДеревоЗначений.ШрифтПодвала   = ШрифтыСтиля.ШрифтТекста;
эфДеревоЗначений.ШрифтШапки = ШрифтыСтиля.ШрифтТекста;
Попытка
эфДеревоЗначений.УстановитьДействие("ПередНачаломДобавления",Новый Действие("ДеревоЗначенийПередНачаломДобавления")); Исключение КонецПопытки;
Попытка
эфДеревоЗначений.УстановитьДействие("ПередНачаломИзменения",Новый Действие("ДеревоЗначенийПередНачаломИзменения")); Исключение КонецПопытки;
Попытка
эфДеревоЗначений.УстановитьДействие("ПередОкончаниемРедактирования",Новый Действие("ДеревоЗначенийПередОкончаниемРедактирования")); Исключение КонецПопытки;
Попытка
эфДеревоЗначений.УстановитьДействие("ПередУдалением",Новый Действие("ДеревоЗначенийПередНачаломИзменения")); Исключение КонецПопытки;
Попытка
эфДеревоЗначений.УстановитьДействие("ПриАктивизацииСтроки",Новый Действие("ДеревоЗначенийПриАктивизацииСтроки")); Исключение КонецПопытки;
Попытка
эфДеревоЗначений.УстановитьДействие("ПриВыводеСтроки",Новый Действие("ДеревоЗначенийПриВыводеСтроки")); Исключение КонецПопытки;
Попытка
эфДеревоЗначений.УстановитьДействие("ПриНачалеРедактирования",Новый Действие("ДеревоЗначенийПриНачалеРедактирования")); Исключение КонецПопытки;
эфДеревоЗначений.УстановитьПривязку(ГраницаЭлементаУправления.Верх,Неопределено,Неопределено,Неопределено,Неопределено);
эфДеревоЗначений.УстановитьПривязку(ГраницаЭлементаУправления.Лево,Неопределено,Неопределено,Неопределено,Неопределено);
эфДеревоЗначений.УстановитьПривязку(ГраницаЭлементаУправления.Низ,ЭтаФорма.Панель,ГраницаЭлементаУправления.Низ,Неопределено,Неопределено);
эфДеревоЗначений.УстановитьПривязку(ГраницаЭлементаУправления.Право,ЭтаФорма.Панель,ГраницаЭлементаУправления.Право,Неопределено,Неопределено);
эфПуть  = ЭтаФорма.ЭлементыФормы.Добавить(Тип("Полеввода"),"Путь");
эфПуть.Имя  = "Путь";
эфПуть.АвтоКонтекстноеМеню  = Истина;
эфПуть.Данные   = "Путь";
эфПуть.ИзменяетДанные   = Ложь;
эфПуть.КонтекстноеМеню  = Неопределено;
эфПуть.ПервыйВГруппе    = Ложь;
эфПуть.ПропускатьПриВводе   = Ложь;
Попытка
эфПуть.ТипЗначения  = Новый ОписаниеТипов("Строка"); Исключение КонецПопытки;
эфПуть.АктивизироватьПоУмолчанию    = Ложь;
эфПуть.Верх = 352;
эфПуть.Видимость    = Истина;
эфПуть.Высота   = 19;
эфПуть.Лево = 8;
эфПуть.ПорядокОбхода    = 3;
эфПуть.ПорядокОтображения   = 2;
эфПуть.Свертка  = РежимСверткиЭлементаУправления.Нет;

...

в отличии от существующих аналогов данной операции учитывается:
  • Все элементы оформления (картинки, шрифты, цвета, рамки);
  • Зависимости элементов, как в привязках так и источниках действий и связях по типу.
Из-за ограничений платформы невозможно:
  • Создать кнопку со стандартными действиями (установить отбор, удалить и т.д.);
  • Определить подменю контекстного меню типа Кнопка(!!);
  • Определить порядок элементов при наложении друг на друга.
В том случае если текст модуля запоролен в структуре будет существовать строка "image.data",


 а вместо ожидаемого кода в правой части вы увидите псевдокод, или как еще его называют "байткод".

Псевдокод достаточно легко преобразовать в нормальный вид, для этого вам необходимо найти один из декомпиляторов (ДекодированиеМодуля81.epf), положить его в каталог обработки, и вызвать пункт контекстного меню Декомпилировать.

Важно

Декомпилятор не распространяется в составе дистрибутива.
Имя обработки декомпилятора должно быть Decode.epf, В обработке функции:
  • Декодировать;
  • Форматировать
должны быть экспортированы.

В результате работы  будет добавлен еще один пункт text.data, который и будет содержать декомпилированный текст модуля.

Однако для того что бы с этим модулем нормально можно было работать в текущей конфигурации нужно поправить еще запись info.data. Именно по этой записи ориентируется конфигуратор.

Запись может содержать следующие данные:

  • {3,2,0,"",0}
  • {3,2,0,"jijaiidsd\sdkjdkajldskdla",0} 

Для того что бы конфигуратор понимал что к чему эта запись должна заканчиваться на 

  •  ..,1,0,"",0}

Так же не забываем удалять запись image.data, так же использую контекстное меню


При открытии объектов конфигурации из одноименной формы, становится доступно дерево Обозреватель объектов (расположен в правой части формы) 



Обозреватель будет заполнен, если была открыта запись метаданных, объекта конфигурации. Более подробно о том что представляют из себя записи метаданных можно посмотреть здесь.
В контекстном меню обозревателя доступны следующие действия:

Примечание.
Все записи объектов конфигурации при открытии, вначале распакованными сохраняются на диск в папку .\MyScripts\Conf\ , а потом отображаются в форме встроенного языка или табличного документа (в зависимости от типа данных).

Данные объектов конфигурации можно изменить и сохранить. Или выбрать пункт меню Действия - Сохранить Копию и сохранить запись в другую таблицу или на диск.
Comments