Декомпиляция и анализ форм с генерацией кода формы (обычное приложение)

Опубликовал MRAK в раздел Администрирование - Сервисные утилиты

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

Данная обработка является попыткой объединения двух замечательных проектов, которые, к сожалению, уже давно не развиваются:

Деструктивный анализ формы: http://infostart.ru/projects/2412/

Декомпилятор форм: http://infostart.ru/projects/1343/

Теоретическая база проекта: http://www.kb.mista.ru/article.php?id=650&

кроме объединения этих двух разработок в одну я добавил поддержку всех типов метаданных и улучшил "под себя" эргономичность использования.

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

При открытии формируется дерево метаданных. Выбираем нужный тип метаданных, затем нужный объект, затем интересующую нас форму.

Во 2-м окне видим описание всех элементов выбранной формы.

При двойном щелчке мыши на интересующем нас элементе в 3-м окне получим свойства элемента.

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

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

 

Решения, созданные при помощи данной обработки:

http://infostart.ru/public/99363/

http://infostart.ru/public/65449/

Файлы

Наименование Файл Версия Размер Кол. Скачив.
ДекомпиляцияИАнализФорм_3.epf
.epf 34,60Kb
06.01.10
116
.epf 34,60Kb 116 Скачать
ДекомпиляцияИАнализФорм_4.epf
.epf 34,89Kb
08.01.10
1501
.epf 34,89Kb 1501 Скачать

См. также

Лучшие комментарии

48. e.kogan 30.11.2009 11:24
(47) Посмотрите приложенный файл.
Ответили: (49)
+ 3 [ victorkim64; Umka18; MRAK; ]
# Ответить
51. vorlogo 09.12.2009 04:11
буквально один вопрос - как вы затем используете полученный текст? Если в тексте модуля самой формы, то не будет ли метод ЭлементыФормы.Добавить() конфликтовать с тем, что элементы уже существуют? Или вы удаляете все элементы с формы? но это же неудобно
Ответили: (52)
+ 1 [ ask8155; ]
# Ответить
129. svilsa 11.10.2013 15:40
Очень понравилась обработка, потому что была проблема с правильной привязкой надписи при программном добавлении элемента на форму 1С, я воспользовалась советом из другого форума: сначала в копии базы с помощью графического интерфейса добавила надпись на форму - проверила, чтобы все отображалось правильно, потом воспользовалась данной обработкой и просто вставила полученный код элемента в процедуру программного добавления элементов
+ 1 [ u_n_k_n_o_w_n; ]
# Ответить
16. Ulcer 04.09.2009 13:32
2(0)
По поводу ошибки
СтраницаПанели = ЭлементНастройкиМакета.Страницы[ПеремЦикла-1];

Ошибка в модуле формы.
""ФормаКопия = Форма;"" - нельзя так. Получается две ссылки на один и тот же объект.
Ответили: (19)
+ 1 [ MRAK; ]
# Ответить
76. Dirk Diggler 08.01.2010 10:09
доработал пару строк. под себя, так что не обессудьте что под 8.2
Ответили: (79)
+ 1 [ MRAK; ]
# Ответить

Комментарии

1. raiml 04.09.2009 10:04
Супер! Спасибо за труд.
Ответили: (8) (98)
# Ответить
2. sound 04.09.2009 10:17
Нормально! Тока на некоторых формах ашипка вылазит
СтраницаПанели = ЭлементНастройкиМакета.Страницы[ПеремЦикла-1];
Ответили: (8) (3)
# Ответить
3. MRAK 04.09.2009 10:18
(2) это я в курсе, в P.S. написал... начал копать в эту сторону, но времени слишком мало
Ответили: (7)
# Ответить
4. dushelov 04.09.2009 10:19
Если рабочая, то плюс авансом. Посмотрю на досуге.
Ответили: (8) (5)
# Ответить
5. MRAK 04.09.2009 10:20
(4) не полностью рабочая, при разборе панелей пока могут вываливаться ошибки
# Ответить
6. Арчибальд 04.09.2009 10:20
Редко плюсую восьмерочное. Но здесь не удержусь...
Ответили: (8)
# Ответить
7. sound 04.09.2009 10:22
(3) ага это я не дочитал, хотелось сразу пробовать :)
# Ответить
8. MRAK 04.09.2009 10:28
(1), (2), (4), (6) обновил файл! теперь ошибок будет меньше!
# Ответить
9. sound 04.09.2009 10:29
Думается надо
1) чтоб сразу форма максимизировалась
2) тока чтение
Ответили: (12)
# Ответить
10. Ish_2 04.09.2009 10:33
Не скачивая , сразу +.
# Ответить
11. Шёпот теней 04.09.2009 10:52
предлагаю вернуть Гений 1С в лоно ИС ....

... комментарий не к теме: "но страна должна знать своих героев" ...

... спасибо за ссылки в описании обработки ...

... удАчи ...
Ответили: (13)
# Ответить
12. MRAK 04.09.2009 10:59
(9) точно, так лучше. подправил
# Ответить
13. MRAK 04.09.2009 11:04
(11) не ради славы, а ради того, штоб поделиться... ну и на развитие проекта надеюсь, не обязательно мною.

Тут еще много чего можно сделать, например сравнение двух форм и генерации кода различий для них.
Ответили: (14)
# Ответить
14. dushelov 04.09.2009 11:08
(13) А от меня отдельный респект ;), воспользуюсь в своих низменных целях, для компилятор 1С-кода, у меня как раз застопорилось на разборе и генерации win-форм на основе 1С-ных.
# Ответить
15. asady 04.09.2009 13:27
Молодец

только вот проект затух как бесперспективный, поскольку вышла 8.2. Зачем пытаться делать свою виртальную форму если уже есть управляемые формы. Кроме того, как быть с обработчиками событий у этих форм реализующих прикладную логику? их ведь динамически получить практически невозможно.
Ответили: (18) (17)
# Ответить
16. Ulcer 04.09.2009 13:32
2(0)
По поводу ошибки
СтраницаПанели = ЭлементНастройкиМакета.Страницы[ПеремЦикла-1];

Ошибка в модуле формы.
""ФормаКопия = Форма;"" - нельзя так. Получается две ссылки на один и тот же объект.
Ответили: (19)
+ 1 [ MRAK; ]
# Ответить
17. MRAK 04.09.2009 13:37
(15) ну эт не я молодец... насчет остального - типовые конфы под 8.1 еще. данную обработку как раз для них использую. Насчет обработчиков, да их практически невозможно вытащить, но это и не особо нужно, в режиме попроцедурном объединении модуля формы это все легко разруливается.
# Ответить
18. Ulcer 04.09.2009 13:40
2(15)
С обработчиками событий как раз всё нормально.

В 8.2 у элемента формы есть "Родитель" - могильщик текущего проекта.
Ответили: (19)
# Ответить
19. MRAK 04.09.2009 13:42
(16) спасибо, как раз дошел сейчас до этого места
(18) так он про 8.1 говорит насчет обработчиков
Ответили: (20)
# Ответить
20. Ulcer 04.09.2009 13:43
2(19)
ПолучитьДействие()
УстановитьДействие()
Ответили: (22)
# Ответить
21. artbear 04.09.2009 15:12
Я для себя дорабатывал
Деструктивный анализ формы - http://infostart.ru/projects/2412/
1. В текстовый макет "СвойстваЭлементовФормы" добавил свойства типа
ДействиеПриИзменении (Action_ПриИзменении)
ДействиеНажатие (Action_Нажатие)
ДействиеОбработкаВыбора (Action_ОбработкаВыбора)
2. Далее в цикле обработки строк макета выполняю проверку реквизита на то, что в начале его имени стоит Действие, и через ПолучитьДействие получаю имя обработчика.
// -- Артур -- 05.02.2009 - получим обработчики действий
лИмяДействия = "";
лДлинаСловаДействия = СтрДлина("Действие");
Если Лев(тИмя, лДлинаСловаДействия) = "Действие" Тогда
лИмяДействия = Сред(тИмя, лДлинаСловаДействия+1);
КонецЕсли;
Если лИмяДействия <> "" Тогда
Попытка
лДействие = Вычислить("тЭлемент.ПолучитьДействие("""+лИмяДействия+""")");
тЗнач = Строка(лДействие);
Исключение
Продолжить;
КонецПопытки;
Сообщить("лДействие = <"+?(лДействие = Неопределено, "Неопределено", лДействие)+">");
//Выполнить("тФорма."+лДействие+"(Неопределено)");
Иначе
// --завершение
Попытка
тЗнач=тЭлемент[тИмя];
Исключение
Продолжить;
КонецПопытки;
// -- Артур -- 05.02.2009 - получим обработчики действий
КонецЕсли;
Ответили: (22)
+ 1 [ MRAK; ]
# Ответить
22. MRAK 04.09.2009 17:28
(20) Точно, есть такое, я просто в эту сторону не копал.

Мне этот функционал без надобности, хотя мож кому пригодится...

(21) Ок, спасибо за готовый код, можно опционально включить в обработку.
# Ответить
23. Istur 06.09.2009 18:33
У меня все равно выдает эту ошибку((

"Индекс находится за границами массива
СтраницаПанели = ЭлементНастройкиМакета.Страницы[ПеремЦикла-1];"
Ответили: (24)
# Ответить
24. MRAK 06.09.2009 18:49
(23) а последнюю обработку скачал? она называется "ДекомпиляцияИАнализФорм_2.epf "

Если ошибка на типовой конфе, то напиши, на какой форме вызывается, я проверю
Ответили: (25)
# Ответить
25. Istur 06.09.2009 21:16
(24) именно что скачал вторую. а выдает на моей обработке, http://infostart.ru/projects/5591/ , "Форма".
Ответили: (26)
# Ответить
26. MRAK 07.09.2009 08:24
(25) Странно, у меня выдает другую ошибку... Попробуй закоментить весь свой модуль формы при переносе в данную обработку.
Ответили: (27)
# Ответить
27. Istur 07.09.2009 20:31
(26) Нет, не помогло(( Ну ладно, фиг с ним. Главное что со стандартными работает)))
# Ответить
28. stilet 08.09.2009 10:19
Все же выдает ошибку. Конфигурация Упр торговлей последний релиз. Документ Заказ покупателя, форма документа
Ответили: (32) (29)
# Ответить
29. MRAK 08.09.2009 10:23
(28) последнего нет... на 10.3.5.1 отработал без ошибки. Пока на последнем нет возможности проверить(((
# Ответить
30. glek 09.09.2009 13:22
На УПП для Украины выдает ту же ошибку. На любой форме
Ответили: (32)
# Ответить
31. glek 09.09.2009 13:29
Судя по анализу, имеем следующее:
В первом анализе (строка 719 код КоличествоСтраниц = ЭлементНастройкиМакета.Страницы.Количество();) получаем общее количество страниц. Потом идет цикл для 1 по количество страниц. НО! в строке 725 в коде пФормаКопия.ЭлементыФормы[ЭлементНастройкиМакета.Имя].Страницы.Удалить(0); идет удаление сразу 1 страницы с панели
# Ответить
32. MRAK 09.09.2009 21:30
(28), (30) специально последний релиз УТ поставил, ошибка не воспроизводится.
Навсякий случай сейчас файл на сайте обновлю, мож я че с этим накосячил...
# Ответить
33. rasswet 15.09.2009 11:10
чтобы сравнить что добавили в релиз в типовой, надо запускать обработку в двух базах, новой и старой и визуально просматривать сформированый код? или как проще?
Ответили: (34)
# Ответить
34. MRAK 15.09.2009 11:14
(33) думаю, проще добавить исследуемую форму в обработку. В дереве метаданных она будет доступна в ветке "ЭтотОбъект" в самом верху
# Ответить
35. rasswet 15.09.2009 12:55
жаль нельзя указать обе формы и прочитать различия
Ответили: (55) (36)
# Ответить
36. MRAK 15.09.2009 20:44
(35) хочу сделать, но пока нет времени.
пока можно юзать "Файл" - "Сравнить файлы", если формы не слишком сильно различаются
# Ответить
37. Borisych 18.09.2009 21:59
Занимательный подход и много труда! Плюс.
Правда иногда можно увидеть:
Код
{ВнешняяОбработка.ДекомпиляцияИАнализФорм(764)}: Поле объекта не обнаружено (ОсновнаяПанель)
         ЭлементНастройкиМакета = пФорма.ЭлементыФормы[ЭлементТаблицы.Имя];
Показать полностью
Ответили: (38)
# Ответить
38. MRAK 19.09.2009 07:59
(37) это в типовой? в какой форме, проверю
Ответили: (39)
# Ответить
39. Borisych 19.09.2009 17:46
(38) нет не в типовой
# Ответить
40. Totoro 21.09.2009 22:21
(0) Замеченные недочеты по панелям (по собственному опыту генерации формы) :)
При формировании панели в режиме прокручиваемых страниц признак "РежимПрокручиваемыхСтраниц" нужно устанавливать после добавления всех элементов, иначе все будет в куче на первой странице.
+
1) при присвоении текущей страницы отсутствует ".Страница"
2) При прочтении свойств странице в дереве выдается ошибка
3) После создания панели 1 страница уже существует, т.ч. добавлять нужно только со второй страницы, первую заполнять.
4) Видимость страницы тоже не генерируется (видимость страницы тоже нужно устанавливать последней).
Все тестировалось в ПередОткрытии формы
Ответили: (41)
+ 1 [ MRAK; ]
# Ответить
41. MRAK 21.09.2009 23:55
(40) спасибо за комментарий, в ближайшее время постараюсь посмотреть.
Ответили: (42)
# Ответить
42. Totoro 22.09.2009 12:37
(41) Как вариант:
1) для страниц добавить макет со свойствами страниц и проверка при при заполнении дерева на страницу.
2) При формировании кода самый простой способ добавить строчку удаления 0-вой страницы после всех строчек добавления страниц + добавить заполнение свойств каждой страницы.
ЗЫ Эта я вечером вчера смотрел. Вроде работало. Только с видимостью и прокручиваемыми страницами не разбирался.
# Ответить
43. lion11 23.09.2009 11:25
Большое спасибо за хорошую работу!
Присоединяюсь к пожеланиям: сделать сравнение двух почти одинаковых форм с выдачей кода расположения отличающихся реквизитов. Указанная по ссылке обработка Декомпилятор форм уже сильно упростила подготовку обновлений, а тут еще можно будет упростить.
(Надпись на транспаранте: Обновление нетиповой конфигурации за ОДИН день! :))
# Ответить
44. svcoder 27.10.2009 11:52
Обработка очень нужная. Правда нашел пару недочетов, которые мешают при объединении с помощью merge
1) необходимо при сортировке ТаблицаЭлементовФормы.Сортировать("Панель,Страница,Тип");
добавить в конце сортировку по оригинальному индексу элемента, который необходимо заполнять при начальном заполнении таблицы элементов
ТаблицаЭлементовФормы.Сортировать("Панель,Страница,Тип,Индекс");

2) вместо вставки колонки в табличное поле необходимо делать обычное добавление, тогда merge не сбивается при вставке колонки

Непонятно только, почему отличается ширина в решиме Конфигуратор и в режиме Предприятие, поэтому я в комментарии ширины вывожу еще ширину * 6,875 чтобы забивать это значение в конфигуратор :)
# Ответить
45. svcoder 28.10.2009 15:44
Обнаружились еще 2 проблемы:
1) Не отображаются общие формы
2) Метод по которому вы сортируете панели при декомпиляции формы неправильный. На некоторых объектах типовых конфигураций, которые имеют несколько вложенных друг в друга форм вылетает с ошибкой. Вам нужно сортировать панели по вложенности, а не по порядку выборки из коллекции элементов управления
# Ответить
46. e.kogan 06.11.2009 14:55
Дописала для анализа внешних отчётов и обработок. Выслать?
Ответили: (47)
# Ответить
47. MRAK 06.11.2009 14:58
(46) Давайте, объединим услилия. А то, если честно, сейчас времени на доработку нет.
Ответили: (48)
# Ответить
48. e.kogan 30.11.2009 11:24
(47) Посмотрите приложенный файл.
Ответили: (49)

Прикрепленные файлы:

ДеструктивныйАнализФормы.epf
+ 3 [ victorkim64; Umka18; MRAK; ]
# Ответить
49. MRAK 30.11.2009 13:24
(48) благодарю, в ближайшее время посмотрю и обновлю
# Ответить
50. vorlogo 09.12.2009 03:52
Вставляется лишняя скобка в строках.

ЭлементыФормы.ОсновнаяПанель.ТекущаяСтраница = ЭлементыФормы.ОсновнаяПанель.Дополнительно);
Ответили: (53)
# Ответить
51. vorlogo 09.12.2009 04:11
буквально один вопрос - как вы затем используете полученный текст? Если в тексте модуля самой формы, то не будет ли метод ЭлементыФормы.Добавить() конфликтовать с тем, что элементы уже существуют? Или вы удаляете все элементы с формы? но это же неудобно
Ответили: (52)
+ 1 [ ask8155; ]
# Ответить
52. MRAK 09.12.2009 12:42
(51) лично я визуально добавляю нужные мне элементы и меняю существующие. Затем копирую для использования код только измененных и новых элементов.
Конечно, е обработке не хватает сравнения форм, но можно заюзать типовое.
# Ответить
53. Dirk Diggler 14.12.2009 07:43
Кроме (50), еще обработка разбивает числа на триады, например
КоманднаяПанель.Ширина = 1 276;

вместо

КоманднаяПанель.Ширина = 1276;

Ругается проверка синтаксиса
# Ответить
54. Dirk Diggler 14.12.2009 08:01
А также неверно декомпилит командные панели с автозаполнением:
Кнопка0 = ЭлементыФормы.ДействияФормы.Кнопки.Подменю.Кнопки.Вставить(5,"Действие4",ТипКнопкиКоманднойПанели.Действие,"Установить интервал дат...",Новый Действие("Установитьинтервалдат..."));

Как вы понимаете, процедуры "Установитьинтервалдат..." не существует
# Ответить
55. MRAK 06.01.2010 20:31
(35) теперь можно
+ 1 [ rasswet; ]
# Ответить
56. Dirk Diggler 07.01.2010 12:27
Блестяще!
Скажите, а нельзя формы извлекать из хранилища?
Скажем, сравнивать форму текущей конфы и такую же, но из "конфигурации поставщика"?
Ответили: (57)
# Ответить
57. MRAK 07.01.2010 12:32
(56) насколько я знаю, стандартных функций доступа к конфе поставщика не существует.

пока предлагаю копировать нужную форму просто через буфер обмена и вставлять ее в данную обработку. Тогда можно будет сравнить новую форму из обработки со старой - из конфиги.



Да, еще, ошибки вышеуказанные не оследил, так как сам не сильно модифицирую формы, на моих задачах они не возникали.

Если будет время, то протестирую, но если будет указана типовая конфа и форма, на которой они проявляются. Так мне тестировать много быстрее.
# Ответить
58. Dirk Diggler 07.01.2010 12:46
Да, логические значения сейчас тоже отображаются неверно:

ПолеВвода = ЭлементыФормы.Добавить(Тип("ПолеВвода"),"КодПоОКПО",Истина,ЭлементыФормы.ПанельЮрФизЛицо);
ПолеВвода.Видимость = Нет;

Т.е. "нет" и "да" вместо истина и ложь
Ответили: (59)
# Ответить
59. MRAK 07.01.2010 13:10
(58) странно, у меня такой проблемы не возникает...

локализация российская? конфа типовая? если да, то в какой форме? (я проверял на форме элемента "Контрагенты" в УТ 10.3)
Ответили: (63)
# Ответить
60. artbear 07.01.2010 14:56
Просьба в изменениях помимо даты изменения указывать также и версию.
Сейчас неудобно:
в изменениях написано про дату, а в файлах только файлы с номерами.
Переходи на версионирование, лады?
Ответили: (61)
# Ответить
61. MRAK 07.01.2010 14:59
(60) Добро, принято ))))
# Ответить
62. MRAK 07.01.2010 17:00
А проще - старые версии удалю. Последняя содержит функционал всех предыдущих.
# Ответить
63. vorlogo 07.01.2010 17:40
(59) у меня "да" и "нет" в режиме сравнения, в упп тоже на форме элемента "контрагенты".
Правда, я сконвертировал под 8.2.
Ответили: (64) (65)
# Ответить
64. MRAK 07.01.2010 17:47
(63) под 8.2 не тестил, думаю в этом косяк.
На 8.2 пока нет проектов, поэтому не тестил.

Если переведу свою конфу "Личный органайзер" под 8.2, мож еще здесь выложу, то будет смысл тестить...
# Ответить
65. MRAK 07.01.2010 17:48
(63) + но думаю, под 8.2 данная обработка не так актуальна, как под 8.1.
Там же управляемые формы...
Ответили: (66) (69)
# Ответить
66. dushelov 07.01.2010 18:21
(65) На управляемых формах проще. Получаешь дерево элементов - и вперед...
Ответили: (67)
# Ответить
67. MRAK 07.01.2010 20:22
(66) ну так добивай свой компилятор для 8.2 с форточками)))
Ответили: (68)
# Ответить
68. dushelov 07.01.2010 20:59
(67) Не успею :) Думаю, скорее 8.3 выйдет :D
# Ответить
69. Dirk Diggler 08.01.2010 03:58
(65) Там МОГУТ использоваться УФ. но бОльшая-то часть конф все еще на обычных.
# Ответить
70. Dirk Diggler 08.01.2010 04:19
Было бы здорово иметь режим генерации кода не создания формы, а её модификации.
Т.е. генерации строк не вида

ПолеВвода = ЭлементыФормы.Добавить(Тип("ПолеВвода"),"КодПоОКПО",Истина,ЭлементыФормы.ПанельЮрФизЛицо);


а вот таких:

ПолеВвода = ЭлементыФормы.КодПоОКПО; 
Ответили: (71)
# Ответить
71. MRAK 08.01.2010 09:05
(70) над этим надо подумать, использую иногда. Можно сделать опционально
# Ответить
72. Dirk Diggler 08.01.2010 09:43
По поводу "Да"/"Нет"

Из хелпа по 8.2:

Использовать региональные установки текущего сеанса
......
Значение типа Булево отображается в соответствии с используемым языком платформы, если в данных установках не заданы конкретные значения. Значение типа Булево отображаются словами "Да, Нет", "Yes, No" и т.д., если не используется режим совместимости.
Ответили: (74)
# Ответить
73. Dirk Diggler 08.01.2010 09:47
Короче, нельзя там функцию Строка() использовать.
# Ответить
74. MRAK 08.01.2010 09:56
(72) понятно.

но пока под 8.2 переделывать не планирую.
Ответили: (77)
# Ответить
75. Dirk Diggler 08.01.2010 09:59
строка 515 модуля объекта:

Текст.ДобавитьСтроку(Таб + ТекстЭлемент+"."+Свойство+ " = "+?(ТипЗначенияСвойства = Тип("Булево"),?(Элемент[Свойство],"Истина","Ложь"),Элемент[Свойство]) +";");
# Ответить
76. Dirk Diggler 08.01.2010 10:09
доработал пару строк. под себя, так что не обессудьте что под 8.2
Ответили: (79)

Прикрепленные файлы:

ДекомпиляцияИАнализФорм_3.epf
+ 1 [ MRAK; ]
# Ответить
77. Dirk Diggler 08.01.2010 10:10
(74) А не факт что это под 8.1 работает. Не исключено, что Строка() и в 8.1 зависит от региональных установок базы.
# Ответить
78. Dirk Diggler 08.01.2010 12:41
По поводу разделения триад. Тест на форме списка справочника номенклатуры:
     КоманднаяПанель = ЭлементыФормы.Добавить(Тип("КоманднаяПанель"),"ДействияФормы",Истина);
     КоманднаяПанель.Имя = "ДействияФормы";
     КоманднаяПанель.Верх = 0;
     КоманднаяПанель.Высота = 25;
     КоманднаяПанель.Ширина = 1 276;
...Показать Скрыть

Там же, чуть ниже(это к слову об автозаполняемых ком. панелях):
Кнопка1 = ЭлементыФормы.ДействияФормы.Кнопки.Подменю.Кнопки.Подменю.Кнопки.Вставить(2,"Действие1",ТипКнопкиКоманднойПанели.Действие,"",Новый Действие("(Историяотборов)"));
Ответили: (80) (82)
# Ответить
79. MRAK 08.01.2010 12:43
(76) благодарю, добавлю в свою обработку
# Ответить
80. MRAK 08.01.2010 13:05
(78)
По поводу разделения триад. Тест на форме списка справочника номенклатуры:
Код

КоманднаяПанель = ЭлементыФормы.Добавить(Тип("КоманднаяПанель"),"ДействияФормы",Истина);
КоманднаяПанель.Имя = "ДействияФормы";
КоманднаяПанель.Верх = 0;
КоманднаяПанель.Высота = 25;
КоманднаяПанель.Ширина = 1 276;


нет у меня таких широких в УПП...
# Ответить
81. Dirk Diggler 08.01.2010 13:13
и последнее

СтрЗаменить(.....," ",""),
не сработает на конфигурациях, которые используют как разделитель что-то отличное от пробела(напр., неразрывный пробел).
# Ответить
82. Dirk Diggler 08.01.2010 13:14
(80) А вы попробуйте это сделать сперва открыв эту форму и развернув на весь экран. Сразу появятся ))))
Ответили: (83)
# Ответить
83. MRAK 08.01.2010 13:17
(82) Если только в режиме конфигуратора...
# Ответить
84. alexer 02.02.2010 11:01
Отличная штука, плюс +++.
# Ответить
85. alexer 02.02.2010 11:30
если получится выложу свой вариант
Скриншот
Ответили: (86) (87) (88)
# Ответить
86. MRAK 02.02.2010 11:34
(85) на скрине все выглядит красиво, буду ждать :)
Ответили: (88)
# Ответить
87. Ish_2 02.02.2010 12:12
(85) Ага. Красиво.
# Ответить
89. sergejr 11.02.2010 13:22
Цвет не переносит, а в остальном плюс

и пожелание: в описании написано

Пользователь может в интерактивной форме выбрать любую форму любого документа любой конфигурации платформы 1С 8.1 . Иметь возможность выбрать конфигурацию из файла.
# Ответить
90. sergejr 17.02.2010 15:52
Нашел ошибку.

При декомпиляции формы на которой есть панель со страницами выдает такую строку: ЭлементыФормы.Панель.ТекущаяСтраница = ЭлементыФормы.Панель.ВыпускКакРасход);

здесь лишний знак ) и должно быть так

ЭлементыФормы.Панель.ТекущаяСтраница = ЭлементыФормы.Панель.Страницы.ВыпускКакРасход;
Ответили: (91)
# Ответить
91. MRAK 17.02.2010 16:39
(90) Если это в типовой, то напишите, пожалуйста, в какой форме возникает ошибка.
# Ответить
92. sergejr 18.02.2010 08:56
Это документ Отчет мастера смены в УПП, я там добавил ещё одну страницу на панели, но ошибка выходит для всех панелей: лишний знак ) и не хватает слова СТРАНИЦЫ ЭлементыФормы.Панель.Страницы.ВыпускКакРасход;
# Ответить
93. Kiber_ 25.03.2010 17:14
Во-первых, огромное спасибо. :)
Во-вторых, лови багрепорт:
При декомпиляции формы в УПП (то-ли спецификации номенклатуры, толи статей затрат)

{ВнешняяОбработка.ДекомпиляцияИАнализФорм(747)}: Поле объекта не обнаружено (ПанельВыходноеИзделие)
пФормаКопия.ЭлементыФормы[ЭлементНастройкиМакета.Имя].УстановитьДействие("ПриСменеСтраницы", Неопределено);
# Ответить
94. sgromov@bk.ru 23.04.2010 11:22
От меня жирный плюс!

багрепорт:
запускал на БП 1.6.24, после названий страницы в результате декомпиляции рисует лишнюю закрывающую скобку, например:


ЭлементыФормы.ОсновнаяПанель.ТекущаяСтраница = ЭлементыФормы.ОсновнаяПанель.СчетФактура);
# Ответить
95. sgromov@bk.ru 23.04.2010 11:37
в дополнение к предыдущему куску кода: после названия панели не хватает разыменования Страниц, т.е. должно быть так:

лементыФормы.ОсновнаяПанель.ТекущаяСтраница = ЭлементыФормы.ОсновнаяПанель.СТРАНИЦЫ.СчетФактура;
# Ответить
96. _wlad_ 01.06.2010 17:07
Уже давно крутилась такая идея, т.к. обновление перепаханных типовых форм порой заставляет материться! К сожалению дальше первых подступов не дело не дошло. Попробуем вашу
Ответили: (97)
# Ответить
97. MRAK 01.06.2010 17:19
(96) Пожалуйста. Недоработок много, сам знаю - все никак не хватает времени добить.
Но кое в чем обаботка полезна.
# Ответить
98. Asdam 16.07.2010 18:44
99. ave57 07.09.2010 14:48
{ВнешняяОбработка.ДекомпиляцияИАнализФорм(747)}: Поле объекта не обнаружено (ПанельОборотБольничного)пФормаКопия.ЭлементыФормы[ЭлементНастройкиМакета.Имя].УстановитьДействие("ПриСменеСтраницы", Неопределено);

Зарплата и Управление Персоналом, редакция 2.5 (2.5.25.3)
Ошибка при декомпиляции формы "ФормаДокумента" документ "НачислениеПоБольничномуЛисту"
# Ответить
100. ave57 07.09.2010 14:51
О, юбилейный коммент! :)
Грех плюс не поставить...
# Ответить
101. kashtan 04.10.2010 13:19
есть мануал по правильному использованию? а то попробовал и у меня выдаёт ошибки при копировании кода в дальнейшем в процедуру при открытии формы
# Ответить
102. KindLion 15.11.2010 14:56
Добрый день!
Очень интересная обработка, спасибо!
Ошибка:
{ВнешняяОбработка.ДекомпиляцияИАнализФорм(747)}: Поле объекта не обнаружено (ПанельПлатежи)
пФормаКопия.ЭлементыФормы[ЭлементНастройкиМакета.Имя].УстановитьДействие("ПриСменеСтраницы", Неопределено);

Конфа: Типовая Бухгалтерия предприятия, редакция 1.6 (1.6.25.5)
Ошибка при декомпиляции формы документа "Приходный кассовый ордер"
Ответили: (103)
# Ответить
103. MRAK 15.11.2010 14:59
(102) Спасибо, но сейчас, к сожалению, нет времени заниматься поддержкой и доработкой этого проекта.
Было бы время - переписал бы под управлемые формы...
Ответили: (104)
# Ответить
104. KindLion 16.11.2010 08:42
(103) Да я уже понял, что вы охладели к этому проекту. А жаль...
Может, если под рукой окажется завалящая конфа типовой бухгалтерии 1.6, вы, все же, намекнете, куда копать?

P.S. Поднял версию БП до последней, на сег. день версии - 1.6.26.3 - та же ошибка в ПКО и в РКО.

P.P.S. А коли окажетесь в Питере - с меня пиво.
# Ответить
105. RafaelRS 30.11.2010 16:24
Забавная штука, не испытывал пока, но испытаю обязательно. Очень полезно должно быть. Отплюсую.

Кстати, никто не знает - есть ли подобная штука для сравнения предопределенных данных, например - ПЛАНОВ СЧЕТОВ (а может даже для обновления)?

А то жутко неудобно сии операции вручную делать.
Ответили: (106)
# Ответить
106. bambr1975 09.09.2011 15:49
(105) Посмотри обработку http://infostart.ru/public/69976/ В принципе, для твоей цели подойдет.
# Ответить
107. CaSH_2004 07.10.2011 21:31
Поздно нашел эту обработку, а так мучался, и даже идея не пришла себе соорудить такое. Сейчас плотно занялся рисованием динамичных интерфейсов и эта обработка как помошник просто СКАЗКА!!!
БОЛЬШОЕ ЧЕЛОВЕЧЕСКОЕ СПАСИБО автору за всю реализацию и сборку.
Если принимаются пожелание было бы очень неплохо увидеть в общем дереве общие формы и, если красота и удобство вам не чужды, то иконки - а то я даже не сразу понял что искать.

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

Крик души, не обижайтесь но весь сайт "велосипедами" так забили (архиваторы, загрузчики из Экселя и т.п.) что нормальных вещей и не видно, обидно. Я бы таких банил, чтобы не сорили. Сколько потрясных идей я нахожу через 1-2 года только из-за того что новички тут выкладывают все свои домашние варианты ковыряния 1С. Хоть бы кто-то взял чужое и доработал, нет же каждый свое лепит толстым слоем.
Ответили: (110)
# Ответить
108. pmtvv 09.10.2011 14:44
ставлю плюс, спасибо
# Ответить
109. tchvlad 11.10.2011 14:54
Отличная разработка, но есть еще над чем поработать! :) например выбор реквизита для декомпиляции кода "по выбранному". Спасибо!
# Ответить
110. MRAK 11.10.2011 15:09
(107) Конечно не против, буду рад развитию проекта :)

Кстати, кто-то уже дорабатывал, помню, что были добавлены иконки и сравнение форм из двух баз

Вот, нашел:
http://infostart.ru/public/65449/
# Ответить
111. Nika-cat 22.11.2011 11:40
И как только такие мысли посещают светлую голову
# Ответить
112. Istur 27.11.2011 22:03
На основе данной разработки сделал свою: Декомпиляция элементов формы для 8.2, описание можно прочитать на ее странице.
# Ответить
113. lion11 28.11.2011 10:09
Эх, жаль нельзя несколько плюсов поставить... Давно пользуюсь, очень удобно.
Заметил, что в новой версии БП 2.0 (Корп) не декомпилируются формы документов ПКО и РКО. Кое-как поправил у себя, но хотелось бы услышать мнение автора, как лучше исправить (по возможности конечно).
# Ответить
114. opiumdx 31.01.2012 14:42
Спасибо, интересная разработка, непременно скачаю и попробую в работе, как раз встал вопрос по обновлению нашей переписанной конфигурации , в связи с изменениями законодательства 2012 года.
# Ответить
115. opiumdx 31.01.2012 14:45
Постановление Правительства, которым утверждены новые формы счета-фактуры, корректировочного счета-фактуры, журнала учета полученных и выставленных счетов-фактур, книги покупок и книги продаж, вступит в силу с 1 января 2012 года. Минфин в письме от 07.12.11 № 03−07−14/119 сообщил, что проект постановления был направлен на утверждение в Правительство 14 ноября.

Сейчас столкнулись с проблемой обновления. Хочу попробовать изменить объект с помощью этой обработки.
Как думаете, получится такое сделать с помощью нее?
Как скажется на дальнейших обновлениях, если получится?
# Ответить
116. opiumdx 31.01.2012 14:46
Всем спасибо за ответы.
# Ответить
117. leon111 31.01.2012 14:47
Спасибо! Отличная вещь!
# Ответить
118. MRAK 31.01.2012 15:04
(155) естественно, обновлять программно измененную форму значительно легче. А вообще почитайте статьи с этого ресурса про технологию обновления нетиповых и всякие "прыжки через 20 версий"
# Ответить
119. rasswet 18.03.2012 12:31
{ВнешняяОбработка.ДекомпиляцияИАнализФорм.МодульОбъекта(747)}: Поле объекта не обнаружено (Панель1)
пФормаКопия.ЭлементыФормы[ЭлементНастройкиМакета.Имя].УстановитьДействие("ПриСменеСтраницы", Неопределено);
ЗУП 8.2, сравниваю две формы документа Табель.
не знаете в чем косяк?
# Ответить
120. logoped99 19.03.2012 14:04
Отлично.
# Ответить
121. shatt 03.04.2012 00:24
Гениально! Спасибо большое! Одна из самых нужных обработок на ИС
# Ответить
122. clab 23.06.2012 10:07
спасибо за труды
# Ответить
123. sai_NT 23.06.2012 10:33
Вот чего мне не хватало при объединении форм родственных конфигураций. Спасибо и дельнейшего развития проекту!
# Ответить
124. soulsteps 23.06.2012 11:38
Спасибо! Отличная обработка!
# Ответить
125. Umka18 06.07.2012 16:36
Спасибо, очень полезная обработка
# Ответить
126. tchvlad 30.08.2012 16:25
Используем уже более года. Спасибо за работу. Не без проблем, но полезно!
# Ответить
127. webester 31.08.2012 12:16
Замечательная штука, нужна что бы программно добавлять элементы и не тащить их описание руками
# Ответить
128. webester 06.09.2012 16:00
Найдены были неточности, но сколько времени сэкономила!
# Ответить
129. svilsa 11.10.2013 15:40
Очень понравилась обработка, потому что была проблема с правильной привязкой надписи при программном добавлении элемента на форму 1С, я воспользовалась советом из другого форума: сначала в копии базы с помощью графического интерфейса добавила надпись на форму - проверила, чтобы все отображалось правильно, потом воспользовалась данной обработкой и просто вставила полученный код элемента в процедуру программного добавления элементов
+ 1 [ u_n_k_n_o_w_n; ]
# Ответить
130. AndrewM 02.12.2013 15:17
Классная идея. Спасибо.
# Ответить
131. TrueGadich 11.12.2013 16:25
Переделать бы ее для Управляемых Форм
# Ответить
132. L33tBot1 16.03.2015 10:17
Ерунда все это. Дальше только хуже.
# Ответить
133. Чародей 04.04.2016 16:03
При декомпиляции выскакивает ошибка:

{ВнешняяОбработка.ДекомпиляцияИАнализФорм.МодульОбъекта(747)}: Поле объекта не обнаружено (Панель)
пФормаКопия.ЭлементыФормы[ЭлементНастройкиМакета.Имя].УстановитьДействие("ПриСменеСтраницы", Неопределено);
# Ответить
Внимание! За постинг в данном форуме $m не начисляются.
Внимание! Для написания сообщения необходимо авторизоваться
Текст сообщения*
Прикрепить файл






IE 2016