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

20.12.15

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Бесплатно
ДекомпиляцияУправляемыхФорм_v2.epf
.epf 16,45Kb
1871
1871 Скачать бесплатно
Декомпиляция управляемых форм 3.0 (с 8.2)
.epf 20,26Kb
1830
1830 Скачать бесплатно
Декомпиляция управляемых форм 3.0 (с 8.3.5)
.epf 21,52Kb
2717
2717 Скачать бесплатно
Декомпиляция управляемых форм 3.0.1 (с 8.3.5) (3.0 + разбор командной панели + клиент-сервер)
.epf 22,14Kb
4612
4612 Скачать бесплатно

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

Идея и часть кода взята из этой обработки //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) с любым интерфейсом.

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

См. также

SALE! 15%

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

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

10000 руб.

02.09.2020    159318    872    399    

861

SALE! 15%

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

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя.

8400 7140 руб.

20.08.2024    7738    55    22    

66

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

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

9360 руб.

17.05.2024    23400    68    45    

117

SALE! 15%

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

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

10000 8500 руб.

10.11.2023    10401    36    20    

61

SALE! 15%

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

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

22200 19980 руб.

06.10.2023    15378    35    7    

70

SALE! 35%

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

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

4800 3120 руб.

14.01.2013    187958    1138    0    

912

SALE! 15%

Инструментарий разработчика Программист 8.3.14 1С:Конвертация данных Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

15000 12750 руб.

07.10.2021    17295    6    32    

42

Инструментарий разработчика Программист Платные (руб)

Менеджер конфигураций 1С — альтернативный стартер информационных баз 1С:Предприятие.

1800 руб.

21.02.2023    7688    8    35    

23
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. BigClock 29.09.14 15:23 Сейчас в теме
Для управляемых форм явно не хватает такого инструмента, как V8Reader: http://infostart.ru/public/106310/ Особенно возможности декомпиляции изменений для форм.
5. ekaruk 4975 29.09.14 20:05 Сейчас в теме
(1) BigClock, не хватает. Но для меня это уже слишком универсальный механизм.
user608739_serg999h; +1 Ответить
2. Yashazz 4790 29.09.14 17:43 Сейчас в теме
Хотите добрый совет? Не пишите сами и не предлагайте другим такие обработки, пока не выйдет 8.3.12 как минимум. Тогда ситуация стабилизируется. нужные поля будут читаться, методы - работать, и вообще можно будет рассчитывать на вменяемый механизм. Сейчас пока и в 8.2, и в 8.3 всё колбасит, малейшее "изменение концепции" может сделать ваши усилия бессмысленными в обе стороны - либо завтра добавят нечто, благодаря чем это всё будет раз плюнуть (как со структурой таблиц базы поступили), либо нечто перестанет работать и плоды трудов останется лишь выкинуть.
jobkostya1c_ERP; t278; +2 4 Ответить
3. ekaruk 4975 29.09.14 18:07 Сейчас в теме
(2) Yashazz, Так и сейчас всё работает.
Методы читаются, события устанавливаются.
Получается вполне нормальный работающий код.
Не думаю, что 8.3.12 будет более стабильная, чем текущая. Будут свои проблемы и решения.
Работать сейчас нужно, а не через пару лет.
mistervoron; leoxz; arisgeser; Bender_Ostap; ollega; Kinestetik; taraas; julia96_07; for_sale; ABudnikov; MariusUrsus; mvxyz; MarinaLed; Pavl0; pt_olga; Berckk; starik-2005; VitaliyCeban; Alien_job; ojiojiowka; mickey.1cx; lustin; awa; dutlovva; It-developer; Alister; EmpireSer; burlakov; A.Sytchev; 987ww765; +30 Ответить
6. Yashazz 4790 29.09.14 22:38 Сейчас в теме
(3) Дык оно конечно, просто обидно будет, если что. Я вот пыхтел, делал отбор по значению в колонке динамического списка, а его взяли и добавили на уровне платформы. Может, у вас ПутьКДанным не получился из-за сугубо внутренних траблов платформы, кто знает.
(4) Ишшо полгода назад думал об этом. Пока влом, но как всерьёз буду переходить на 8.3, так и вполне возможно.
7. saiten 246 01.10.14 09:39 Сейчас в теме
(6)
ПутьКДанным не получился из-за сугубо внутренних траблов платформы
Это не траблы - это концепция. Пути к данным доступны только на сервере, и это, в общемт-то правильно: в 99% процентах случаев тащить их на клиент нафиг не надо. А вот доступ к серверному контексту формы есть только из самой формы, т.к., как я понял, он создаётся непосредственно в момент серверного вызова с клиента и вне этого вызова не существует. Типа стэйтлесс и всё такое... Так что конкретно в этом плане врядли что изменится.
8. ekaruk 4975 01.10.14 10:20 Сейчас в теме
А вот доступ к серверному контексту формы есть только из самой формы, т.к., как я понял, он создаётся непосредственно в момент серверного вызова с клиента и вне этого вызова не существует.


(7) saiten, я тоже думаю, что не изменится.
Одна и та же фигня с ПутемКДанным, обработчиками событий и реквизитами. До всего этого можно добраться только изнутри формы.
Соответственно, генерация кода возможна только после вклинивания в код самой формы.
В принципе, для данной задачи не критично (не так сложно строку кода вписать в "ПриСозданииНаСервере"), хотя и не очень удобно.
48. AlexO 135 16.12.14 11:02 Сейчас в теме
(7) saiten,
Пути к данным доступны только на сервере, и это, в общемт-то правильно

Если концепция клиент-сервер реализована через одно место, а не как правильно - то это проблема реализации, а не программистов. А через вот такие "это правильно" - это становится проблемой программистов.
Что тут "правильного", если форма (которая у 1С однозначно превратилась в "клиент") должна отображать данные-с-сервера (в которые однозначно превратилась БД), а данные в базе - должны меняться по результатам действий на форме? Как принудительное искуственное максимальное разделение клиента и сервера на малосвязанные части вписывается в саму концепцию взаимодействия клиент-серверной архитектуры?
Клиент-серверная архитектура - это разделение на клиента и сервер (как среды исполнения, видимости, взаимодействия), а не конкретно на форму и БД, а там "как получится".
Вот над чем нужно было работать в 1С, а не над "особым пониманием" клиент-серверного механизма.
Особых пониманий может быть сколько угодно, а все рабочие решения в области клиент-серверных архитектур уже найдены и реализованы.
55. saiten 246 16.12.14 16:26 Сейчас в теме
(48)Хм... Много букв, но смысла в них я не увидел... Наверное, плохо смотрел. Что вас конкретно не устраивает? То что путей к данным нет на клиенте? Наполнение формы данными производится на сервере, после чего форма отправляется клиенту уже заполненная. Зачем на клиенте пути к данным?
(51)
По-моему, это не "компромисс", а единственно рабочий метод программного создания форм как на ОФ, так и - тем более, с сомнительными неуправляемыми автопривязками, - на УФ.
Это ведь шутка, да? Или вы действительно делаете только так?
56. AlexO 135 17.12.14 10:29 Сейчас в теме
(55) saiten,
То что путей к данным нет на клиенте?
Меня не устраивает, что нужно писать то, что и так разруливается платформой ("инструкция не поддерживается на сервере/клиенте!").
Поэтому и нет никакого смысла во всех этих "на сервере...на клиенте...." - ты в любом случае пишешь там только то, что позволено: вызовы и обращения к базе.
Так пусть платформа и распределяет сама эти вызовы, буде где их встретит - в форме, в общем модуле, и т.д. А не так, как сейчас реализовано в УФ - с профанацией и дискредитацией клиент-серверной архитектуры.
Наполнение формы данными производится на сервере
Да кто вам сказал?! И какая разница - где? Нужно на сервере - пусть наполняется на сервере. Нужно на клиенте - пусть на клиенте. Тогда уж либо платформа сама все разруливает, и не путает программиста "инструкция только на сервере!", либо программист ставит - где считает нужным, - работу на сервере или клиенте. Что и было частично сделано в 8.1. Частично - потому что #ЕслиКлиент или #ЕслиСервер всегда отслеживала, откуда вход (с клиента или сервера), но не всегда отрабатывала код внутри вызова только на клиенте, или только на сервере. Но чья это недоработка - разве программиста?
Нет, вместо улучшения и развития нормальной системы клиент-сервер, сделали подделку и назвали "УФ".
57. AlexO 135 17.12.14 10:48 Сейчас в теме
(55) saiten,
после чего форма отправляется клиенту уже заполненная

Да пусть хоть 200 тысяч раз отправляет заполненную форму, и 200 тысяч раз - обращается к серверу. Должен быть разумный механизм передачи данных без костылей вида "ЗначениеВРеквизитФормы" и "ПоместитьВоВременноеХранилище" и т.д. Эти костыли и делают то же самое - соединяют клиента и сервер, ну так пусть это и делает платформа - получаешь ТЧ, она инкапсулирует в свои внутренние "ЗначениеВРеквизитФормы", и получает данные обратно. А программист видит только присвоение через "=". Или пусть выход на API дают, разберем форму и все вызовы на составляющие, и тогда сами будем писать вызовы и передачи - каждый свою функцию "ЗначениеВРеквизитФормы". А сейчас это профанация, и не более того.
Зачем на клиенте пути к данным?
Затем, что клиент-серверная архитектура подразумевает взаимодействие (тесное и интенсивное) клиента и сервера, и тут надо делать оптимизацию вызовов, а не отмазываться костылем "ЗначениеВРеквизитФормы".
Т.е. в результате ТЧ получить на форме нельзя без условного "ЗначениеВРеквизитФормы", но платформа и сама "прекрасно" все видит, и сообщит об этом, что нельзя. Переменные сервера и формы не видны друг у друга, но ПоместитьВоВременноеХранилище - та же переменная, которая видна и там, там, существуя "одновременно" везде.
Т.е. имеем чушь и шизофрению вместо четкого понимания и написания кода.
59. ksuman 22 17.12.14 16:19 Сейчас в теме
(57) AlexO,
Должен быть разумный механизм передачи данных без костылей вида "ЗначениеВРеквизитФормы"

Конечно, это Ноу-Хау от "создателей" УП является досадным и неудобным механизмом присвоения значений реквизитам формы. Но причины, почему к этому пришли вполне понятны: вначале пытались как положено делать присвоение, но как мы знаем, существует не одна форма, а две, причем последняя (клиент) - может быть черт знает где и доступна ли в данный момент - неизвестна. Т.е. присваивая значение элементу формы напрямую мы до завершения транзакции должны ожидать, когда клиентский элемент получит это значение, подтвердит - а сервер - будет ждать...
Как я понимаю, эта процедура вызывает поток или или обращается к существующему потоку обработки очередей запросов на присвоение значений реквизитам формы. Это было бы разумно... Хотелось бы верить, что именно из-за этого мы и страдаем...

В целом же я ничего против этого механизма не имею, но только для конкретных узко-специальных целей. Если бы система осталась бы гибридной и для основной работы использовала бы ОбычноеПриложение, а для заказов, удаленных продаж, формирования аналитических отчетов с уже заранее подготовленными настройками и других видов работ с мобильных и планшетных устройств. Так нет 1С нам навязывает - Или-или - вот что бесит!
66. AlexO 135 21.01.15 10:24 Сейчас в теме
(59) ksuman,
но как мы знаем, существует не одна форма, а две, причем последняя (клиент) - может быть черт знает где и доступна ли в данный момент - неизвестна.
Тогда - в сад такие "клиент-серверные" механизмы, которые на деле ими не являются. Только и всего.
Как я понимаю, эта процедура вызывает поток или или обращается к существующему потоку обработки очередей запросов
Мы понятия не имеем, что там себе нареализовывала 1С. Поэтому - так это, не так это - нам неизвестно. А известен - конечный результат, который озвучен в 48-58.
71. ksuman 22 21.01.15 16:14 Сейчас в теме
(66) AlexO,
Тогда - в сад такие "клиент-серверные" механизмы, которые на деле ими не являются. Только и всего

Я согласен с тем, то это не есть Клиент-серверный механизм, когда интерфейсная часть должна выполняться на клиенте, а обработка данных на сервере. Но 1С - это назвал "Тонкий клиент", позаимствовав это название у Microsoft и Citrix по отношению к RDP и ICA протоколам. Только зачем делать пародии на известные и отлаженные продукты, когда эффективнее, безопаснее и быстрее использовать как раз эти механизмы.
Думаю, господин Нуралиев упивается счас своей крутизной, хотя не понимаю что хорошего в пародии на RDP, когда функционал в итоге из-за этого очень ограниченный.
72. AlexO 135 21.01.15 16:21 Сейчас в теме
(71) ksuman,
Я согласен с тем, то это не есть Клиент-серверный механизм, когда интерфейсная часть должна выполняться на клиенте, а обработка данных на сервере. Но 1С - это назвал "Тонкий клиент"
Поэтому я уверен, что через пару лет не будет никаких УФ и 8.3 в текущем виде, а будет очередная "новаторская" погремушка от 1С.
Например, "трехзвенная архитектура с ультраклиентом".
73. ksuman 22 22.01.15 15:43 Сейчас в теме
(72) AlexO,
"трехзвенная архитектура с ультраклиентом"

Срочно запатентуйте это название, иначе именно так и назовут...
А если серьезно, у них уже появилось Ноу-Хау с начала прошлого года: работа в 1С в МоделиСервиса с использованием РазделителейУчета на базе Общих реквизитов. Это что-то вроде как Облако в Информационной базе, для работы разных Юр.лиц. Однако эта хрень тоже не работает корректно. Мне пришлось отключить их использование и закомментить все их использования, потому что система при обновлении ругается что MS SQL 2000 Enterprise - не поддерживает работу с разделителями. Т.е. я вообще полагал что в плане взаимодействия движка 1С и движком базы данных, 1С просто меняет план запроса так, чтобы система фильтровала данные по указанным полям и подготовку этого вела до компиляции. А вот как на самом деле никто не знает, даже 1С-ники, кроме непосредственно разработчиков этого механизма.
75. AlexO 135 27.02.15 10:21 Сейчас в теме
(73) ksuman,
потому что система при обновлении ругается что MS SQL 2000 Enterprise - не поддерживает работу с разделителями
А можете скриншот ошибки выложить?
76. ekaruk 4975 27.02.15 12:44 Сейчас в теме
(73) ksuman,
MS SQL 2000 Enterprise - не поддерживает работу с разделителями.
Вообще-то 2015 год на дворе. Возьмите что-то поновее. Не искала, но вполне возможно, чо где-то в документации по 1С должна быть описана совместимость с версиями MSSQL.

(74) buzzzard, Общие формы не поддерживаются. Пока не нужны были никому. Возможно, позже добавлю.
77. buzzzard 51 27.02.15 17:22 Сейчас в теме
(76) Ясно. Я для себя подправил код в части обработки общих форм. Получилось две небольшие врезки кода в двух модулях. Могу выслать.
78. ekaruk 4975 27.02.15 20:47 Сейчас в теме
(77) buzzzard, Если не сложно, выложите просто тут приложением к комментарию. Или пришлите на <МойНик>@gmail.com.
79. buzzzard 51 27.02.15 22:21 Сейчас в теме
(78) Врезки кода закомментированы вот так:
// edit ++++
Прикрепленные файлы:
ДекомпиляцияУправляемыхФорм_v3.0.1_tune.epf
Alien_job; +1 Ответить
58. AlexO 135 17.12.14 10:52 Сейчас в теме
(55) saiten,
Или вы действительно делаете только так?
А вы сразу программно создаете, даже не видя, что в результате получится? Куда элемент "съедет", и вообще, какой вид формы получится в итоге? По сути, здесь идет с конца - с результата: хотим получить вот это, и подгоняем программное создание под конечный результат.
Расскажите еще, что заранее знаете все, все просчитали (тем более - в 1С), и в просмотре конечного результата не нуждаетесь.
42. DAnry 9 15.12.14 19:04 Сейчас в теме
(2) Yashazz, а если надо сегодня (или вчера)? В таких случаях обработка очень полезна. Автору, спасибо.
for_sale; +1 Ответить
119. FesenkoA 58 16.04.18 10:40 Сейчас в теме
(2) Привет, предки, пишу вам из 2018! 8.3.12 вышла. Нужные поля не читаются, методы - не работают, и вообще можно не рассчитывать на вменяемый механизм, но есть мобильный клиент!
rpgshnik; for_sale; +2 Ответить
137. rpgshnik 3795 10.08.21 16:58 Сейчас в теме
(119) Пишу из 2021... мы пережили первую и вторую волну короны и вышла платформе 8.3.21
4. Asmody 29.09.14 18:07 Сейчас в теме
Предлагаю реализовать супер-вариант: написать шаблон xslt, который по xml из выгрузки конфигурации будет формировать код создания элементов.
33. ekaruk 4975 10.11.14 11:20 Сейчас в теме
(4) Asmody, Про шаблон xslt не знаю. Но вообще мысль разбирать xml-выгрузку конфигурации для анализа форм у меня была. Но мне кажется, выгружать конфигурацию для получения кода формы еще большее извращение, чем вклиниваться в код формы.
Хотя, может как-нибудь и попробую, если время свободное появится.
46. AlexO 135 16.12.14 09:59 Сейчас в теме
(4) Asmody,
который по xml из выгрузки конфигурации будет формировать код создания элементов

Зачем формировать элементы, которые уже "сформировны" в конфигурации? Весь смысл - формировать новые элементы на формах.
Анализ конфигурации - это уже из другой области. Да и не нужен он, по большому счету, даже если не принимать во внимание, что сам механизм сохранения и чтения конфы в XML - полурабочий.
47. ekaruk 4975 16.12.14 10:19 Сейчас в теме
(46) AlexO, На самом деле идея очень красивая. То же самое, что с этой обработкой, но анализируем выгрузку конфигурации, а не саму ИБ. Из плюсов, можно четко увидеть абсолютно все имеющиеся у элементов свойства. Сейчас при ходится анализировать "если поле ввода, то такие-то элементы, если картинка, то такие-то". Причем каждое значение сравниваем со значанием по умолчанию. Формируем код только если значение установили. Все равно часть пропускаем. Через XML никаких циклов не нужно, просто берем все имеющиеся свойства.
Хотя основное применение не это.
Лично я сейчас все версии рабочей конфигурации храню в Гит. Сравнение форм в xml даже при небольшом количестве отличий неинформативно. Сдвигаются индексы и появляется куча отличий, которых реально нет. Идеально было бы сравнение текстов аналогично сравнению обычных форм через v8reader. Как эту задачу выполнил бы xslt-шаблон. Сейчас нормального способо сранения управляемых форм лично я не знаю. Собственно, то же самое и для табличных документов в xml. Реально для сравнения выгрузка из 8.2 в .mxl и .form была удобнее.

(44) mihast, Пока не добралась :(
49. AlexO 135 16.12.14 11:03 Сейчас в теме
(47)
Сдвигаются индексы и появляется куча отличий

Это одна из главных внутренних проблем платформы 1с8, начиная с самого начала.
Сейчас нормального способо сранения управляемых форм лично я не знаю.

Их не было официальных и для ОФ. И не будет. Думаю, 1С раньше перейдет на ООП, чем сделает корректный независимый механизм сравнения своих внутренних объектов.
Считаю, вот это основная причина отсутствия корректных и рабочих механизмов работы с объектами "вне" визуальной среды конфигуратора: этих "объектов" на самом деле и нет, вот и нет ни механизмов сравнения, ни полноценных механизмов создания.
Концепции и "направления" - да, есть. Но концепции - это ничто без развития, а направления, ведущие в никуда - бесполезны.
50. AlexO 135 16.12.14 11:15 Сейчас в теме
(47)
На самом деле идея очень красивая.

А вот это - и следствие, и причина недоработанности многих механизмов 1С.
Следствие - потому что "красивость"-то доработана, а смысла или работоспособности - минимальное содержание.
Причина - "ну, красиво же, зачем тут еще что-то дорабатывать".
Да пусть все будет "некрасиво", но рабоспособно, или, хотя бы, 1С постоянно бы работала и совершенствовала бы свои внутренние механизмы в сторону функциональности, а не только "красивости".
А так - "ну, идея красивая, что вам еще надо?!" (
53. artbear 1563 16.12.14 14:31 Сейчас в теме
(47) >>Идеально было бы сравнение текстов аналогично сравнению обычных форм через v8reader

Поясни свою идею. Непонятно, но интересно.
или в Skype
ЗЫ Как ты знаешь, мы также активно юзаем Гит.
54. AlexO 135 16.12.14 15:00 Сейчас в теме
(53) artbear,
Как ты знаешь, мы также активно юзаем Гит.

А мы не юзаем Гит. Мы пишем код в 1С ))
Team leader; +1 Ответить
9. ksuman 22 01.10.14 11:58 Сейчас в теме
Считаю это решение: Деэволюцией программного обеспечения.
Когда-то было инновацией придумали Визуализацию языков высокого уровня (Delphi из TurboPascal, С++ Bulder из Turbo C++). У вас все наоборот.
Может нам лучше взять в руки палку и отрасти хвосты?
10. vikad 131 01.10.14 12:22 Сейчас в теме
(9) ksuman, я, конечно, в вопросе так хорошо, как Вы не разбираюсь но здесь http://www.develplatform.com/2013/01/blog-post_31.html в разделе "Немного критики" по-моему, все наоборот написано....
11. saiten 246 02.10.14 11:47 Сейчас в теме
(9)А современные IDE для .NET framework (managed C#, за остальные языки не поручусь), например, на основе того, что накидано в визуальном редакторе создают программный код, генерирующий форму, и наоборот-по коду формируют представление, которое можно редактировать мышем. Что несравнимо удобнее ресурсных файлов делфи-билдеров. Так что шаг это назад или вперёд - вопрос спорный. (для турбо С, кстати, я визуальных редакторов не помню... была библиотека визуальных компонентов Turbo Vision, но, насколько помню, код там надо было-таки собирать ручками).
12. ksuman 22 02.10.14 12:41 Сейчас в теме
(11) saiten, "...из Turbo C++..." - я так сказал про Builder.
"IDE для .NET framework (managed C#" - Да это эволюция, потому как мы все равно работаем и настраиваем формы в Визуальном редакторе, мы сразу видим все что мы меняем и в коде и в конструкторе визуально.
В 1С нет таких механизмов, чтобы на стадии конструирования компилировать на лету программный код и преобразовывать его визуально. Когда появится, тогда и сама эта тема перестанет быть актуальной. Но с учетом того что при каждом усложнении новых выпусков платформы 1С - глюки, которые сопровождают - растут по экспоненте...
Так что я даже не знаю, хочу ли я этой инновации в 1С...
13. saiten 246 02.10.14 13:48 Сейчас в теме
(12)Консенсус? Всё-таки генерация порождающего кода формы - это не деэволюция, а фишка, которая может быть полезной в решении определенных задач. В случае 1С не без костылей, да, но УФ - вообще тот ещё инвалид, костыли уже привычны.
ojiojiowka; vikad; +2 Ответить
14. ksuman 22 02.10.14 15:03 Сейчас в теме
(13) saiten, я бы назвал это фишкой или шаблоном, если бы это работало в конфигураторе. А так чисто практического применения не вижу. Проще самому создать ряд шаблонов на каждый вид элемента или копировать уже существующий код его меняя, чем создавать элементы, затем компилировать и запускать приложение, потом по новой менять... А если надо что-то поменять, вставить элемент в форме (не крайним), что Вы будете по новой создавать элементы, смотреть что получится?

Это к теме не относится, так наболело:
Честно я вообще не понимаю, зачем отказываться от уже нормальной схемы работы в Приложении, когда у разработчика есть четкий план, когда и куда какой элемент поставить и, в угоду мобильным приложениям и планшетам, нагнуть пользователей ПК и заставить их использовать Тонкий клиент...
15. saiten 246 02.10.14 16:36 Сейчас в теме
(14)В конфигураторе этого, к сожалению, нет, и, думаю, в рамках 8.3 точно не будет. Ну а по поводу практического применения... Если мы чего-то не видим, то это не значит что этого нет. Например, если надо добавить на типовую форму документа достаточно сложную панель, то удобно её добавить в редакторе форм, но при каждом изменении формы поставщиком конфы придётся иметь геморрой с обновлением. Альтернатива - добавлять элементы программно: меньше проблем с обновлением, но запаришься подгонять, чтобы всё встало куда надо. Компромисс - нарисовать форму в редакторе, сгенерировать код и подставить его в рабочее приложение. По-моему, это очевидно.
zqzq; ekaterinaeon; +2 Ответить
51. AlexO 135 16.12.14 11:25 Сейчас в теме
(15) saiten,
Компромисс - нарисовать форму в редакторе, сгенерировать код и подставить его в рабочее приложение. По-моему, это очевидно.
По-моему, это не "компромисс", а единственно рабочий метод программного создания форм как на ОФ, так и - тем более, с сомнительными неуправляемыми автопривязками, - на УФ.
(14) ksuman,
Честно я вообще не понимаю, зачем отказываться от уже нормальной схемы

Видимо, 1С просто не справилась с нормальной автопривязкой в ОФ (с обратной связью, с нормальным отображением - все помнят перечеркнутый красным крестом прямоугольник, когда привязка "неправильна", или отсутствие реакции элемента на изменение формы, хотя вроде все привязки сделаны). И решило "пойти другим путем" - на авось, вдруг "прокатит".
Путь неуправлемых автопривязок УФ, может, и другой, но проблемы те же.
И неумение их решить - все также на первом плане.
61. lustin 27.12.14 14:31 Сейчас в теме
(15) saiten, я думаю что из Конфигуратора можно вызвать c помощью epfLoader'а от Snegopata, так как судя по всему 2015 год Конфигуратор будет таким же убогим как и раньше.

(47) Что касается исходного посыла:
Надо вспомнить что управляемые формы - сиречь XAML (C#) или Jelly (java)

http://commons.apache.org/proper/commons-jelly/tutorial.html
http://msdn.microsoft.com/en-us/library/ms788723(v=vs.110).aspx

Соответственно если раздумывать над тем - как можно сравнивать и анализировать управляемые формы, нужно исходить не только из проблематики нашей 1С-нины, но и из проблематики WPF и Java (jelly)
Но "низом" как все правильно заметили - это в принципе XML со схемой данных

В итоге получается если разделить задачу на 2 составляющие у нас получается:

ядро должно позволить делать XML merge и diff
а интерактивная часть должна иметь 3 закладки
а. показать объединенную форму
б. пока diff в терминах метаданных (c конфликтами)
в. показать diff в терминах XML
дополнительно надо помнить что надо объединять не только XML представление, но и данные формы.
В общем виде задача пока такая. Основные проблемы в ядре - так как у того же WPF эта проблема также еще не решена окончательно.

И еще - это уже из Java мира приехало: дело в том что когда форма описывается формально (то есть правилами, а не свойствами - в Java мире используется такая хрень как LookAndFeel) меняются не только элементы, но и их "поведение" - привязки, расширение и т.д. И вот тут начинается веселье - merge он же статичен, то есть показывает разницу в стилях и элементах, но не показывает "что будет если форма будет в полном экране, НЕ в полном и т.д.)

В итоге видится:

Xml merge + XSD validate - чтобы попробовать отобразить получившуюся форму. Наверное стоит подсветить элементы исходной версии черным, элементы добавленные зеленым, конфликтные красным.
XmlForm+XmlFormData diff - чтобы сформировать отчет наподобии неуправляемых форм, что поменялось в данных формы и в элементах

Пока так в первом приближении... Чуть позже будут подробности, так надо актуализировать что в последней версии есть у v8Reader

(54) Артур, немного лукавит, юзают только ведущие программисты и "сочувствующие", на самом деле в стандарт разработки 2 года назад был включен следующий пункт


Ведущий программист 1С (Team leader)
* имеет на своем компьютере
1. 1С предприятие 3 версий (legasy, stable, beta)
2. Visual Studio
3. SQL Developers Edition
4. MSGit (добавлено в PATH)
5. Attlasian SourceTree
6. 1Script (добавлено 4 месяца назад)
7. xUnitFor1C, v83unpuck, precommit1c

* внедряет в своей команде
0. Использование сервера тестирования, сборки и развертывания и скрипты для этого. А также использование файлов поставки для развертывания релизов.
1. TDD - для автоматизированного тестирования, BDD - для формализации требований
2. GitFlow как стандарт коллективной разработки
3. обычные разработчики, консультанты, внедренцы и остальные странные личности работают с хранилищем и получают "по шапке" только за отсутствующий комментарий при помещении разработки в хранилище. Присоединяются к "движению" за правильную разработку, только по собственному желанию, желанию ведущего разработчика 1С или желанию ИТ руководства, когда проект загнулся от ошибок в процессе бурного развития (кризисное управление)

Показать


Для всех новых приходящих была специально разработана вакансия в стиле "чемпион" (сейчас в архиве, так как чемпионов достаточно)
http://job.svyaznoy.ru/msk/office/archive/it/572503/

P.S. Если в ответном комментарии кто-то захочет что-нибудь сказать про Снегопат, ознакомьтесь пожалуйста с этим https://snegopat.ru/forum/viewtopic.php?f=1&t=667
62. saiten 246 29.12.14 13:11 Сейчас в теме
(61)
из Конфигуратора можно вызвать c помощью epfLoader'а от Snegopata
Мэйби... Я нищеброд и снегопата не имею, так что вообще не представляю о чём речь.
67. AlexO 135 21.01.15 10:27 Сейчас в теме
(61) lustin, или вы очень далеко ушли, или ушли - но не в ту сторону.
Какие XmlForm+XmlFormData diff, LookAndFeel и прочее?
С выгрузкой бы УФ в XML, и в корректном сравнении их между собой бы разобраться...
18. ekaruk 4975 02.10.14 21:44 Сейчас в теме
(14) ksuman, По новой создавать ничего не нужно.
Форма один раз копируется, но основной остается типовая.
В скопированную форму конструктором вносятся элементы нужного размера, с нужными параметра. Настраиваются все свойства.
По скопированной форме генерируется код и вставляется в переопределяемый общий модуль.
Типовая форма при этом остается неизменной и полностью на поддержке.
При необходимости новый изменения вносятся в измененную копию..
16. ekaruk 4975 02.10.14 21:16 Сейчас в теме
(9) ksuman, тут каждый сам решает, как ему проще изменения вносить.
На моих последних проектах внедрения внесение изменений в формы программно было обязательным требованием к коду.
Просто пока не столкнешься с обновлением сильно измененных конфигураций, об этом не задумываешься.

А вообще УФ офигительно удобная штука.
Я с них начинала когда-то. Потом полтора года работала с обычными.
Последние полгода работаю только с управляевыми.
ИМХО, с обычными гемороя на порядок больше. Привязки, положения элементов вечно куда-то сбиваются.
С УФ просто нужно один раз понять идеологию, потом работа с ними гораздо проще, чем с обычными.
user591389_aska_rabota; cprit; Kinestetik; HystriX; japopov; brr; IgorS; Flashill; DeD MustDie; sigmov; dmpas; ojiojiowka; SharlySka; Redhatych; lefthander; Пан; ekaterinaeon; +17 Ответить
19. ksuman 22 03.10.14 00:34 Сейчас в теме
(16) Бог с Вами, нравится Вам так работать, работайте... Только хотел бы отметить Вашу невнимательность: 1С-команда под давлением разработчиков пошла последним на уступки и чтобы облегчить обновление отредактированных изменений интерфейса и обработчиков модулей объектов, ввела ряд Общих модулей с постфиксом "Переопределяемый". И все стандартные обработчики форм и модулей объектов обращаются вначале к ним. Применительно к Вашей задаче, следовало бы подцепить этот с моей точки полезный механизм при генерации кода как альтернативу...

Насчет УФ: тут дело не во вкусе и сложности разработки (программист должен любить именно сложные задачи), а в возможностях интерфейса для решения любой задачи. Некоторые задачи в УФ не решить.
20. ekaruk 4975 03.10.14 00:42 Сейчас в теме
(19) ksuman, Вы бы хоть в теме разобрались, прежде, чем писать.
Модуль "Переопределяемый" из УТ и УП упомянут в статье 3 раза.
Пример встраивания в конфигурацию тоже приведен для него, а не для модуль объекта ("Форма" вместо"ЭтаФорма").
52. AlexO 135 16.12.14 11:31 Сейчас в теме
(16)
С УФ просто нужно один раз понять идеологию, потом работа с ними гораздо проще, чем с обычными.

Не согласен.
Это разработчик должен обтесать и вырубить форму для своих замыслов, а не форма - обтесать и вырубить замысел разработчика.
Т.к. в последнем случае все сводится к единственному случаю: 1с предусмотрела эту возможность - замысел "обтесался" и "подстроился" под форму. Нет - все замыслы перечеркиваются единственным ответом "извините, вам это не нужно". Кому это не нужно? 1С? Управляемой форме, что она не может предоставить нужный функционал?
Мне, как разработчику, и заказчику, точно и однозначно нужно. А однозначно не нужен - вот такой подобный подход к разработке среды программирования.
dunaeva1986; fzt; r.zinovev; tormozit; abrafaks; Serega-artem; Yashazz; ksuman; +8 Ответить
45. AlexO 135 16.12.14 09:50 Сейчас в теме
(9) ksuman,
Считаю это решение: Деэволюцией программного обеспечения.

Дело в том, ч то у нас проблема с 1С.
Нет качественного и нормального механизма программного создания элементов. Отсюда и костыли.
К программированию в широком смысле это никакого отношения не имеет.
64. AlexanderKai 20.01.15 09:40 Сейчас в теме
Использую вариант обработки "Декомпиляция управляемых форм 3.0 (с 8.3.5)".
Заканчивается ошибкой:

{Документ.СписаниеСРасчетногоСчета.Форма.ФормаДокумента.Форма(9)}: Ошибка при вызове метода контекста (Создать)
ВнешниеОбработки.Создать(ЭтаФорма.Параметры.ДекомпиляцияЭлементов.ИмяПодключеннойОбработки,Ложь).ОпределитьВнутренниеСвойстваЭлементов(ЭтаФорма);
по причине:
Ошибка подключения внешних метаданных
по причине:
Каталог не обнаружен 'C:\Users\user1\Desktop\Полезное\ДекомпиляцияУправляемыхФорм_v3­.0.epf'

То есть обработка пытается запуститься с клиентского компьютера, в то время как находится на сервере.
65. ekaruk 4975 20.01.15 23:43 Сейчас в теме
(64) AlexanderKai, Да, действительно.
В клиент-серверном варианте не вызывается.
Спасибо. Раньше работало. Поломалось после какой-то из доработок.
Исправила в 3.0.1.
Не могу 3.0 обновить, иначе ее статус автоматически изменится на "абонемент" и невозможно будет скачать бесплатно.
68. AlexO 135 21.01.15 10:39 Сейчас в теме
(65)
Не могу 3.0 обновить, иначе она перестанет быть бесплатной.
Так у вас платная или бесплатная разработка? Если у вас маркетинговая направленность как у германовского e-конструктора, то значит так.
(61) lustin,
Если в ответном комментарии кто-то захочет что-нибудь сказать про Снегопат
Орефков в очередной раз борется с ветряными мельницами 1С.
Вспомним, какой выхлоп у Снегопата (ну ладно, назовем это - "прорыв", тем более, в сравнении с последующим развитием) был на 8.1. Потом - вышла 8.2, и Снегопат подделывали под кадый даже не релиз - под-подрелиз постоянно перекручиваемой в мясорубке платформы.
Теперь - полный рефакторинг под некий сторонний убер-продукт AngelScript, который также просто является одним из инструментов (одним из многих), которые все наслаиваются и наслаиваются пирамидой на разработку в конфигураторе 1С. И что никак не отменяет переработку Снегопата под новые "убер-релизы" платформы от 1С (как ей самой кажется, и каждый раз вводится "множество изменений", которые потом на деле оказываются либо фикцией, либо повтором самих себя, либо просто "еще нерабочие", но ошибки тянут за собой вполне "рабочие").
А что в итоге? А в итоге - "тут покрасивше, тут ТЧ могу сразу в коде описать, тут подсказка более удобна". И на это затрачено - сколько человеко-лет?
69. ekaruk 4975 21.01.15 11:08 Сейчас в теме
(68) AlexO,
Так у вас платная или бесплатная разработка? Если у вас маркетинговая направленность как у германовского e-конструктора, то значит так.
Я имела в виду, что технически не могу загрузить на инфостарте обновленный вариант и оставить его свободным для скачивания. Такой режим только у старых файлов остался.
70. AlexO 135 21.01.15 14:19 Сейчас в теме
(69) ну тогда - вы всегда можете выложить его в комментариях ))
17. ekaruk 4975 02.10.14 21:19 Сейчас в теме
Добавила обновлённую версию обработки.
Отличия от прошлой описаны в тексте описания.
Ну и добавила по ней пару картинок.
21. cleaner_it 209 05.10.14 19:10 Сейчас в теме
(0) Отличная вещь. Я с ее помощью сейчас дорабатываю серьезно дописанную конфигурацию, чтобы обновлять было проще.

Для команд нужно добавить генерацию кода:
	
// ******   Команда формы  - вывод кнопки "ПрисоединенныеФайлы"    ***********
НовыйЭлемент = Этаформа.Элементы.Вставить("ПрисоединенныеФайлы",Тип("КнопкаФормы"),ЭтаФорма.КоманднаяПанель);
НовыйЭлемент.Вид = ВидКнопкиФормы.КнопкаКоманднойПанели;
НовыйЭлемент.ИмяКоманды = "ПрисоединенныеФайлы";
22. ekaruk 4975 05.10.14 19:36 Сейчас в теме
(21) cleaner_it, рада, что пригодилось.
Для кнопок сейчас поддерживаются свойства (Вид, АктивизироватьПоУмолчанию,Видимость, Высота, ВысотаЗаголовка, Доступность, Заголовок, ИмяКоманды, ТолькоВоВсехДействиях, ЦветРамки, ЦветТекста, ЦветФона, Ширина, Шрифт).
Для команд код тоже генерируются. Поддерживаются свойства: Действие, Заголовок, ИзменяетСохраняемыеДанные, Отображение, Подсказка.

Нужно просто отметить на закладке "Команды" перечень нужных Вам команд. Посмотрите на скриншоты. Насколько я понимаю, это команда "ПрисоединенныеФайлы", так как она назначена для указанной Вами кнопки формы.

Команды и реквизиты поддерживаются только в версии обработки 3.0. Не знаю, какая у Вас.
23. rasswet 82 06.10.14 15:42 Сейчас в теме
(22) а нельзя как-то так придумать, чтобы не нужно было делать
3. Для генерации кода обязательно включение в процедуру "ПриСозданииНаСервере" модуля декомпилируемой формы следующего кода.
для обычных форм все просмотренные мной решения генерят (кто-то лучше, кто-то хуже) без предварительного допиливания исходной формы.
неудобно как-то сначала в форму вписывать этот код.
24. ekaruk 4975 06.10.14 15:59 Сейчас в теме
(23) rasswet, Можно, так работает обработка в версии 2.0. Формирует код без изменения формы.
Но в этом режиме открытия формы недоступны часть свойств элементов, обработчики событий элементов формы, реквизиты формы и их свойства. Получить к ним доступ можно только изнутри формы. Т.е. из процедуры "ПриСоздании" самой формы.
Если покажете работающий вариант с управляемыми формами, то переделаю. Пока не вижу технической возможности получить все нужные реквизиты без модификации изменяемой формы формы.
25. ekaruk 4975 06.10.14 16:01 Сейчас в теме
(23) rasswet, если постоянно работаете с одной и той же конфигурацией УТ11 или УП2.0, то достаточно вписать код один раз в общий модуль и об этой проблеме забыть. Он будет вызываться для всех форм.
В других конфигурациях, к сожалению, такой возможности нет.
26. rasswet 82 13.10.14 15:15 Сейчас в теме
(25) в какой именно общий модуль? в БП 3.0 он есть?
27. ekaruk 4975 13.10.14 15:25 Сейчас в теме
(26) rasswet, Общий модуль «МодификацияКонфигурацииПереопределяемый»
В БП, к сожалению, нету.
Точно есть в УТ11 и УП2.
По остальным кофигурациям не знаю.
Подробнее тут http://infostart.ru/public/303645/
28. mihast 68 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)}: Поле объекта не обнаружено (ПолеПериода)
СоответствиеТекстовыхПредставлений.Вставить(ВидПоляФормы.ПолеПериода,"ВидПоляФормы.ПолеПериода");
30. ekaruk 4975 18.10.14 10:20 Сейчас в теме
(28) mihast, Полноценная 8.3.4.465 или может режим совместимости или еще что-то?
ПоложениеСостоянияПросмотра это системное перечисление.
С ним проблем не должно быть.
У меня нет 8.3.4.465. Не знаю,как проверить, в каком релизе оно появилось.

Можете просто в конфигураторе открыть обработку и закоментировать связанные с ним строки, чтобы это свойство не обрабатывалось.

(29) mihast, В принципе можно. Чуть позже добаклю.
29. mihast 68 18.10.14 09:48 Сейчас в теме
Не декомпилируются КоманднаяПанель Формы :( Разбор начинается только с Групп...

Можно добавить ?
31. ekaruk 4975 18.10.14 10:29 Сейчас в теме
(29) mihast, Нашла на ИТС
Положение состояния просмотра – описывает, где будет отображаться состояние просмотра: по каким полям выполнялся поиск и какие значения искались в каждом поле. Может принимать следующие значения: Авто, Нет, Верх, Низ.
Если свойство установлено в значение Нет, то состояние просмотра будет отсутствовать на форме. В результате определить, выполнен поиск или нет, можно будет только по доступности кнопки Отменить поиск.
Если свойство установлено в значение Верх, то состояние просмотра будет расположено между командной панелью списка и таблицей, отображающей динамический список. Если свойство установлено в значение Низ, то состояние просмотра будет размещено сразу после таблицы, отображающей динамический список.
Если форма создана в «1С:Предприятии» версии 8.3.4 и младше – свойство установлено в значение Нет. Если форма создана в «1С:Предприятии» версии 8.3.5 и старше – свойство установлено в значение Авто. Реальное значение свойства в этом случае будет определяться следующим образом:
● Если свойство Режим совместимости установлено в значение Версия 8.3.4 (и ниже) – значение Нет;
● Если свойство Режим совместимости установлено в значение Не использовать или старше значения Версия 8.3.4 – значение Верх;

http://its.1c.ru/db/v83doc#bookmark:dev:TI000001337

Похоже, обработка работает, начиная с полноценной 8.3.4

Или запускайте в актуальном релизе или просто в конфигураторере выкиньте обработку этого свойство. Я подумаю, может как-то обрабатывать програмно разные релизы платформы. Но пока этого нет.
32. ekaruk 4975 18.10.14 10:39 Сейчас в теме
(29) mihast,
+ к (30) Похоже, свойство появилось только в 8.3.5

Для элемента управляемой формы ТаблицаФормы реализованы предопределенные элементы СтрокаПоиска, СостояниеПросмотра, УправлениеПоиском, а также свойства ПоложениеСтрокиПоиска, ПоложениеСостоянияПросмотра, ПоложениеУправленияПоиском.

http://downloads.v8.1c.ru/content//Platform/8_3_5_1068/1cv8upd.htm
86. alexqc 150 08.07.15 17:21 Сейчас в теме
(32) если еще нужно - для определения наличия "глобальных" свойств можно использовать примерно такой финт:
Если Ложь Тогда
ПоложениеСостоянияПросмотра=0
КонецЕсли;

Если ПоложениеСостоянияПросмотра<>Неопределено Тогда
....


Суть: наличие присваивания (даже в никогда не выполняющемся блоке) объявит такую переменную при ее отсутствии. Это позволит обращаться к ней в коде без возникновения ошибки компиляции.
Переменная будет инициализирована значением Неопределено. А вот если с таким же именем существует глобальное свойство, то оно так и останется неизменным, и естественно не равным Неопределено.
Serg2000mr; +1 Ответить
88. ekaruk 4975 08.07.15 19:45 Сейчас в теме
(86) alexqc, Да, логичный вариант.
Для глобальных удобно.
По старым ошибкам там все-таки не глобальные переменные, а свойства элементов.
Так что такой подход не поможет.
Можно, конечно, описать все возможные варианты всех элементов и проверять каждый раз, есть ли такой элемент. Но это как-то слишком запутанно получается.
89. alexqc 150 09.07.15 17:46 Сейчас в теме
(88) Свойства элементов - через точку? Так еще проще, это ж ошибки времени выполнения. Можно завернуть в попытку, либо использовать промежуточное заполнение через Структуру с последующим ЗаполнитьЗначенияСвойств(). Я привел вариант именно обхода ошибки компиляции.

ЗЫ. Сижу на доработанной УПП для Украины, под 8.2, да еще и в режиме совместимости с 13-м релизом (отключать нельзя бо начинают глючить некоторые ТИПОВЫЕ куски), естественно большей частью на неуправляемых формах. И при обновлении конфы поддержки только облизываюсь, глядя на "слоеный пирог" в 8.3. И :) и :( .
34. rusak171 13.11.14 17:51 Сейчас в теме
Большое спасибо за обработку, с плюсиком еще не разобрался
35. roman77 334 28.11.14 15:02 Сейчас в теме
Отличная обработка.
Для картинок можно больше свойств генерировать типа:

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


36. Alister 10 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)}: Переменная не определена (ПоложениеСостоянияПросмотра)
............
39. ekaruk 4975 11.12.14 08:38 Сейчас в теме
(38) NOVOPRO, ПоложениеСостоянияПросмотра добавлено в 8.3.5.1068.
У Вас либо релиз платформы старый либо включен режим совместимости.
Обновите платформу либо возьмите версию обработки для 8.2.
40. dimk@a 15.12.14 15:58 Сейчас в теме
Очень интересная разработка. Спасибо! Беру на вооружение. К счастью, в последний год не доводилось обновлять конфигурации, уже забываю что это за "радость".
41. new_user 15.12.14 16:08 Сейчас в теме
43. jobkostya1c_ERP 100 15.12.14 19:44 Сейчас в теме
Пока открыли на бесплатный доступ из дайджест-рассылки надо скачать. Как говорится в народной шутке "в кулацком хозяйстве все пригодится".
44. mihast 68 16.12.14 07:28 Сейчас в теме
Жаль, что разбор Командной панели все еще не доделан...
Может в праздники будет ?
60. ksuman 22 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 Сейчас в теме
А где же общие формы?
Alien_job; +1 Ответить
80. alexandr_astafiev 68 18.03.15 22:32 Сейчас в теме
Добавил колонку в динамический список ОстакиТоваров в обработку ПодборТоваровВДокументПродажи УТ 11.1.7.60 платформа 8.3.5.13 все работает. Спасибо.
81. DC 150 26.03.15 17:06 Сейчас в теме
Здорово... Только не видно реквизитов второго уровня (колонки таблиц значений и пр...). Это не предусмотрено?
82. ekaruk 4975 26.03.15 22:12 Сейчас в теме
(81) DC, Должны быть видны все реквизиты, которые отображаются на форме.
В том числе дополнительные колонки таблиц.
Вспомогательные, которые на форму не выведены, могут не отображаться.
85. Letos 267 30.06.15 13:02 Сейчас в теме
(82) Пытаюсь понять, на сколько подобная доработка актуальна с учетом появившегося "Расширения"? Кстати. на которую у вас тоже есть что-то подобное. =)
87. ekaruk 4975 08.07.15 19:43 Сейчас в теме
(85) Letos, На текущий момент доработка программно, конечно, менее актуальна.
Я немного поэкспериметировала с расширениями.
Пока нет однозначного впечатления.
Они дают много возможностей, на зато разрывают конфигурацию на несколько частей, что не очень наглядно.
Кроме того, расширениями можно пользоваться, если это фиксированный набор реквизитов.
Если набор реквизитов зависит от каких-то условиях, то их все равно нужно добавлять программно.
92. MaxS 2944 18.12.15 17:45 Сейчас в теме
(87) что-то расширения не впечатлили.
Например, программный код у меня более года кочует практически без изменений.
Сделал для эксперимента изменения в форме документа в расширении. Загрузил это расширение в предыдущую версию конфигурации. Оно не заработало, т.к. элементы формы в себе содержат кучу ссылок на справочники... а мне не нужна вся форма, мне нужно добавить несколько реквизитов и не трогать типовые. Если в расширении убрать из формы типовые элементы, они пропадают в предприятии. Может быть я что-то не так делаю? ;)

Как вариант развития этой обработки декомпиляции - можно предложить сравнение формы в расширении и основной формы и генерацию кода.
93. ekaruk 4975 20.12.15 23:27 Сейчас в теме
(92) MaxS, Расширения достаточно новый механизм.
Думаю, со временем основные проблемы порешают.
Ну и вообще чудес не бывает. Если между версиями в типовой изменилась структура реквизитов на форме (передвинулись группировки, какие-то элементы переместились на другие страницы, группы), то платформа не сможет ее однозначно сопоставить. Она конечно попытается в каком-то виде, но при значительных изменениях получится криво.
По факту, сейчас в расширениях достаточно удобно добавлять элементы кодом.
Просто код для добавления пропиывается в модуле формы расширения, не затрагивая основную.
Благодаря этому мы можем более четко указать, что именно хотим изменить.

По сравнению формы с расширением.
Насколько я понимаю, сейчас такой технической возможности нет.
В режиме предприятия у нас нет отдельного расширения. У нас цельная конфигурация с примененным расширением.
Т.е. сравнить их нельзя.
116. pt_olga 61 30.04.17 20:15 Сейчас в теме
{ВнешняяОбработка.ДекомпиляцияУправляемыхФорм3.МодульОбъекта(81)}: Ошибка при вызове метода контекста (Вставить)
СтруктураПутейКРеквизитам.Вставить(ПутьБезТочек);
по причине:
Задано неправильное имя атрибута структуры
:(

форма элемента Контрагентов в УНФ 1.6.9.43 на платформе 8.3.9.2033
83. K_A_O 539 20.04.15 16:44 Сейчас в теме
Бывают ситуации, когда нужно не только добавить новые реквизиты (команды, элементы), но и изменить существующие.
Подправил код. Может не помешает, поскольку существующему режиму работы никак не вредит (надеюсь).
Прикрепленные файлы:
ДекомпиляцияУправляемыхФорм_v3.0.1_tune2.epf
NorraSaltolinen; +1 Ответить
84. пользователь 23.04.15 12:40
Сообщение было скрыто модератором.
...
90. Shalnov 149 25.10.15 09:42 Сейчас в теме
Немного доработал на "быструю руку" добавление свойства для кнопок "Картинка"
Возможно не лучший вариант..., но мне помогло

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

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

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


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

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


и

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

Serg2000mr; +1 Ответить
91. ekaruk 4975 25.10.15 11:30 Сейчас в теме
(90) Shalnov, Вполне корректно доработано. Для картинок из библиотеки будет работать правильно.
94. Garykom 17 08.02.16 22:02 Сейчас в теме
Обработка "не видит" командные панели (и кнопки на них) ТЧ на вкладках страниц в формах документов.
Это баг или фича? :)
itoptimum; +1 Ответить
95. ekaruk 4975 09.02.16 10:18 Сейчас в теме
(94) Garykom, Вроде должна видеть.
Напишите пример (конфигурация, форма, платформа), на которых не видит командную панель.
96. sano 71 17.02.16 11:54 Сейчас в теме
Так и не получилось программно добавить кнопку глобальной параметризуемой команды. Указываю
НовыйЭлемент.ИмяКоманды = "Обработка.ИмяМоейОбработки.Команда.ИмяКомандыОбработки";

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

Кто-нибудь сталкивался с такой проблемой, и есть ли решение?
Оставьте свое сообщение