Генерация кода управляемой формы (декомпиляция элементов)

Публикация № 304736

Разработка - Инструментарий разработчика

декомпиляция форм генерация кода управляемая форма

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

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

Идея и часть кода взята из этой обработки //infostart.ru/public/99363/

Аналогичной корректно работающей для управляемых форм не встречала.

Порядок работы

1. Добавляем все нужные элементы конструктором.

2. Запускаем обработку. Выбираем двойным кликом нужную нам форму в левой части обработки. При этом правая часть заполняется элементами выбранной формы.

3. Отмечаем нужные нам элементы (те, что мы добавили).

4. Нажимаем "Сформировать код".

5. Сформированный код переносим в событие "ПриСозданииНаСервереФормы" и удаляем из формы сами элементы. Теперь они формируются программно.

В типовых с применением БСП код для генерации реквизитов достаточно разместить в общем модуле "МодификацияКонфигурацииПереопределяемый". В этом случае типовая форма остается неизмененной, но нужные реквизиты на ней отображаются. Подробнее это описано в статье "Типовой механизм упрощенного изменения конфигурации в ERP 2.0 и УТ 11"

Для общего понимания, как вообще работает управляемая форма, рекоммендую почитать статью "Под капотом управляемых форм"

Технические моменты.

Для версии 2:

1. Обработка работает только в толстом клиенте.

2. Генерирует только код создания элементов. Не определяет значение свойства "ПутьКДанным" и обработчики событий.

3. Не требует изменения конфигурации для генерации кода. Просто запускается как внешняя.

Для версии 3.0:

1. Работает в любом режиме (толстый и тонкий клиент)

2. Генерирует код создания элементов, реквизитов и команд.

3. Для генерации кода обязательно включение в процедуру "ПриСозданииНаСервере" модуля декомпилируемой формы следующего кода. 

	Если Форма.Параметры.Свойство("ДекомпиляцияЭлементов") Тогда
		ВнешниеОбработки.Создать(Форма.Параметры.ДекомпиляцияЭлементов.ИмяПодключеннойОбработки,Ложь).ОпределитьВнутренниеСвойстваЭлементов(Форма);
	КонецЕсли; 


Для конфигураций на основе БСП достаточно прописать вызов один раз для всех форм в общем модуле "МодификацияКонфигурацииПереопределяемый". Для нетиповых конфигураций необходимо модифицировать модуль формы.  

По обеим версиям:

4. С формами внешних обработок и отчетов не работает. Только с встроенными в конфигурацию.

5. Свойства элементов заполняются не все, хотя и достаточно большой перечень. Если нужно что-то еще, пишите в комментариях, чего по-вашему не хватает. 

По развитию обработки: 

Возможно будет отдельная версия по 8.3.6 (если это останется актуальным с учетом расширений конфигураций), так как в ней расширен набор свойств элементов. Может еще что-то изменится и по взаимодействию с формой, так как немного изменили идеологию отображения на клиенте.

Постараюсь добавить поддержку максимально возможного числа свойств. В идеале хотелось бы получать полностью работоспособный код без необходимости ручных изменений. В принципе, он и сейчас рабочий, но какие-то свойства могут быть пропущены.

Про пожелания использовать обработку без предварительного изменения кода формы помню. Сделаю, если кто-то предложит вариант, как получить, например, для элементов свойство "ПутьКДанным" не меняя саму форму. Пока при невозможности модификации кода формы можно использовать версию 2.0 обработки и дописывать при необходимости недостающие свойства вручную.

Если есть еще какие-либо пожелания или замечания по работе, то пишите в комментариях.

UPD 02.10.2014

Добавила обновленную версию 3.0.

Отличия выше по тексту. 

UPD 18.10.2014

Обработка поддерживает свойства элементов для релиза 8.3.5. В более ранних релизах каких-то свойств может не быть. Например, в 8.3.4 нет системных перечислений и свойств ПоложениеСтрокиПоискаПоложениеСостоянияПросмотраПоложениеУправленияПоиском.  Подробнее в комментариях (28)-(32). Добавила отдельную версию для платформы 8.2 (проверялась на 8.2.16, более стрые релизы, думаю, не актуальны). Её же можно использовать для релизов 8.3 до 8.3.5.  Это полный аналог стандартной обработки 3.0 в которой закомментирована работа с новыми свойствами.

UPD 18.01.2015

Версия 3.0.1 beta. Добавлено формирование кнопок командной панели формы. Расширен перечень обрабатываемых свойств.  Исправлена работа в клиент-серверном варианте.

Рекоммендую из других моих обработок:

1. Комплексная проверка ведения учета в УТ10, УТ11, КА, УПП, ERP - простая обработка для проверки корректности ведения учета по всем разделам учета.
2. Дерево объектной модели схемы запроса (декомпиляция текста запроса) - программная модификация запроса через схему запроса.
3. Универсальная выгрузка/загрузка данных в формате JSON для отличающихся конфигураций (Такси+ОФ) - перенос данных между любыми конфигурациями на любых платформах (8.2-8.3) с любым интерфейсом.

Скачать файлы

Наименование Файл Версия Размер
ДекомпиляцияУправляемыхФорм_v2.epf

.epf 16,45Kb
1670
.epf 16,45Kb 1670 Скачать бесплатно
Декомпиляция управляемых форм 3.0 (с 8.2)

.epf 20,26Kb
1686
.epf 20,26Kb 1686 Скачать бесплатно
Декомпиляция управляемых форм 3.0 (с 8.3.5)

.epf 21,52Kb
2371
.epf 21,52Kb 2371 Скачать бесплатно
Декомпиляция управляемых форм 3.0.1 (с 8.3.5) (3.0 + разбор командной панели + клиент-сервер)

.epf 22,14Kb
3267
.epf 22,14Kb 3267 Скачать бесплатно

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо свернутое
1. BigClock 29.09.14 15:23 Сейчас в теме
Для управляемых форм явно не хватает такого инструмента, как V8Reader: http://infostart.ru/public/106310/ Особенно возможности декомпиляции изменений для форм.
2. Yashazz 3638 29.09.14 17:43 Сейчас в теме
Хотите добрый совет? Не пишите сами и не предлагайте другим такие обработки, пока не выйдет 8.3.12 как минимум. Тогда ситуация стабилизируется. нужные поля будут читаться, методы - работать, и вообще можно будет рассчитывать на вменяемый механизм. Сейчас пока и в 8.2, и в 8.3 всё колбасит, малейшее "изменение концепции" может сделать ваши усилия бессмысленными в обе стороны - либо завтра добавят нечто, благодаря чем это всё будет раз плюнуть (как со структурой таблиц базы поступили), либо нечто перестанет работать и плоды трудов останется лишь выкинуть.
jobkostya1c8; t278; +2 3 Ответить 3
4. Asmody 29.09.14 18:07 Сейчас в теме
Предлагаю реализовать супер-вариант: написать шаблон xslt, который по xml из выгрузки конфигурации будет формировать код создания элементов.
9. ksuman 01.10.14 11:58 Сейчас в теме
Считаю это решение: Деэволюцией программного обеспечения.
Когда-то было инновацией придумали Визуализацию языков высокого уровня (Delphi из TurboPascal, С++ Bulder из Turbo C++). У вас все наоборот.
Может нам лучше взять в руки палку и отрасти хвосты?
17. ekaruk 5340 02.10.14 21:19 Сейчас в теме
Добавила обновлённую версию обработки.
Отличия от прошлой описаны в тексте описания.
Ну и добавила по ней пару картинок.
21. cleaner_it 220 05.10.14 19:10 Сейчас в теме
(0) Отличная вещь. Я с ее помощью сейчас дорабатываю серьезно дописанную конфигурацию, чтобы обновлять было проще.

Для команд нужно добавить генерацию кода:
	
// ******   Команда формы  - вывод кнопки "ПрисоединенныеФайлы"    ***********
НовыйЭлемент = Этаформа.Элементы.Вставить("ПрисоединенныеФайлы",Тип("КнопкаФормы"),ЭтаФорма.КоманднаяПанель);
НовыйЭлемент.Вид = ВидКнопкиФормы.КнопкаКоманднойПанели;
НовыйЭлемент.ИмяКоманды = "ПрисоединенныеФайлы";
28. mihast 66 18.10.14 09:13 Сейчас в теме
Платформа 1С:Предприятие 8.3 (8.3.4.465)

Ошибка инициализации модуля: ВнешняяОбработка.ДекомпиляцияУправляемыхФорм3.МодульОбъекта
по причине:
{ВнешняяОбработка.ДекомпиляцияУправляемыхФорм3.МодульОбъекта(332,69)}: Переменная не определена (ПоложениеСостоянияПросмотра)
СтруктураКопируемыхСвойств.Вставить("ПоложениеСостоянияПросмотра",<<?>>ПоложениеСостоянияПросмотра.Авто);
{ВнешняяОбработка.ДекомпиляцияУправляемыхФорм3.МодульОбъекта(673,46)}: Переменная не определена (ПоложениеСостоянияПросмотра)
СоответствиеТекстовыхПредставлений.Вставить(<<?>>ПоложениеСостоянияПросмотра.Авто,"ПоложениеСостоянияПросмотра.Авто");
{ВнешняяОбработка.ДекомпиляцияУправляемыхФорм3.МодульОбъекта(674,46)}: Переменная не определена (ПоложениеСостоянияПросмотра)
СоответствиеТекстовыхПредставлений.Вставить(<<?>>ПоложениеСостоянияПросмотра.Верх,"ПоложениеСостоянияПросмотра.Верх");
{ВнешняяОбработка.ДекомпиляцияУправляемыхФорм3.МодульОбъекта(675,46)}: Переменная не определена (ПоложениеСостоянияПросмотра)
СоответствиеТекстовыхПредставлений.Вставить(<<?>>ПоложениеСостоянияПросмотра.Нет,"ПоложениеСостоянияПросмотра.Нет");

ЕЩЕ
{ВнешняяОбработка.ДекомпиляцияУправляемыхФорм3.МодульОбъекта(585)}: Поле объекта не обнаружено (ПолеПериода)
СоответствиеТекстовыхПредставлений.Вставить(ВидПоляФормы.ПолеПериода,"ВидПоляФормы.ПолеПериода");
29. mihast 66 18.10.14 09:48 Сейчас в теме
Не декомпилируются КоманднаяПанель Формы :( Разбор начинается только с Групп...

Можно добавить ?
34. rusak171 13.11.14 17:51 Сейчас в теме
Большое спасибо за обработку, с плюсиком еще не разобрался
35. roman77 166 28.11.14 15:02 Сейчас в теме
Отличная обработка.
Для картинок можно больше свойств генерировать типа:

НовыйЭлемент.Вид = ВидПоляФормы.ПолеКартинки;
НовыйЭлемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Лево;
НовыйЭлемент.Высота = 1;
НовыйЭлемент.Ширина = 2;
НовыйЭлемент.Рамка.ТипРамки = ТипРамкиЭлементаУправления.БезРамки;
НовыйЭлемент.КартинкаЗначений = БиблиотекаКартинок.ВыполненоУспешно;


36. Alister 9 29.11.14 17:01 Сейчас в теме
Спасибо за проделанную работу.
37. ezhik_2000 39 10.12.14 15:14 Сейчас в теме
Программные добавления реквизитов (элементов) на форму очень тормозят открытие форм, проверено на практике. Особенно если формирование в общих модулях. Но зато очень удобно обновлять конфигурацию.
38. NOVOPRO 11.12.14 07:22 Сейчас в теме
Добрый день. У меня тоже вылезла следующая абракодабра, помогите устранить этот глюк.....:
Ошибка инициализации модуля: ВнешняяОбработка.ДекомпиляцияУправляемыхФорм3.МодульОбъекта
по причине:
{ВнешняяОбработка.ДекомпиляцияУправляемыхФорм3.МодульОбъекта(332,69)}: Переменная не определена (ПоложениеСостоянияПросмотра)
СтруктураКопируемыхСвойств.Вставить("ПоложениеСостоянияПросмотра",<<?>>ПоложениеСостоянияПросмотра.Авто);
{ВнешняяОбработка.ДекомпиляцияУправляемыхФорм3.МодульОбъекта(673,46)}: Переменная не определена (ПоложениеСостоянияПросмотра)
>>ПоложениеСостоянияПросмотра.Верх,"ПоложениеСостоянияПросмотра.Верх");
{ВнешняяОбработка.ДекомпиляцияУправляемыхФорм3.МодульОбъекта(675,46)}: Переменная не определена (ПоложениеСостоянияПросмотра)
............
40. dimk@a 15.12.14 15:58 Сейчас в теме
Очень интересная разработка. Спасибо! Беру на вооружение. К счастью, в последний год не доводилось обновлять конфигурации, уже забываю что это за "радость".
41. new_user 186 15.12.14 16:08 Сейчас в теме
43. jobkostya1c8 15.12.14 19:44 Сейчас в теме
Пока открыли на бесплатный доступ из дайджест-рассылки надо скачать. Как говорится в народной шутке "в кулацком хозяйстве все пригодится".
44. mihast 66 16.12.14 07:28 Сейчас в теме
Жаль, что разбор Командной панели все еще не доделан...
Может в праздники будет ?
60. ksuman 17.12.14 16:33 Сейчас в теме
Хотелось бы резюмировать чтобы больше сюда не возвращаться.
Конечной целью любой ERP-системы является удовлетворение запросов, или если хотите: прихотей и желаний конечного пользователя. Целью же 1С, по всей видимости является упрощение и стандартизирование программной разработки, чтобы привлекать новых разработчиков ИБ под их продукты. А на удобство работы, функционал, скорость обработки информации, скорость и надежность отклика интерфейса - им наплевать. Пока эта схема работает, но терпение пользователей 1С - не безгранично. Если политика 1С - не изменится, то скоро по частям коммерческих и других продуктов, компании будут переходить на другие системы или будут разрабатывать на старой, уже отлаженной версии 8.2.
63. yura1960 07.01.15 15:00 Сейчас в теме
ekaruk - нужную вещь всегда можно определить по количеству комментариев. Судя по всему Вы таковую написали, т.к. количество комментов зашкаливает. Скачал и сразу скажу - спасибо!
74. buzzzard 51 27.02.15 01:36 Сейчас в теме
А где же общие формы?
80. alexandr_astafiev 66 18.03.15 22:32 Сейчас в теме
Добавил колонку в динамический список ОстакиТоваров в обработку ПодборТоваровВДокументПродажи УТ 11.1.7.60 платформа 8.3.5.13 все работает. Спасибо.
81. DC 146 26.03.15 17:06 Сейчас в теме
Здорово... Только не видно реквизитов второго уровня (колонки таблиц значений и пр...). Это не предусмотрено?
83. K_A_O 530 20.04.15 16:44 Сейчас в теме
Бывают ситуации, когда нужно не только добавить новые реквизиты (команды, элементы), но и изменить существующие.
Подправил код. Может не помешает, поскольку существующему режиму работы никак не вредит (надеюсь).
Прикрепленные файлы:
ДекомпиляцияУправляемыхФорм_v3.0.1_tune2.epf
90. Shalnov 129 25.10.15 09:42 Сейчас в теме
Немного доработал на "быструю руку" добавление свойства для кнопок "Картинка"
Возможно не лучший вариант..., но мне помогло

В функцию
Функция ПолучитьСвойстваЭлемента(ЭлементОбразец)

В группу:
 ИначеЕсли Тип(ЭлементОбразец) = Тип("КнопкаФормы") Тогда	

добавил:
СтруктураКопируемыхСвойств.Вставить("Картинка",Неопределено);


Добавил код в:

Процедура ДобавитьКопированиеСвойства(ИмяСвойства,ТекЭлемент,ПараметрыФорм)
	
	Значение = ТекЭлемент[ИмяСвойства];
	
	ПредставлениеЗначения = ПолучитьТекстовоеПредставлениеЗначения(Значение);
	Если ПредставлениеЗначения = Неопределено Тогда 
		Возврат;
	КонецЕсли;
	
	ТекстСозданияЭлемента = ТекстСозданияЭлемента + Символы.ПС+
	"НовыйЭлемент."+ИмяСвойства+" = "+ПредставлениеЗначения+";";
	
КонецПроцедуры // ДобавитьТекст()
Показать


и

Функция ПолучитьТекстовоеПредставлениеЗначения(Значение)
	
	//Для текстовых значений добавляем кавычки в вывод
	//для нетекстовых получаем текстовое представление значения свойства
	ПредставлениеЗначения = Неопределено;
	Если Значение = Неопределено Тогда
		ПредставлениеЗначения = "Неопределено";
	ИначеЕсли ТипЗнч(Значение) = Тип("Строка") Тогда
		ПредставлениеЗначения = """"+Значение+"""";
	ИначеЕсли ТипЗнч(Значение) = Тип("Число") Тогда
		ПредставлениеЗначения = Формат(Значение,"ЧН=; ЧГ=0");
	ИначеЕсли ТипЗнч(Значение) = Тип("Шрифт")
		ИЛИ ТипЗнч(Значение) = Тип("Цвет") Тогда
		ПредставлениеЗначения = ПолучитьТекстовоеПредставлениеСложногоТипа(Значение)
	ИначеЕсли ТипЗнч(Значение) = Тип("Картинка") Тогда
		ПредставлениеЗначения=Неопределено;
		Если Значение.Вид = ВидКартинки.ИзБиблиотеки Тогда
			Для Каждого ОбщаяКартинка Из Метаданные.ОбщиеКартинки Цикл
				Если БиблиотекаКартинок[ОбщаяКартинка.Имя] = Значение Тогда 
					ПредставлениеЗначения = "БиблиотекаКартинок."+ОбщаяКартинка.Имя;
				КонецЕсли;
 			КонецЦикла;			
		КонецЕсли;
	Иначе	
		ПредставлениеЗначения = СоответствиеТекстовыхПредставлений.Получить(Значение);
	КонецЕсли; 
	
	Возврат ПредставлениеЗначения;
	
КонецФункции // ПолучитьТекстовоеПредставлениеЗначения()
Показать

94. Garykom 16 08.02.16 22:02 Сейчас в теме
Обработка "не видит" командные панели (и кнопки на них) ТЧ на вкладках страниц в формах документов.
Это баг или фича? :)
96. sano 36 17.02.16 11:54 Сейчас в теме
Так и не получилось программно добавить кнопку глобальной параметризуемой команды. Указываю
НовыйЭлемент.ИмяКоманды = "Обработка.ИмяМоейОбработки.Команда.ИмяКомандыОбработки";

на что при создании формы получаю
"Ошибка при установке значения атрибута контекста (ИмяКоманды)
НовыйЭлемент.ИмяКоманды = "Обработка.ИмяМоейОбработки.Команда.ИмяКомандыОбработки";
по причине:
Недопустимое значение"
Если добавить кнопку в режиме конфигуратора, то в свойстве ИмяКоманды указывается "Обработка.ИмяМоейОбработки.Команда.ИмяКомандыОбработки"
а в свойстве Данные - "Объект.Ссылка" (параметр команды)
Далее, смотрим отладчиком свойства Элемента формы, там в обоих свойствах пустые строки.

Кто-нибудь сталкивался с такой проблемой, и есть ли решение?
97. as7815 31.03.16 15:41 Сейчас в теме
Спасибо автору, вышел на новый уровень работы.
98. zekrus 153 11.05.16 08:50 Сейчас в теме
Доброе утро!
Идеи де компиляции давно на рынке (и под 7.7 и под 8.Х):
http://infostart.ru/public/158687/
Все реализации останавливались на интерпретаторе языка.
В этой не достает только добавить пару штрихов.
Если цель скажем обновление релиза, то
по идее надо делать де компиляцию дельты и
ее уже предлагать отдельным куском для переноса.
Если же цели иные то, тоже нужна четкая последовательность..
(скажем вести разработку конфигурации только из внешней конфы).
С уважением
99. movis08 23.06.16 12:39 Сейчас в теме
100. as7815 09.08.16 11:15 Сейчас в теме
1С:Предприятие 8.3 (8.3.7.2027) Управление торговлей, редакция 11.1 (11.1.4.14) не видит командную панель табличной части любого документа.
101. olbir 09.09.16 15:29 Сейчас в теме
Добрый день!
Как доступные типы элемента прописать?
103. Anchoret 43 26.12.16 17:09 Сейчас в теме
Никак не соображу, можно ли добавить кнопку в командную панель табличной части формы документа
104. artem_from_minsk 26.12.16 18:51 Сейчас в теме
Интересно поюзать конечно
107. Spacer 306 24.01.17 10:02 Сейчас в теме
Обработка очень хорошая и нужная, но есть одна недоработочка.
Когда генерируется код добавления двух и более элементов формы, то указывается элемент формы перед которым вставлять.
Т.е. добавляется первый элемент, и в коде прописано что его нужно вставлять перед вторым.
А второго то еще нет! И возникает ошибка.
113. Spacer 306 30.01.17 08:58 Сейчас в теме
Маленькое пожелание. Хорошо было бы еще общие формы добавить.
114. karewka 12.02.17 16:25 Сейчас в теме
115. bsbbur 02.03.17 14:59 Сейчас в теме
Замечательная вещь, очень удобно, большое спасибо!
Надо было в Заказ добавить с десяток вкладок с каким-то немыслимым количеством элементов на них. В итоге, модификация формы - одна строчка, ну и дополнительный общий модуль (в т.ч. и для прочих нужд)! Знай себе копипасти - красота!
(на платформе 8.3.9.2170, в УНФ 1.6.7.43, при анализе ЗаказаПокупателя, в конце СформироватьДеревоСЭлементамиФормы(), споткнулось об ПутьБезТочек, когда она приняла значение "ОбъектПлатежныйКалендарь[0]" - поправил для себя, исключив недопустимые символы)
117. Sanario 22 22.05.17 12:33 Сейчас в теме
Добрый день. Решил попробовать обработку. Для 3.0 поправил процедуру ПриСозданииНаСервере() в глобальном модуле, как было сказано в тексте описания, но обработка ругается:

{Документ.РаспределительнаяСетка.Форма.ФормаДокумента.Форма(445)}: Значение не является значением объектного типа (Параметры)
Если Форма.Параметры.Свойство("ДекомпиляцияЭлементов") Тогда


Подскажите, что я забыл сделать. Тапками не кидайтесь - не шибко еще опытный
118. Sanario 22 22.05.17 12:51 Сейчас в теме
Решил) Если в документе, то надо ставить "ЭтаФорма", если в глобальнике - то оставляем "Форма"
itoptimum; +1 Ответить
120. AllexSoft 06.02.19 00:13 Сейчас в теме
Интересная обработка, в копилку.. Похоже она умеет отличать измененные свойства элементов формы еще.. интересно как это сделано
121. unichkin 1342 12.03.19 09:59 Сейчас в теме
Добрый день! Только что опробовал на 8.3.13.1644. Очень помогло, большое спасибо)
Что заметил (создаю таблицу формы из дерева):
- НовыйЭлемент.ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиЭлементаФормы.Нет; -автоматически не добавилось
- НовыйЭлемент.СохраняемыеДанные = Ложь; - зачем-то добавляется, этот флаг и так по-умолчанию Ложь
122. unichkin 1342 12.03.19 19:03 Сейчас в теме
Еще заметил что не выгружается условное оформление формы. Не хватает возможности подцеплять внешнюю обработку.
123. user701287_darkowntheworld 07.04.19 21:46 Сейчас в теме
В "Декомпиляция управляемых форм 3.0.1 (с 8.3.5) (3.0 + разбор командной панели + клиент-сервер)" ошибка... Модуль формы
&НаКлиенте
Процедура ДеревоФормВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	
	Если ВыбраннаяСтрока = Неопределено Тогда
	
		Возврат;
	
	КонецЕсли; 
	
	ТекСтрока = Объект.ДеревоФорм.НайтиПоИдентификатору(ВыбраннаяСтрока);
	Если НЕ ПустаяСтрока(ТекСтрока.ПолныйПутьКФорме) Тогда
		//Имя справочника, имя документа, ....
		РодительФормы = ТекСтрока.ПолучитьРодителя();
		//Справочник, документ,....
		ТипОбъекта = РодительФормы.ПолучитьРодителя();
		
		СтруктИнфыОМетаданном = Новый Структура;
		СтруктИнфыОМетаданном.Вставить("ТипОбъекта",ТипОбъекта.Имя);
		СтруктИнфыОМетаданном.Вставить("ИмяОбъекта",РодительФормы.Имя);
		СтруктИнфыОМетаданном.Вставить("ИмяФормы",ТекСтрока.Имя);
		
		//Объект.ПолноеИмяФормы = ТекСтрока.ПолныйПутьКФорме;
		
		ДекомпиляцияЭлементов = Новый Структура("АдресВоВременномХранилище,ИмяПодключеннойОбработки,ИмяВременногоФайла",Объект.АдресВоВременномХранилище,Объект.ИмяПодключеннойОбработки,Объект.ИмяВременногоФайла);
		ПараметрыФормы = Новый Структура("ДекомпиляцияЭлементов",ДекомпиляцияЭлементов);
		
		Объект.ПолныйПутьКФорме = ТекСтрока.ПолныйПутьКФорме;
		ПолучитьФорму(ТекСтрока.ПолныйПутьКФорме,ПараметрыФормы);
		
		ЗаполнитьДанныеПоХранилищуНаСервере();
		
		//Развернуть дерево
		Для Каждого Строка Из Объект.ДеревоФорм.ПолучитьЭлементы() Цикл    
			Если Строка.Имя = СтруктИнфыОМетаданном.ТипОбъекта Тогда
				//Ищем объект
				Для Каждого СтрокаОбъект Из Строка.ПолучитьЭлементы() Цикл    
					Если СтрокаОбъект.Имя = СтруктИнфыОМетаданном.ИмяОбъекта Тогда
						//Ищем форму
						Для Каждого СтрокаФормы Из СтрокаОбъект.ПолучитьЭлементы() Цикл    
							Если СтрокаФормы.Имя = СтруктИнфыОМетаданном.ИмяФормы Тогда
								ИдентификаторСтроки = СтрокаФормы.ПолучитьИдентификатор();
// Было
//Элементы.ДревоФорм.ТекущаяСтрока = ИдентификаторСтроки;								
// Надо
Элементы.ДревоФорм.ТекущаяСтрока = Объект.ДеревоФорм.НайтиПоИдентификатору(ИдентификаторСтроки);	
							КонецЕсли; 
						КонецЦикла;
					КонецЕсли; 
				КонецЦикла;
			КонецЕсли; 
		КонецЦикла;
		
	КонецЕсли;
	
КонецПроцедуры
Показать
124. NoRazum 28 19.06.19 16:19 Сейчас в теме
Если в реквизите есть такое "Изображения[0].Адрес"
та падает с ошибкой.

Стандартная УНФ ((
Кто мог подумать что так сделают ?!?!
125. sh_progr 28.01.20 22:39 Сейчас в теме
Можно ли при программном добавлении команды в Действие = "..." указать процедуру из общего модуля? Чтобы в форме вообще не было никаких изменений
128. Hatson 424 20.05.20 11:38 Сейчас в теме
Необходимо исправить ошибку. Слетает параметр ИмяПодключеннойОбработки
Нужно закомментировать строчку:


Процедура ПоместитьПустыеДанныеВХранилище() Экспорт

	СохраненноеДеревоЭлементов = ЭтотОбъект.ДеревоЭлементов.Скопировать();
	СохраненноеДеревоЭлементов.Строки.Очистить();
	СохраненноеДеревоРеквизитов = ЭтотОбъект.ДеревоРеквизитов.Скопировать();
	СохраненноеДеревоРеквизитов.Строки.Очистить();
	СохраненнаяТаблицаКоманд = ЭтотОбъект.ТаблицаКоманд.ВыгрузитьКолонки();
	
	ЗаполнитьСоответствиеТекстовыхПредставлений();
	ЗаполнитьСоответствиеПредставленийТипов();
	
	ПараметрыДекомпиляции = Новый Структура("СоответствиеТекстовыхПредставлений,СоответствиеПредставленийТипов,ДеревоЭлементов,ДеревоРеквизитов,ТаблицаКоманд",
	СоответствиеТекстовыхПредставлений,СоответствиеПредставленийТипов,СохраненноеДеревоЭлементов,СохраненноеДеревоРеквизитов,СохраненнаяТаблицаКоманд);
	
	ЭтотОбъект.АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(ПараметрыДекомпиляции,ЭтотОбъект.АдресВоВременномХранилище);
	//ЭтотОбъект.ИмяПодключеннойОбработки = ЭтотОбъект.ИспользуемоеИмяФайла; // - ЭТА строчка лишняя!!
	ЭтотОбъект.ИмяВременногоФайла = ПолучитьИмяВременногоФайла(); 

Показать
129. itoptimum 26.08.20 11:51 Сейчас в теме
Не взяла кнопки командной панели,заключенной в группу, табличной части Товары документа РеализацияТоваровУслуг.ФормаДокументаТовары БП3, при добавлении строк
		НоваяСтрока = ПараметрыДекомпиляции.ДеревоЭлементов.Строки.Добавить();
			НоваяСтрока.Тип = Тип(Форма.Элементы.Товары.КоманднаяПанель.ПодчиненныеЭлементы.ТоварыДействия);
			НоваяСтрока.Имя = "ТоварыКоманднаяПанель";
СформироватьДеревоСЭлементамиФормы(НоваяСтрока,Форма.Элементы.Товары.КоманднаяПанель.ПодчиненныеЭлементы.ТоварыДействия.ПодчиненныеЭлементы);
начинает их видеть и корректно обрабатывать.

В БП3 для вызова без изменения модуля форм необходимых документов можно добавить блок в ОбщиеМодули.УправлениеСвойствами:
Процедура ПриСозданииНаСервере(Форма, ДополнительныеПараметры = Неопределено) Экспорт
	
	Если Форма.Параметры.Свойство("ДекомпиляцияЭлементов") Тогда
	    ВнешниеОбработки.Создать(Форма.Параметры.ДекомпиляцияЭлементов.ИмяПодключеннойОбработки,Ложь).ОпределитьВнутренниеСвойстваЭлементов(Форма);
	КонецЕсли; 


просуммировал тут все комментарии что были ранее, внес небольшие изменения, отправлю файл так же комментарием дальше
130. itoptimum 26.08.20 11:52 Сейчас в теме
131. cprit 442 14.09.20 10:42 Сейчас в теме
(0)Добрый день!
Прошу разрешения на включение вашего инструмента в свободно распространяемый набор "Универсальные инструменты 1С" https://github.com/cpr1c/tools_ui_1c.

Обработка сейчас бесплатна для скачивания. По идее лицензия должна быть подходящей, но хотелось бы уточнить.
Поддержку и дальнейшее развитие готовы взять на себя.

Буду благодарен за любой ответ
AnddnA; GarickRus; itoptimum; +3 1 Ответить
132. K_A_O 530 15.09.20 09:10 Сейчас в теме
Судя по тому, что обработка бесплатна для скачивания - файл можно здесь прикрепить.
Добавлен анализ некоторых новых свойств реквизитов для последних платформ.
И платформенные картинки разбираются.
Прикрепленные файлы:
ДекомпиляцияУправляемыхФорм_kao.epf
itoptimum; +1 Ответить
133. user592773_demon1995.27 29.09.20 16:36 Сейчас в теме
(132) Немного доработал и добавил добавление кнопок на командную панель табличной части (106)
Прикрепленные файлы:
ДекомпиляцияУправляемыхФорм_kao.epf
ubnkfl; Anchoret; K_A_O; +3 Ответить
Оставьте свое сообщение

См. также

DaJet Studio: расширенный язык запросов 1С, очереди сообщений и web сервисы Промо

Прочие инструменты разработчика Администрирование СУБД v8 Бесплатно (free)

DaJet Studio - разработка и управление скриптами, хранимыми процедурами и функциями, написанными на расширенном языке запросов 1С, а также очередями сообщений и web сервисами, основанными на использовании Microsoft SQL Server.

10.11.2020    3266    50    zhichkin    13    

Вызов демонов в 1С

Практика программирования v8 1cv8.cf Бесплатно (free)

Вызываем демонов прямо из 1С!

28.01.2021    5348    140    the1    31    

Микро сервис для работы с запросами SQL

Прочие инструменты разработчика v8 1cv8.cf Россия Бесплатно (free)

Альтернатива COM соединению с SQL базой, обработка запроса.

13.12.2020    3823    42    ivan1703    14    

Графит. Правщик 1С морд от kuzkov.info.2

Прочие инструменты разработчика v8 Бесплатно (free)

Вторая часть записок о разработке программы Графит, векторного правщика для быстрого рисования 1С морд. Обзор сделанного в виде текста описания, гифках и приложенных svg файлах для пощелкать в обозревателе.

02.12.2020    1599    13    Steelvan    6    

Подсистема "Инструменты разработчика" v5.80 Промо

Инструментарий разработчика v8 1cv8.cf Бесплатно (free)

Интегрированный набор инструментов разработчика: - консоль кода - консоль запросов - консоль построителя отчетов - консоль компоновки данных - консоль заданий - конструктор запроса - справочник алгоритмов - исследователь объектов - интерфейсная панель - настройка журнала регистрации - анализ журнала регистрации - настройка техножурнала - анализ техножурнала - подбор и обработка объектов - редактор объекта БД - редактор констант - редактор параметров сеанса - редактор изменений по плану обмена - редактор пользователей - редактор предопределенных - редактор хранилищ настроек - динамический список - поиск дублей и замена ссылок - контекстная подсказка - синтакс-помощник - поиск битых ссылок - поиск ссылок на объект - структура хранения БД - удаление объектов с контролем ссылок - и прочее

23.09.2007    557350    34115    tormozit    2768    

Быстрая кодогенерация программной доработки форм

Практика программирования v8 Бесплатно (free)

Данная статья является описанием идеи по быстрому получению кода для программной доработки форм. А также приглашением к участию в реализации данной идеи (даже звездочке на гите буду рад).

12.10.2020    2005    huxuxuya    29    

Ввод по строке для управляемых форм

Практика программирования v8::УФ 1cv8.cf Россия Бесплатно (free)

Ввод по строке с поиском по номеру телефона и наименованию контрагента с помощью обработчика "АвтоПодбор".

08.10.2020    1782    30    anrahell    1    

Консоль HTTP запросов

Консоль запросов v8 v8::УФ 1cv8.cf Бесплатно (free)

Консоль HTTP запросов для управляемых форм.

05.10.2020    3842    306    zarankony    4    

Исправление ошибки 1С:Предприятие 7.7/8.0 - 100% загрузка процессора при ожидании блокировки Промо

Практика программирования v8 Россия Бесплатно (free)

Цель использования: разгрузить процессор, когда два или более пользователей пытаются провести документ. 1С пытается заблокировать таблицы, но делает это без пауз, и загружает процессор на 100%. При этом пользователи практически "встают", и нормальная работа прекращается. Компонента (или патч) позволяет решить эту проблему и нормализовать работу пользователей. Особенно актуально при работе в режиме сервера терминалов.

13.12.2007    53661    7745    romix    79    

Модульная (open source) конфигурация "INFOSTART ERP community edition"

Практика программирования v8 1cv8.cf БУ УУ Бесплатно (free)

Учетная модульная конфигурация "INFOSTART ERP community edition" для ведения комплексного учета на предприятии.

31.08.2020    5287    359    33lab    66    

Файл тестов для xUnitFor1C: тестирование проведения документов

Тестирование и исправление Прочие инструменты разработчика v8 1cv8.cf Бесплатно (free)

Тестирование проведения документов. Проверяется, что: а) документ проводится; б) движения документа после перепроведения не изменились.

30.06.2020    4432    38    q_i    16    

Как сохранить данные табличного поля в табличный документ / файл Excel программно

Практика программирования v8 Бесплатно (free)

Пример сохранения табличного поля в табличный документ не через ПКМ -> Вывести список, с автоподбором ширины по содержимому.

31.05.2020    4565    0    rpashkovsky    15    

Пример работы MiracleV8.dll в режиме Управляемого приложения (тонкий клиент) Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Пример конфигурации Управляемое приложение с использованием MiracleV8.dll

09.04.2012    20567    218    Abadonna    26    

Нейроконструктор

Интеграция Искусственный интеллект (AI) Прочие инструменты разработчика v8 Бесплатно (free)

Изучайте нейронные сети и экспериментируйте вместе с расширением конфигурации "Нейроконструктор". Навыки программирования не требуются.

20.05.2020    10470    137    user1404129    19    

Загрузка, редактирование и установка цветовых схем (раскраски кода) в Конфигуратор и EDT

Работа с интерфейсом Прочие инструменты разработчика v8 1cv8.cf Бесплатно (free)

В современных IDE и текстовых редакторах есть удобная работа с цветовыми схемами: их можно загружать из файлов, выбирать из списка и сразу устанавливать в оболочку. К сожалению, в Конфигураторе и EDT цвета кода можно настроить только вручную. Этой разработкой хочу исправить эту проблему.

14.05.2020    8081    249    CyberCerber    32    

Универсальные инструменты 1С

Универсальные обработки Прочие инструменты разработчика Консоль запросов v8 1cv8.cf Бесплатно (free)

Свободно распространяемый набор универсальных обработок и отчетов в виде расширения для разработки и поддержки, которое работает во ВСЕХ видах клиентских приложений и во всех операционных системах, которые поддерживает платформа 1С:Предприятие, кроме мобильных. Консоль запросов - консоль отчетов - консоль кода - редактор объектов базы данных - удаление помеченных объектов - поиск и удаление дублей - редактор констант - консоль заданий - групповая обработка справочников и документов - динамический список - поиск ссылок на объект - регистрация изменений для обмена данными - структура хранения базы - консоль HTTP запросов-консоль вебсервисов- консоль сравнения данных- информация о лицензиях- загрузка из табличного документа-файловый менеджер-все функции- навигатор по конфигурации-конструктор регулярных выражений-Выгрузка загрузка XML с фильтрами

21.01.2020    35493    2225    cprit    107    

Формы. Трудности программной работы

Работа с интерфейсом v8 v8::УФ 1cv8.cf Бесплатно (free)

Рассматриваем основные подводные камни, с которыми приходится сталкиваться при программной работе с формами, а также способы обхода самых частых проблем.

06.10.2019    12347    YPermitin    31    

Одновременное использование хранилища и расширений

Практика программирования Инструментарий разработчика v8 Бесплатно (free)

Шастун Алексей поднимает вопрос одновременного использования хранилища и расширений. В статье рассмотрены плюсы и минусы хранилища и расширений, а также возможные варианты их использования. Также автор описывает два практических кейса по организации одновременного использования хранилища и расширений 1С в проектной группе из трех и более разработчиков.

23.08.2018    11060    shaa2    3    

Просмотр SQL-таблиц из 1С. Возможность очистки таблиц

Инструментарий разработчика v8 1cv8.cf Бесплатно (free)

Обработка позволяет соединиться с SQL-сервером (SQL-авторизация), получить список баз на сервере, после выбора базы - получить список таблиц. Позволяет вывести таблицу на просмотр, при необходимости очистить таблицу средствами SQL (delete from), просмотреть соответствие имен таблиц объектам конфигурации, в которой запущена база

29.08.2014    22521    414    Abadonna    4    

Native ВК для 1CV8: независимое чтение файлов *.xls и *.xlsx

Инструментарий разработчика v8 Россия Бесплатно (free)

Не требует установленного в системе Microsoft Office (Excel) и Open Office. Технология Native, не требует регистрации в реестре

15.08.2013    33086    390    Abadonna    161    

V8 FORMATTER: Расширенная версия

Инструментарий разработчика v8 1cv8.cf Бесплатно (free)

Форматирование кода модуля одним хот-кеем, ввод "неудобных" символов без переключения раскладки.

22.07.2013    20496    195    Abadonna    124    

MP3 - плейер на основе Miracle

Работа с интерфейсом v8 1cv8.cf Россия Бесплатно (free)

MP3 - плейер на основе Miracle с визуализацией спектра, уровней громкости каналов, времени проигрывания

31.03.2012    14431    38    Abadonna    1    

Информация по регионам и ФО с использованием Яндекс.Карт

WEB Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

Пример использования Yandex.Map API для отображения информации по регионам или федеральным округам РФ. Раскраска регионов и ФО, вывод меток, работа в режиме картограммы. Не привязан к какой-либо конфигурации. Просто пример. В 8.2 работает на толстом, тонком и WEB*-клиентах. *(WEB не во всех браузерах).

30.11.2011    5684    138    mgor    3    

Форма выбора координат Yandex карт (управляемая форма)

Универсальные обработки WEB Работа с интерфейсом v8 1cv8.cf Россия Бесплатно (free)

Обработка позволяет найти нужный адрес на карте Yandex. Отправить сообщение форме-владельцу или всем формам, со строкой координат.

06.09.2011    17340    369    motkot    27    

Задача: Программа, выводящая на экран свой исходный код (куайн)

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Программа, выводящая свой исходный код на экран, не пользуясь внешними источниками данных.

27.07.2011    10738    344    archie    17    

Информация по реквизитам объекта метаданных на полную глубину

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Дерево реквизитов объектов метаданных. На всю глубину (т.е. смотрит реквизиты у реквизитов).

10.06.2011    14287    162    kosmo0    5    

Обработка поиска дублей кода. Исходного кода модулей 1С

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Цель разработки - помочь в поиске похожих блоков кода для дальнейшего выделения их в отдельные процедуры.

12.04.2011    7165    206    bk-81    37    

Помощник для написания запроса в тонком клиенте

Инструментарий разработчика v8 1cv8.cf Россия Бесплатно (free)

Обработка дает возможность писать в тонком клиенте текст запроса не вручную, а перетаскивая имена таблиц, полей и конструкции языка запроса мышью.

01.04.2011    18422    310    boln    14    

Прикол над пользователями. 1 апреля

Работа с интерфейсом v8 1cv8.cf Россия Бесплатно (free)

Завтра первое апреля. День смеха)) Разбавление обычных будней. При открытии формы раскрашивает цветами радуги табличную часть.

31.03.2011    13818    84    Serj1C    20    

Не простой пример работы с флажками и деревом значений (исправление от 21.02.2011)

Работа с интерфейсом v8 1cv8.cf Россия Бесплатно (free)

1С.8х позволяет заполнять поле ввода списком значений из выполненного пользователем подбора, при этом контроль на уникальность элементов списка и вхождение в группы необходимо прописать программно (хотя и не сложно). В данном примере показано, как можно реализовать заполнение списка значений поля ввода из справочника /метаданные/, используя дерево значений, простой запрос и обработку помеченных элементов дерева.

20.02.2011    9352    299    demanru    2    

[Скрипт] Чтение EXIF данных

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Скрипт на C# для чтения Exif-данных из jpg-файла. Упакован в обработки для 8.1 и 8.2 (управляемые формы)

18.02.2011    22814    279    Душелов    14    

Шрифт для печати текста в рамочке.

Работа с интерфейсом v8 1cv8.cf 1cv7.md Россия Бесплатно (free)

Будет полезен для печати каждого символа текста в рамке без опасений за масштабирование, выход за пределы, настройки принтера и пр.

01.02.2011    16869    126    Sykoku    32    

Исполнение кода в модуле формы при разработке в 1С 8.2

Практика программирования Работа с интерфейсом v8 1cv8.cf Россия Бесплатно (free)

Немного теории о новом подходе к программированию форм в 1С 8.2 Рассматриваются директивы компиляции процедур и функций, которые определяются в модуле формы.

15.01.2011    26789    165    1cNike    19    

WSSpeedTest - обработка измерения скорости работы web сервера

EDT v8 1cv8.cf Россия Бесплатно (free)

Обработка собирает статистику по скорости ответов web сервера за длительный период времени.

20.12.2010    13984    40    nafa    4    

Запись текста модуля ert-файла из текстового файла

Инструментарий разработчика v8 1cv8.cf Россия Бесплатно (free)

Написано для особо ленивых (т.е. для меня) под узкую задачу при работе с конвертацией данных. Но, наверное, может использоваться и для других целей.

02.12.2010    22459    143    Abadonna    40    

Запрос против рекурсии или разузлование номенклатуры

Практика программирования Учет ТМЦ Учет ТМЦ v8 КА1 Россия БУ Бесплатно (free)

В задаче "разузлования" номенклатуры в БП 1.6 (2.0) покажем , что запрос более эффективен, чем рекурсия.

23.11.2010    51711    824    Ish_2    258    

Выполнение кода C# из 1С

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Обработка показывает возможности выполнения кода С# из программы 1С.

23.11.2010    11717    248    AlkB    9    

Братья и сестры, кузены и кузины в Структуре подчиненности

Работа с интерфейсом v8 БП2.0 УПП1 Россия Бесплатно (free)

ФормаСтруктурыПодчиненности в типовых конфигурациях не показывает все ветви, если ее вызвать из потомка. Небольшое изменение.

04.11.2010    9154    108        12    

Экспорт встроенных XML-схем описаний типов 1С:Предприятия

Обмен через XML Практика программирования v8 1cv8.cf Бесплатно (free)

Экспорт встроенных XML-схем описаний типов 1С:Предприятия

01.11.2010    22117    200    Dmitryiv    7    

Консоль команд

Инструментарий разработчика v8 1cv8.cf Бесплатно (free)

Написание и выполнение кода прямо в режиме предприятия

21.10.2010    5885    286    RafaelRS    11    

АЦРК: Взаимодействие с сайтом (HTTP)

WEB Инструментарий разработчика v8 1cv8.cf Бесплатно (free)

Обработка демонстрирует взаимодействие программы на 1С с веб-сайтом. Оказывается, это не так сложно.

11.10.2010    15990    158    acrk    2