ВНИМАНИЕ!!! Инструмент находится на стадии эксперимента и может содержать ошибки. Для платформы 8.3 не адаптировался, поэтому не все функции на это версии платформы поддерживаются.
Описание
Обработка "Помощник программного изменения форм" предназначена для формирования программного кода создания и изменения элементов формы, а также задания их свойств.
С ее помощью Вы сможете выполнять модификацию форм конфигураций экономя время на написании кода. Помощник не сделает всю работу за вас! Он лишь поможет Вам в выполнении рутинных действий.
Возможности
Функционал обработки доступен к использованию как в обычном приложении, так и в режиме управляемого интерфейса (тонкий и толстый клиент).
В режиме обычного приложения обработка позволяет работать с обычными формами и управляемыми (если в конфигурации включена поддержка управляемых форм в обычном приложении).
Запустив обработку в управляемом режиме ее функционал будет ограничен только управляемыми формами конфигурации. Это связано с ограничениями платформы 1С:Предприятие по работе с обычными формами в управляемом режиме (не все типы и методы обычных форм доступны в управляемом интерфейсе). Также в полной мере не будет работать предварительный просмотр измененной формы (программное изменение состава элементов формы доступно только на сервере, поскольку непосредственно передать управляемую форму с клиента на сервер нельзя — эти возможности не доступны).
Обратная связь
Для обратной связи добро пожаловать в комментарии!
Забавная вещица, но неряшливо сделанная. И интерфейс можно бы докрутить, и опечатки всякие…
И, я не сумел всё же понять, генерирует ли эта обработка код под управляемые формы?
(1) Yashazz, под управляемые формы код генерирует.
Опечатки и интерфейс допилю =) Это же как-никак версия 0.2. Когда подойдет выход 1.0 думаю уже использовать можно будет по полной.
Функционал еще развивать и развивать.
Ну ок — подождем версию 1.0 и тогда плюсанем )))
Если бы существовала возможность сохранить ПРОГРАММНО СГЕНЕРИРОВАННУЮ форму в «обычном» виде, то есть как если бы она была сделана в конструкторе форм — то тогда последующие доделки формы уже не были бы слишком трудоемкими.
На входе имеем обычную форму, меняем ее в конструкторе, сохраняем, и трансформируем форму в программный код.
Впоследствии, если потребовались масштабные изменения, сохраняем программный код как «обычную» форму, и меняем ее в конструкторе.
Ну как-то именно «забавная», не более того. По крайней мере, то, что есть сейчас.
Я так понимаю, что целью было избежать геморроя при обновлении — так что особо сильно не поможет, судя по всему )
(5) AlX0id, уже помогает.
(5) AlX0id, поможет, в каталоге много материала на тему минимального изменения конфигурации, тут 1 шаг — формирование кода, второй шаг грамотно разместить его.
(4) kapustinag, в статье (ссылка в публикации) я писал, что лучше бы «Конфигуратор» все изменения в форме конструктором делал как в Visual Studio. Там все элементы формы всегда формируются программным образом. И в этом огромный плюс!
(3) w-divin, сам жду с нетерпением =)))
У меня выскакивает ошибка при выборе любой формы (документы, обработки и т.п.)
Конфигурация ЗУП. (Обычное приложение)
{Форма.ФормаОбычная.Форма(292)}: Ошибка при вызове метода контекста (ПолучитьФорму)
ВыбраннаяФорма = ПолучитьФорму(ТекущаяФорма, ПараметрыФормы);
по причине:
Недопустимое значение параметра (параметр номер ‘1’)
(0) как насчет привязок ? без них идея реализована наполовину.. реализуете — плюс с меня
(10) cdb, дело в том, что некоторые формы требуют обязательной инициализации каких-либо параметров. Тут либо нужно в копии оригинальной формы убрать обработчики событий «ПриОткрытии» и «ПередОткрытием», или закомментировать код, вызывающий ошибку.
В будущем возможно сделаю автоинициализацию таких параметров. Пока правда не знаю как)
(11) srv7, обязательно сделаю.
Идея интересная. По поводу привязок в ОФ’ах поддержу (11)
Знакомы ли Вы с публикациями на эту же тему (думаю, не помешает ознакомиться в целях развития разработки):
Декомпилятор управляемых форм
Декомпиляция элементов формы для 8.2 для обычных форм (не управляемых).
Сравнение объектов и форм метаданных (очередная декомпиляция и анализ форм)
Декомпиляция и анализ форм с генерацией кода формы
—
—
—
—
(15) yandextesting, спасибо за ссылки.
Некоторые из публикаций уже читал ранее.
(16) в одной из приведенных публикаций (думаю, в самой поздней), насколько помню, был реализован обход ошибки, описанной в комментарии (10)
(0), (16) В продолжение списка публикаций из (15) — о «слоне»-то я забыл:) упомянуть:
V8Reader (с расширенным анализом форм) Upd. , там также можно почерпнуть некоторую информацию для развития своего решения.
— наиболее продвинутое решение в смежном направлении (в т.ч. генерация кода формы), сугубо на мой взгляд,
(18) yandextesting, V8Reader очень хорош. Его кажется частично используют в Снегопаде.
(20) artbear, к понедельнику выложу новую версию обработки. Переработаю оформление публикации.
(21) к сожалению пока не успеваю заняться доработкой. В течении недели выложу новую версию с поддержкой привязок и доп. поддержкой элементов обычных форм.
(0) Добротно сделано. Основательно. Спасибо, автор, молодец!
(6), (7) задаю прямой вопрос: как программное создание элементов форм помогает при дальнейшем обновлении конфигураций? и еще один: как «грамотно» разместить код программного создания элементов, чтобы вся затея помогала с обновлением конфигураций?
имхо, не стоит заморачиваться над программным созданием именно элементов форм! лучше создать свою форму, скопировав например основную форму элемента справочника или основную форму документа, и ее уже изменять. Ни одно последующее обновление ее не затронет.
(23) Rustig, на счет копирования формы — так и делаю. Но в скопированной форме, чтобы при последующем обновлении не заниматься копипастом, изменяю форму программным образом. Тогда при последующем накате обновлений поставщика нужно скопировать одну строчку кода и все, так как все пограммные изменения делаются в общем модуле. Каждая форма лишь вызывает соответствующую процедуру и передает туда форму, объект.
Например, в событии «ПередОткрытием» вызывается процедура общего модуля:
DEV_ИзменениеФормы.ПередОткрытиемАвансовыйОтчетФормаДокумента(ЭтаФорма, ЭтотОбъект, <ИмяФормы>);
Имя формы передаю, т.к. у документа может быть несколько форм одинакового типа.
(24)
Ваш поставщик обновляет и сделанные копии форм тоже?
зачем — если форма уникальна, — делать программно элементы?
(23) Rustig,
… и при следующем изменении самой типовой формы или её модуля будете мучительно думать — а как теперь соединить-то все изменения в одной снова?!
(2)
автор, вы можете четко, по пунктам, объяснить — в чем отличие вашей разработки от приведенных в (15)?
Вы придумали новый способ делать программные элементы в 1С? Ваша обработка сразу подсказывает, что и куда поместить, чтоб не трогало типовое обновление? Что нового? 🙂
(26) AlexO, хотя бы скачайте и посмотрите. Как сказал выше, после новой версии напишу подробное описание. Сейчас недостаточно времени.
(27)
ну я как-бы давно пользуюсь обработками из списка ( 15), и впорос, что еще можно «эдакого» написать, возник не случайно 🙂
Поэтому и спрашиваю — что? Или вы не смотрели те обработки?
Ну т.е. это больше ваша обязанность — не изобретать велосипед 🙂
(25) ну вы прям любите поговорить 🙂
смотрите в суть, в глубину: мною описанный способ надо распространить на УТ например. На БП или ЗУП — с их частым обновлением — такой способ не будет простым решением… я считаю что универсального решения нет.
(29) Rustig,
УПП уже приближается по частоте обновлений к ним, и именно такой способ введения своих изменений — комплексный программно-копии-подписочный, — дает максимальный эффект при обновлениях.
Мне понравилось. Как раз собираюсь заняться работой в данном направлении, т.к. заниматься обновлением конфигураций каждый раз становится трудновато.
Сегодня встала задача: Есть 8 форм на каждую нужно добавить группу «Общие сведения» в ней порядка 8 реквизитов + оформление + доп группы для выравнивания.
Можно было бы CTRL+C/V по всем 8ми формам но пока еще до конца не определились с составом этих реквизитов, в итоге 100% будем еще раз переделывать (менять состав, группировку).
Так же в итоге выяснилось что есть генерируемые формы на них тоже нужно добавлять эти реквизиты.
Эта обработка могла бы помочь но пришлось дорабатывать она умеет только один элемент а мне нужно сразу для многих элементов(это не сложно добавить). Что хуже она не понимает дерево (тот самый элемент родитель).
Так же не хватает дерева и в списке элементов для которых генерировать код.
(32) VVi3ard, Обработка действительно сейчас умеет немного.
Те задачи, которые передо мной стояли решил, сейчас пока никак не могу всерьез взяться за ее допиливание. Только если постепенно, ибо другие задачи имеются.
(32) VVi3ard,
Так же не хватает дерева и в списке элементов для которых генерировать код.
Потому что вы, как и автор, не смотрите декомпиляторы из (15 ) 🙂
(34) AlexO, уже смотрим 🙂 Спасибо
интересно
(35) VVi3ard, вот и новая версия с поддержкой иерархии элементов и привязок для обычных форм.
Может пригодиться теперь =)
(34) AlexO, декомпиляторы я смотрел, и пользуюсь ими тоже в некоторых случаях. В остальном использую свою обработку, ибо для меня она удобнее.
Спасибо, посмотрю.
(37)
ну все, народ объяснил — ваша для управляемых недоформ 🙂
Я-то с позиции обычного приложения писал.
(39) AlexO, да для «неуправляемых» тоже, и для обычных =)
(40)
Ну с УФ вообще, похоже, полная ж, если там даже программно сформировать — все перелопачивать да и не всегда удается, а если напишите, чем отличается от аналогов в обычном режиме — то будет только плюс 🙂
Знаете, а мне нравиться стандартная реализация редактирования форм.
(23) можно множество изменений форм сделать в одном местеПсевдо подписка ПриОткрытии
(43) aet, для управляемых форм лучше делать «ПриСозданииНаСервере», так оптимальней будет, никаких лишних вызовов сервера.
Для обычных форм в большинстве случаев не важно «ПередОткрытием» или «ПриОткрытии».
(44) в (43) ключевое «в одном месте»
Спасибо болльшое изменения в форме не всегда охота делать а иногда и нельзя, капризные бывают заказчики. Поэтому выход +++
хорошая обработка!!!!!!
Посмотрел обработку «недопилина» она для управляемых форм (версия 3). Пришлось много чего руками править (может я не понял как):
— Не весь функционал перетаскивается — не перенося атрибуты групп (к примеру, нет типа группировки подчиненных элементов; путь к данным, имена команд);
— Не выделяются (пометка) параметры которые отличаются от по-умолчанию.
и др.
(48) ivanov660, со всем согласен. В перспективе допилю.
Вот уже который раз на публикацию о прогорммном изменении форм обращаю внимание, думаю у себя внедрить, но задача постоянно оказывается не столь актуальна, сколь другие. В итоге смотрю, думаю попробовать и забываю. Потом снова смотрю, думаю попробовать и далее по кругу. 🙂
(50) mr.Kot, сам такой же))
Перевел у многих форм изменения в программное формирование, потом пришли другие важные задачи и все. Больше этим не занимался уже более месяца)
Опытные программисты, скажите, новичку поможет начать изучать или освоить программирование? Или хотя бы начать настраивать формы под определённые нужды?
Иногда в формах нужно добавить одну колонку с нужными данными, может это облегчить работу?
Заранее благодарю за советы.
(53) validat, да, может.
Нужная приколюха.. ))))
Возьму на вооружение…
Достаточно удобно и наглядно…
Автор если бы при предварительном просмотре отображались изменения было бы здорово,
а еще неплохо добавить создание программных элементов прям в обработку…
+