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

28.11.11

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

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

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

Наименование Файл Версия Размер
ДекомпиляцияЭлементовФормы.epf
.epf 28,16Kb
445
.epf 28,16Kb 445 Скачать

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

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

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

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

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

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


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

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

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

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

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

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

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

 

См. также

SALE! 20%

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 10400 руб.

02.09.2020    121592    670    389    

710

SALE! 25%

Infostart PrintWizard

Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

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

18000 15300 руб.

06.10.2023    7260    21    6    

39

SALE! 20%

Infostart УДиФ: Управление данными и формами

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

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

10000 8000 руб.

10.11.2023    3496    11    1    

33

SALE! 30%

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

3600 2520 руб.

14.01.2013    177723    1073    0    

849

Многопоточность. Универсальный «Менеджер потоков» 2.1

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    99338    239    97    

296

[ЕХТ] Фреймворк для Расширений 1С

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Платные (руб)

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    18101    6    8    

39

1С HTML Шаблоны / HTML Templates

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    28091    3    10    

15

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

Инструментарий разработчика Обмен между базами 1C Платформа 1С v8.3 Платные (руб)

В процессе работы в 1С часто возникает потребность получить данные из другой базы.  Обычно это делается через COM-соединение, и время выполнения запроса при этом оставляет желать лучшего. В данной публикации представлено универсальное решение, позволяющее практически моментально выполнить произвольный код или запрос с параметрами в другой информационной базе через Web-сервис.

2400 руб.

24.09.2019    23594    15    15    

32
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
91. bambr1975 877 27.04.12 18:15 Сейчас в теме
Системные кнопки тоже не видит. Вернее, их действия

Ну... это смотря как эти действия задавать. У меня видит.
94. AlexO 135 27.04.12 18:19 Сейчас в теме
(91) bambr1975,
ну например, вот так:
кпПроектКнопки.Вставить(1,"Скопировать",ТипКнопкиКоманднойПанели.Действие,"&Скопировать",Новый Действие("Скопировать"));

хотел системную кнопку "Скопировать" заарканить.
93. bambr1975 877 27.04.12 18:18 Сейчас в теме
Вы в табличное поле можете вывести табличную часть объекта.
У Вас в объекте есть табличная часть "МенеджерыПроектов"?
96. AlexO 135 27.04.12 18:20 Сейчас в теме
(93) bambr1975,
это и есть табличная часть, со своими реквизитами, которые идут на колонки ТП.
Иначе бы ругалась на несовместимость типов ))
95. bambr1975 877 27.04.12 18:19 Сейчас в теме
А теперь проверьте, что в сформированном вами коде !ОБЯЗАТЕЛЬНО! должжна присутствовать строка
ТабличноеПоле.ТолькоПросмотр=ложь;
(автоматом не формирует!)
97. AlexO 135 27.04.12 18:21 Сейчас в теме
(95) bambr1975,
а вот это не проверял.
Попробую заново переделать - может, протолкнет ))
98. bambr1975 877 27.04.12 18:24 Сейчас в теме
Там немного по-другому надо...
Попробуйте разобраться с методом СтандартноеДействие=ЗначениеВСтрокуВнутр(Кнопка.Действие) - для нужного вам действия, а потом запишите в переменную результат Действие=ЗначениеИзСтрокиВнутр(СтандартноеДействие)
И тогда уже:
кпПроектКнопки.Вставить(1,"Скопировать",ТипКнопкиКоманднойПанели.Действие,"&Скопировать",Действие);
100. AlexO 135 28.04.12 12:27 Сейчас в теме
(98) bambr1975,
Попробуйте разобраться с методом СтандартноеДействие=ЗначениеВСтрокуВнутр(Кнопка.Действие)

Андрей, а откуда взять Кнопка.Действие, если "Скопировать", положим, нет на форме в принципе? И нет как класса, который можно было бы инициализировать.
101. bambr1975 877 28.04.12 12:33 Сейчас в теме
(100) AlexO, мы же говорим о том, что Вы декомпилируете СУЩЕСТВУЮЩУЮ форму с СУЩЕСТВУЮЩИМИ кнопками стандартных действий - и полученный код в дальнейшем хотите использовать при программном создании элементов у другой формы. Поэтому - кнопка со стандартным действием "Скопировать" на форме-источнике у Вас должна быть. А на форме-приемнике вы эту кнопку с этим стандартным действием создадите программно
102. AlexO 135 28.04.12 13:14 Сейчас в теме
(101) bambr1975,
т.е. получается, что для этого мне надо держать в этом же документе форму-дублер "как она есть" со всеми программными наворотами, которые я делаю на другой форме? Но это не практично ))
По сути - тоже самое, как если я делаю копию формы, меняю её, как надо, и запускаю вместо типовой - т.е. мой "любимый" вариант ))
103. bambr1975 877 28.04.12 13:27 Сейчас в теме
(102) AlexO, даже не знаю, что вам подсказать. Может, чтобы понять, о чем я говорю, Вам нужно вызвать:
Сообщить(ЗначениеВСтрокуВнутр(Кнопка.Действие))
Это ведь строка. А что мешает Вам эту строку использовать отдельно от самой формы-источника?
В любом случае - в моей обработке, ссылка на которую есть выше это уже реализовано.
105. AlexO 135 28.04.12 14:05 Сейчас в теме
(103) bambr1975,
А что мешает Вам эту строку использовать отдельно от самой формы-источника

Т.е. я создаю панель в конфе, беру действие любой кнопки ЗначениеВСтрокуВнутр, удаляю исходную панель навсегда, и использую полученное действие теперь везде и всюду?
Или я не так понял Вас?
В обработке выше ЗначениеВСтрокуВнутр не используется.
107. bambr1975 877 28.04.12 14:16 Сейчас в теме
(105) AlexO, В обработке выше есть функция "Декомпилировать изменения" - с ее помощью можно создать код для программной генерации и модификации элементов двух отличающихся форм. Сначала посмотрите, потом утверждайте.
Во вложении dt-ник базы с одним общим модулем (не глобальным) - где и выполнены все программные изменения и обработкой, в которой табличное поле и командная панель создаются программно, обращаясь к этому общему модулю.
Прикрепленные файлы:
1Cv8.dt
108. AlexO 135 28.04.12 14:43 Сейчас в теме
(107) bambr1975,
Сначала посмотрите, потом утверждайте.

Позвольте, позвольте, к сообщению (105) - не может быть никаких подобных претензий ))
(107) bambr1975,
Там все та же обработка, что и выше - ЗначениеСтрВнутрь не используется.
Панель коммандная формируется все также автозаполнением.
//!!!возможно, в объекте отсутствует реквизит ТабличноеПоле1, на который ссылается свойство "Данные"!!!!

а зачем проверку-то удалили? ноу-хау? :))
есть функция "Декомпилировать изменения"

Что это за функция - можете ли Вы на примере объяснить? Сравнить элементы на двух формах?
109. bambr1975 877 28.04.12 15:38 Сейчас в теме
(108) AlexO, честно-слово, мне ТАК НЕЛОВКО, третий раз !в чужой ветке! давать ссылку на мою обработку http://infostart.ru/public/106310/ в которой, как раз и есть функция "Декомпилировать изменения". Если у Вас хватит мужества перейти по ссылке - там "на примерах" с картинками показано, как производится сравнение элементов в двух формах.
Чтобы в очередной раз не убеждать Вас в том, что Вы все-таки невнимательный, поскольку говоря:
В любом случае - в моей обработке, ссылка на которую есть выше это уже реализовано

я все-таки имею в виду, что была дана ссылка на обработку, которая это умеет, а не смоделирован пример во вложении к сообщению.
Делаю еще один пример - уже с функцией ЗначениеВСтрокуВнутр (dt во вложении). Считаю, что наш разговор на этом должен завершиться.
Прикрепленные файлы:
1Cv8.dt
SunShinne; +1 Ответить
110. AlexO 135 28.04.12 16:42 Сейчас в теме
(109) bambr1975,
Вот! вот теперь это то самое! )
Теперь этот код - со СтрВнутр - можно вставлять как типовой во все конфиги (т.е. ссылки на паттерны одинаковые).
Спасибо! Я ЗначениеИзСтрВнутр пробовал, но ТолькоПросмотр у ТП мне портил всю малину, и я отверг тот вариант тоже.
Если у Вас хватит мужества перейти по ссылке

мне тоже неловко, но по ссылке я уже давно перешел, еще до Вашего сообщения, но описание механизма "Декомпилировать изменения" не нашел..
Давайте там спишемся...
104. AlexO 135 28.04.12 13:47 Сейчас в теме
Разобрался с системными перечислениями - оказалось, в глобальном модуле платформа тычется искать имена перечислений как имена процедур (функций), и нужно принудительно делать модуль, в котором используются системные перечисления, неглобальным (т.к. синтаксиса "СистемноеПеречисление.ГраницаЭлементаУправления" не предусмотрено).
В неглобальном модуле - пишем вызов системного перечисления "ГраницаЭлементаУправления.Низ".
Такая неоднозначность - опять же следствие отсутствия работы с объектами (в данном случае - неоднозначный вызов СистемногоПеречисления).
(101) bambr1975,
АвтоЗаполнение заработало (кто бы мог подумать - действительно ТолькоПросмотр = Истина у программно создаваемой ТП), но, как я и писал, только если в модуле формы - в общем модуле оно заполняет, но т.к. действия не обнаружены - программные кнопки на форме погашены.
Что тоже не комильфо - все писать в модуле формы (отсутствует контекст объекта форма, который можно было бы передавать и пользовать, подобие чего было в 7.7).
99. bambr1975 877 28.04.12 11:00 Сейчас в теме
В обработке http://infostart.ru/public/106310/ появилась тестовая возможность "Декомпилирование изменений". Может, кому-то пригодится.
106. AlexO 135 28.04.12 14:08 Сейчас в теме
Я бы апплодировал 1с (конечно, в рамках того, что "хоть что-то есть"), если бы я мог вызвать из глобальника создание ЛЮБЫХ элементов на форме, и оно бы сработало, куроча типовую только на одну строчку - строчку вызова глобальной функции.
113. Ejnar 12.07.12 16:34 Сейчас в теме
Спасибо, как раз столкнулся с такой постановкой задачи.
116. big_ooo 39 23.10.12 12:37 Сейчас в теме
Благодарю за обработку очень помогает! Единственное не удается декомпилировать Форму элемента справочника Контрагенты, при установке курсора 1с вываливается в Runtime Error и закрывается! проверено на УПП релиз платформы 8.2.16
119. Sean1s 8 21.06.13 04:35 Сейчас в теме
(116) big_ooo, подтверждаю. КА, платформа 8.2.18. На Справочники.Контрагенты.ФормаЭлемента "падает" с "Runtime Error!".
117. sergant500 15.02.13 23:16 Сейчас в теме
Давненько не было развития отличной обработки.
Нашел пару косячков:
Создал в копии формы документа «Реализация товаров и услуг» БП 2.0 реквизит в шапке «Проект» тип «СправочникСсылка.Проекты» и реквизит «Этап» тип «СправочникСсылка.Этап» в табличной части услуг. В шапке реквизит «Проект» привязан к правой границе панели «ПанельОрганизация».
Обработка не правильно формирует привязку
ПолеВвода.УстановитьПривязку(ГраницаЭлементаУправления.Право,ЭтаФорма.Панель,ГраницаЭлементаУправления.Право);

Надо
ПолеВвода.УстановитьПривязку(ГраницаЭлементаУправления.Право,ЭтаФорма.ЭлементыФормы.ПанельОрганизация,ГраницаЭлементаУправления.Право);

Также ошибочно формируется строка (недопустимое значение параметра)
Колонка.ЭлементУправления.ТипЗначения = Новый ОписаниеТипов("Этапы",,,);

Этой строки вообще не должно быть.
118. alekseies 19.02.13 14:10 Сейчас в теме
Очень помогает экономить время на программном добавлении или изменении элементов в форме ............
Плюс однозначно ;)
122. ekaruk 4896 27.04.14 18:27 Сейчас в теме
А нет ли чего-то аналогичного для управляемых форм?
123. webester 26 30.08.14 23:23 Сейчас в теме
Я буду внимательнее читать описание публикаций.
124. Istur 1472 01.09.14 13:54 Сейчас в теме
(123) webester, пожалуй это самый идиотский комментарий, который я читал за все время. Прочтите внимательно описание, именно там я как раз еще 3 года назад все написал и получите ответы на все вопросы! А еще так же можете скачать другие разработки и посравнивать код. Не, количество всякого невменько среди программистов 1с как-то зашкаливает.
125. webester 26 03.09.14 06:02 Сейчас в теме
(124) Вы правы на 100% приношу свои извинения.
126. ekaruk 4896 29.09.14 01:23 Сейчас в теме
Не нашла аналогичную для управляемых форм.
Пришлось писать свою http://infostart.ru/public/304736/
128. buganov 200 07.07.15 13:58 Сейчас в теме
Вылетает при декомпиляции ФормыДокумента ОприходованиеТоваров. Форма немного изменена. Конфа УПП. Сначала долго обрабатывает в ПеренестиПодчиненныеСтроки(СтрРодительПриемник,СтрИсточник), а потом тупо выкидывает из режима предприятия
129. buganov 200 07.07.15 14:09 Сейчас в теме
130. Cthulhu 1 30.08.23 12:40 Сейчас в теме
такой вопрос, уважаемые гуру(-ы?).
как-то можно нарисовать функцию, которую можно вызвать из "ПередОткрытием" (или из любого нужного места - в котором все нужное уже перерисовано кодом, например), передав в параметрах эту форму и имя файла - а эта функция полученную в параметре форму выгрузит в xml-файл (с указанным в другом параметре именем) - в формате, пригодном для загрузки этой формы из этого xml-файла в конфигураторе (запуск с параметром LoadConfigFromFiles)?
это бы закрыло вопросы с взаимным преобразованием "нарисованная форма" <==> "закодированная форма" - что позволило бы:
1) "дорисовать" нужное в диалоге формы в конфигураторе;
2) дорисованное перенести в код и вернуть исходный вид диалога формы;
3) и при необходимости дальнейшего дорисовывания#2:
3а) перенесенное ранее (см.п.2) в код - перенести в конфигураторе(!) обратно в диалог(!);
3б) дорисовать еще что нужно;
3в) выполнить п.2. выгрузив дорисованное ранее и сейчас, накладываемое на исходный вариант диалога.
Оставьте свое сообщение