0. Istur 1426 28.11.11 10:18 Сейчас в теме

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

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

Перейти к публикации

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

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

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

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

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

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

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

мне тоже неловко, но по ссылке я уже давно перешел, еще до Вашего сообщения, но описание механизма "Декомпилировать изменения" не нашел..
Давайте там спишемся...
104. AlexO 128 28.04.12 13:47 Сейчас в теме
Разобрался с системными перечислениями - оказалось, в глобальном модуле платформа тычется искать имена перечислений как имена процедур (функций), и нужно принудительно делать модуль, в котором используются системные перечисления, неглобальным (т.к. синтаксиса "СистемноеПеречисление.ГраницаЭлементаУправления" не предусмотрено).
В неглобальном модуле - пишем вызов системного перечисления "ГраницаЭлементаУправления.Низ".
Такая неоднозначность - опять же следствие отсутствия работы с объектами (в данном случае - неоднозначный вызов СистемногоПеречисления).
(101) bambr1975,
АвтоЗаполнение заработало (кто бы мог подумать - действительно ТолькоПросмотр = Истина у программно создаваемой ТП), но, как я и писал, только если в модуле формы - в общем модуле оно заполняет, но т.к. действия не обнаружены - программные кнопки на форме погашены.
Что тоже не комильфо - все писать в модуле формы (отсутствует контекст объекта форма, который можно было бы передавать и пользовать, подобие чего было в 7.7).
99. bambr1975 823 28.04.12 11:00 Сейчас в теме
В обработке http://infostart.ru/public/106310/ появилась тестовая возможность "Декомпилирование изменений". Может, кому-то пригодится.
106. AlexO 128 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 4883 27.04.14 18:27 Сейчас в теме
А нет ли чего-то аналогичного для управляемых форм?
123. webester 30 30.08.14 23:23 Сейчас в теме
Я буду внимательнее читать описание публикаций.
124. Istur 1426 01.09.14 13:54 Сейчас в теме
(123) webester, пожалуй это самый идиотский комментарий, который я читал за все время. Прочтите внимательно описание, именно там я как раз еще 3 года назад все написал и получите ответы на все вопросы! А еще так же можете скачать другие разработки и посравнивать код. Не, количество всякого невменько среди программистов 1с как-то зашкаливает.
125. webester 30 03.09.14 06:02 Сейчас в теме
(124) Вы правы на 100% приношу свои извинения.
126. ekaruk 4883 29.09.14 01:23 Сейчас в теме
Не нашла аналогичную для управляемых форм.
Пришлось писать свою http://infostart.ru/public/304736/
128. buganov 59 07.07.15 13:58 Сейчас в теме
Вылетает при декомпиляции ФормыДокумента ОприходованиеТоваров. Форма немного изменена. Конфа УПП. Сначала долго обрабатывает в ПеренестиПодчиненныеСтроки(СтрРодительПриемник,СтрИсточник), а потом тупо выкидывает из режима предприятия
129. buganov 59 07.07.15 14:09 Сейчас в теме
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Санкт-Петербург
зарплата от 110 000 руб. до 150 000 руб.
Полный день

Программист 1С
Воронеж
зарплата от 70 000 руб.
Полный день

Программист 1С
Москва
зарплата до 160 000 руб.
Полный день

Программист 1С
Новосибирск
зарплата от 80 000 руб. до 120 000 руб.
Полный день

Консультант 1С
Москва
зарплата от 100 000 руб. до 140 000 руб.
Временный (на проект)