gifts2017

Декомпилятор форм

Опубликовал Sverkalov Сверкалов (Sverkalov) в раздел Программирование - Инструментарий

01.02.2009 Новая версия может почти всё!

Внесение изменений в ТК 1С с использованием программного кода без корректировки форм объекта.
Позволяет упростить обновление конфигураций, не заботиться о форме объектов.
Получить код можно данной обработкой.
1. Добавляем форму объекта в формы обработки - называем ее ("Форма докум ....) (КОНФИГУРАТОР)
2. Комментируем модуль формы (для исключения ошибок вызова, может быть обращение к объекту) и ли удаляем весь текст модуля.
3. Добавляем НОВЫЕ элементы диалога (КОНФИГУРАТОР-ОБРАБОТКА-форма объекта)
4. Сохраняем обработку.
5. Запускаем обработку в режиме предприятия, выбираем нужную форму, получаем текст,
   который добавляем в процедуру "ПриОткрытии" (лучше в отдельную процедуру вызываемую при открытии) модуля формы объекта конфигурации.

01.02.2009 Новая версия МОЖЕТ ПОЧТИ ВСЕ.

Обрабатываются

- расположение элементов формы на панелях и страницах;

- колонки табличных палей;

- кнопики командных панелей;

- меню кнопок;

- действия элементов форм и т.д

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

Наименование Файл Версия Размер
- 553
.1193077895 15,67Kb
25.09.09
553
.1193077895 15,67Kb Бесплатно
- 489
.1233505800 22,80Kb
25.09.09
489
.1233505800 22,80Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. angro (angro) 23.10.07 09:05
>Внесение изменений в ТК 1С с использованием программного кода
а что такое ТК?
2. Герман (German) 23.10.07 09:13
Тогда уж .. декомпилятор модуля формы
А то я уже обрадовался..

А что толку его смотреть вот править бы..
3. Герман (German) 23.10.07 09:56
Да начал ругать когда еще не посмотрел .. но из описания было понятно (2)
Результат лучше выложить в описании

а так однозначный +

только жаль что событий элемента управления нет
4. angro (angro) 23.10.07 10:07
5. Sverkalov Сверкалов (Sverkalov) 23.10.07 10:25
ТК - типовая конфигурация

Есть уже вариант который позволяет получать таблицы, колонки,
события на элементах и формах. Выдает только элементы с определенным префиксом.
Но это чуть позже. Надо подумать.
6. Сhe Burashka (CheBurator) 23.10.07 14:02
будем следить за разработкой...
7. cs25 (cs25) 23.10.07 14:37
8. Сергей Старых (tormozit) 24.10.07 00:30
Сначала подумал, что вот оно!
Но теперь посмотрел и понял, что не оно и затея в общем то гиблая.
Добавь на вложенную панель элемент формы любой и поймешь, что нельзя его однозначно воссоздать. У элемента формы нет ссылки на панель, к сожалению.
9. Sverkalov Сверкалов (Sverkalov) 24.10.07 10:03
ну кое что надо и руками
10. Sverkalov Сверкалов (Sverkalov) 24.10.07 10:55
tormozit
вы же это уже занаете
http://www.kb.mista.ru/article.php?id=327
http://kb.mista.ru/article.php?id=165
да есть тупички но на что нам наши руки,
а формы объектов типовых конфигураций лучше не трогать
товоя цитата "Если это делать прямо в диалоге формы, то обновление релиза может преподнести неприятные сюрпризы."
11. Герман (German) 24.10.07 11:13
(8) Методы то есть .. но они очень тяжелы
12. Sverkalov Сверкалов (Sverkalov) 24.10.07 11:35
11
Если есть метод определения принадлежности элемента формы панели ли странице панели укажи
добавлю и выложу свежий вариант
13. Герман (German) 24.10.07 11:42
15. Сергей Старых (tormozit) 29.10.07 08:03
(12) Используй деструктивный анализ. Удаление страниц панели и проверка существования элемента формы после удаления каждой страницы.
16. Сергей Старых (tormozit) 29.10.07 08:05
По-хорошему нужно сделать выбор формы через дерево метаданных. Если подобных наработок у тебя в наличии нет, то конечно немного придется попотеть. Зато в итог будет намного большая универсальность.
17. Сергей Старых (tormozit) 29.10.07 08:09
Строгий алгоритм такого "разворачивания" структуры формы в код должен использовать полное описание всех типов элементов управления вместе с их расширениями. Такое полное описание есть в http://infostart.ru/projects/848, правда в отношении элементов форм функционал пока не доведен до ума, но описание всех свойств по типам и расширениям типов элементов управления есть.
18. Sverkalov Сверкалов (Sverkalov) 29.10.07 09:14
(14)
измененной формы не должно быть в конфигурации
19. Василий Демидов (Душелов) 15.03.09 17:21
Тестовая форма не верно декомпилится. Как минимум ошибка в

Текст.ДобавитьСтроку(Таб + "ЭлементыФормы."+ЭлементТаблицы.Панель+".ТекущаяСтраница = ЭлементыФормы."+ЭлементТаблицы.Панель+"."+ЭлементТаблицы.Страница+";");

Скобка не нужна на конце, перед ;

Ну и ругается на текущие страницы панели.
20. BabySG (BabySG) 07.04.09 15:59
(0) Предупредили бы, что префикс максимум из 2-х символов определяется...
21. BabySG (BabySG) 07.04.09 16:08
А я что-то не так делаю, или парсер не определяет, что я добавил новую страницу на панель?
22. BabySG (BabySG) 07.04.09 16:32
В модуле обработки заменить строку 180 на:
Текст.ДобавитьСтроку(Таб + "ЭлементыФормы."+ЭлементТаблицы.Панель+".ТекущаяСтраница = ЭлементыФормы."+ЭлементТаблицы.Панель+".Страницы."+ЭлементТаблицы.Страница+";");
Иначе неверно формируется обращение к текущей странице

В (18) не вся ошибка исправлена.
23. BabySG (BabySG) 07.04.09 16:35
Строка 254, заменить на:
Текст.ДобавитьСтроку(Таб + "ЭлементыФормы."+ЭлементТаблицы.Панель+".ТекущаяСтраница = ЭлементыФормы."+ЭлементТаблицы.Панель+".Страницы."+ЭлементТаблицы.Страница+";");
24. BabySG (BabySG) 07.04.09 17:23
Не распарсил кнопку на КП ОсновныеДействияФормы...
25. BabySG (BabySG) 07.04.09 17:37
Если элемент связан с данными, тип значения нельзя устанавливать.
Например, поле ввода будет создаваться с ошибкой в этом случае.
26. BabySG (BabySG) 07.04.09 17:48
+(25) поле ввода для табличного поля, связанного с табличной частью.
27. BabySG (BabySG) 07.04.09 19:07
Сортировка по элементам некорректно работает - командная панель пытается создаться раньше, чем табличное поле, на основании которого она работает.

Для правильно работы КП необходимо условие изменить (по заполнению кнопок)
ИначеЕсли ЭлементФормыСтр = "Командная панель" Тогда
		Если НЕ Элемент.Автозаполнение Тогда
			Для Каждого Кнопка Из Элемент.Кнопки Цикл
				ТекстКнопка = "Кнопка"; 
				ТекстЭлемент = Элемент.Имя; //ЭлементТаблицы.Имя;
				ДобавитьКнопку(Элемент,ТекстЭлемент,ТекстКнопка,Кнопка,Таб,0,ТолькоКнопки);
			КонецЦикла;			
		КонецЕсли; 
...Показать Скрыть

28. Тимофей Бугаевский (boogie) 21.08.09 17:36
А как это можно в семёрке сделать? Я обыскался декомпилятор :(
29. vip (vip) 21.08.09 17:39
30. Виктор (obmailok) 17.02.10 11:52
Строка:

пФормаКопия.ЭлементыФормы[ЭлементНастройкиМакета.Имя].Страницы.Удалить(0);

вызывает ошибку, если в модуле формы идет обращение к удаленной странице.
Например:

Если Элемент.Страницы[ТекущаяСтраница] = Элемент.Страницы.ОбщиеЗначения Тогда...

А страницы уже нет.
31. aaa xxx (kvckp) 11.07.11 19:22
1. Сложные формы с панелями не обрабатывает, вылетает с ошибкой:
{ВнешняяОбработка.ДекомпиляцияИАнализФорм.МодульОбъекта(428)}: Метод объекта не обнаружен (ПолучитьПривязку)
Элемент.ПолучитьПривязку( Граница, ПервыйЭлемент, ГраницаПервогоЭлемента, ВторойЭлемент,

2. Из чисел можно было сразу убирать Символы.НПП и заменять запятую на точку.
32. РазДва РазДва (РазДва) 22.09.11 10:25
33. РазДва РазДва (РазДва) 09.11.11 14:00
34. Serg S (mdSerg) 13.01.12 00:18
хотел скачать - надо какие-то мани
чушь полная платить мани за это
35. Serg S (mdSerg) 13.01.12 00:29
файла 2 - 1 скачался, а 2ой опять просит мани
Трудно понять и оценить обработку, которую не можешь скачать
36. Sverkalov Сверкалов (Sverkalov) 13.01.12 09:47
37. Sverkalov Сверкалов (Sverkalov) 13.01.12 09:49
(35) mdSerg, Обработка бесплатная. Видимо Инфостар советую скачать http://infostart.ru/public/99363/ там эта обработка встроена а работать с ней удобнее.