Помощник программного изменения форм (версия 0.4)





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

ВНИМАНИЕ!!! Инструмент находится на стадии эксперимента и может содержать ошибки. Для платформы 8.3 не адаптировался, поэтому не все функции на это версии платформы поддерживаются.

Описание

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

Управляемая форма обработки

С ее помощью Вы сможете выполнять модификацию форм конфигураций экономя время на написании кода. Помощник не сделает всю работу за вас! Он лишь поможет Вам в выполнении рутинных действий.

Возможности

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

 Поддержка управляемых форм в обычном приложении

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

Запустив обработку в управляемом режиме ее функционал будет ограничен только управляемыми формами конфигурации. Это связано с ограничениями платформы 1С:Предприятие по работе с обычными формами в управляемом режиме (не все типы и методы обычных форм доступны в управляемом интерфейсе). Также в полной мере не будет работать предварительный просмотр измененной формы (программное изменение состава элементов формы доступно только на сервере, поскольку непосредственно передать управляемую форму с клиента на сервер нельзя — эти возможности не доступны). 

54 Comments

  1. Yashazz

    Забавная вещица, но неряшливо сделанная. И интерфейс можно бы докрутить, и опечатки всякие…

    И, я не сумел всё же понять, генерирует ли эта обработка код под управляемые формы?

    Reply
  2. YPermitin

    (1) Yashazz, под управляемые формы код генерирует.

    Опечатки и интерфейс допилю =) Это же как-никак версия 0.2. Когда подойдет выход 1.0 думаю уже использовать можно будет по полной.

    Функционал еще развивать и развивать.

    Reply
  3. w-divin

    Ну ок — подождем версию 1.0 и тогда плюсанем )))

    Reply
  4. kapustinag

    Если бы существовала возможность сохранить ПРОГРАММНО СГЕНЕРИРОВАННУЮ форму в «обычном» виде, то есть как если бы она была сделана в конструкторе форм — то тогда последующие доделки формы уже не были бы слишком трудоемкими.

    На входе имеем обычную форму, меняем ее в конструкторе, сохраняем, и трансформируем форму в программный код.

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

    Reply
  5. AlX0id

    Ну как-то именно «забавная», не более того. По крайней мере, то, что есть сейчас.

    Я так понимаю, что целью было избежать геморроя при обновлении — так что особо сильно не поможет, судя по всему )

    Reply
  6. YPermitin

    (5) AlX0id, уже помогает.

    Reply
  7. aet

    (5) AlX0id, поможет, в каталоге много материала на тему минимального изменения конфигурации, тут 1 шаг — формирование кода, второй шаг грамотно разместить его.

    Reply
  8. YPermitin

    (4) kapustinag, в статье (ссылка в публикации) я писал, что лучше бы «Конфигуратор» все изменения в форме конструктором делал как в Visual Studio. Там все элементы формы всегда формируются программным образом. И в этом огромный плюс!

    Reply
  9. YPermitin

    (3) w-divin, сам жду с нетерпением =)))

    Reply
  10. cdb

    У меня выскакивает ошибка при выборе любой формы (документы, обработки и т.п.)

    Конфигурация ЗУП. (Обычное приложение)

    {Форма.ФормаОбычная.Форма(292)}: Ошибка при вызове метода контекста (ПолучитьФорму)

    ВыбраннаяФорма = ПолучитьФорму(ТекущаяФорма, ПараметрыФормы);

    по причине:

    Недопустимое значение параметра (параметр номер ‘1’)

    Reply
  11. s_a_r_u_m_a_n

    (0) как насчет привязок ? без них идея реализована наполовину.. реализуете — плюс с меня

    Reply
  12. YPermitin

    (10) cdb, дело в том, что некоторые формы требуют обязательной инициализации каких-либо параметров. Тут либо нужно в копии оригинальной формы убрать обработчики событий «ПриОткрытии» и «ПередОткрытием», или закомментировать код, вызывающий ошибку.

    В будущем возможно сделаю автоинициализацию таких параметров. Пока правда не знаю как)

    Reply
  13. YPermitin

    (11) srv7, обязательно сделаю.

    Reply
  14. Новиков

    Идея интересная. По поводу привязок в ОФ’ах поддержу (11)

    Reply
  15. YPermitin

    (15) yandextesting, спасибо за ссылки.

    Некоторые из публикаций уже читал ранее.

    Reply
  16. yandextesting

    (16) в одной из приведенных публикаций (думаю, в самой поздней), насколько помню, был реализован обход ошибки, описанной в комментарии (10)

    Reply
  17. yandextesting

    (0), (16) В продолжение списка публикаций из (15) — о «слоне»-то я забыл:) упомянуть:

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

    Reply
  18. YPermitin

    (18) yandextesting, V8Reader очень хорош. Его кажется частично используют в Снегопаде.

    Reply
  19. YPermitin

    (20) artbear, к понедельнику выложу новую версию обработки. Переработаю оформление публикации.

    Reply
  20. YPermitin

    (21) к сожалению пока не успеваю заняться доработкой. В течении недели выложу новую версию с поддержкой привязок и доп. поддержкой элементов обычных форм.

    Reply
  21. Rustig

    (0) Добротно сделано. Основательно. Спасибо, автор, молодец!

    (6), (7) задаю прямой вопрос: как программное создание элементов форм помогает при дальнейшем обновлении конфигураций? и еще один: как «грамотно» разместить код программного создания элементов, чтобы вся затея помогала с обновлением конфигураций?

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

    Reply
  22. YPermitin

    (23) Rustig, на счет копирования формы — так и делаю. Но в скопированной форме, чтобы при последующем обновлении не заниматься копипастом, изменяю форму программным образом. Тогда при последующем накате обновлений поставщика нужно скопировать одну строчку кода и все, так как все пограммные изменения делаются в общем модуле. Каждая форма лишь вызывает соответствующую процедуру и передает туда форму, объект.

    Например, в событии «ПередОткрытием» вызывается процедура общего модуля:

    DEV_ИзменениеФормы.ПередОткрытиемАвансовыйОтчетФормаДокумента(ЭтаФорма, ЭтотОбъект, <ИмяФормы>);

    Имя формы передаю, т.к. у документа может быть несколько форм одинакового типа.

    Reply
  23. AlexO

    (24)

    Но в скопированной форме,

    Тогда при последующем накате обновлений поставщика

    Ваш поставщик обновляет и сделанные копии форм тоже?

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

    зачем — если форма уникальна, — делать программно элементы?

    (23) Rustig,

    лучше создать свою форму, скопировав например основную форму элемента справочника

    … и при следующем изменении самой типовой формы или её модуля будете мучительно думать — а как теперь соединить-то все изменения в одной снова?!

    Reply
  24. AlexO

    (2)

    автор, вы можете четко, по пунктам, объяснить — в чем отличие вашей разработки от приведенных в (15)?

    Вы придумали новый способ делать программные элементы в 1С? Ваша обработка сразу подсказывает, что и куда поместить, чтоб не трогало типовое обновление? Что нового? 🙂

    Reply
  25. YPermitin

    (26) AlexO, хотя бы скачайте и посмотрите. Как сказал выше, после новой версии напишу подробное описание. Сейчас недостаточно времени.

    Reply
  26. AlexO

    (27)

    ну я как-бы давно пользуюсь обработками из списка ( 15), и впорос, что еще можно «эдакого» написать, возник не случайно 🙂

    Поэтому и спрашиваю — что? Или вы не смотрели те обработки?

    Ну т.е. это больше ваша обязанность — не изобретать велосипед 🙂

    Reply
  27. Rustig

    (25) ну вы прям любите поговорить 🙂

    смотрите в суть, в глубину: мною описанный способ надо распространить на УТ например. На БП или ЗУП — с их частым обновлением — такой способ не будет простым решением… я считаю что универсального решения нет.

    Reply
  28. AlexO

    (29) Rustig,

    На БП или ЗУП — с их частым обновлением — такой способ не будет простым решением

    УПП уже приближается по частоте обновлений к ним, и именно такой способ введения своих изменений — комплексный программно-копии-подписочный, — дает максимальный эффект при обновлениях.

    Reply
  29. ivanov660

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

    Reply
  30. VVi3ard

    Сегодня встала задача: Есть 8 форм на каждую нужно добавить группу «Общие сведения» в ней порядка 8 реквизитов + оформление + доп группы для выравнивания.

    Можно было бы CTRL+C/V по всем 8ми формам но пока еще до конца не определились с составом этих реквизитов, в итоге 100% будем еще раз переделывать (менять состав, группировку).

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

    Эта обработка могла бы помочь но пришлось дорабатывать она умеет только один элемент а мне нужно сразу для многих элементов(это не сложно добавить). Что хуже она не понимает дерево (тот самый элемент родитель).

    Так же не хватает дерева и в списке элементов для которых генерировать код.

    Reply
  31. YPermitin

    (32) VVi3ard, Обработка действительно сейчас умеет немного.

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

    Reply
  32. AlexO

    (32) VVi3ard,

    Эта обработка могла бы помочь но пришлось дорабатывать она умеет только один элемент а мне нужно сразу для многих элементов(это не сложно добавить). Что хуже она не понимает дерево (тот самый элемент родитель).

    Так же не хватает дерева и в списке элементов для которых генерировать код.

    Потому что вы, как и автор, не смотрите декомпиляторы из (15 ) 🙂

    Reply
  33. VVi3ard

    (34) AlexO, уже смотрим 🙂 Спасибо

    Reply
  34. 91197ch

    интересно

    Reply
  35. YPermitin

    (35) VVi3ard, вот и новая версия с поддержкой иерархии элементов и привязок для обычных форм.

    Может пригодиться теперь =)

    (34) AlexO, декомпиляторы я смотрел, и пользуюсь ими тоже в некоторых случаях. В остальном использую свою обработку, ибо для меня она удобнее.

    Reply
  36. VVi3ard

    Спасибо, посмотрю.

    Reply
  37. AlexO

    (37)

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

    ну все, народ объяснил — ваша для управляемых недоформ 🙂

    Я-то с позиции обычного приложения писал.

    Reply
  38. YPermitin

    (39) AlexO, да для «неуправляемых» тоже, и для обычных =)

    Reply
  39. AlexO

    (40)

    Ну с УФ вообще, похоже, полная ж, если там даже программно сформировать — все перелопачивать да и не всегда удается, а если напишите, чем отличается от аналогов в обычном режиме — то будет только плюс 🙂

    Reply
  40. fr.myha

    Знаете, а мне нравиться стандартная реализация редактирования форм.

    Reply
  41. aet

    (23) можно множество изменений форм сделать в одном месте Псевдо подписка ПриОткрытии

    Reply
  42. YPermitin

    (43) aet, для управляемых форм лучше делать «ПриСозданииНаСервере», так оптимальней будет, никаких лишних вызовов сервера.

    Для обычных форм в большинстве случаев не важно «ПередОткрытием» или «ПриОткрытии».

    Reply
  43. aet

    (44) в (43) ключевое «в одном месте»

    Reply
  44. 26178_mail.ru

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

    Reply
  45. margo_m09

    хорошая обработка!!!!!!

    Reply
  46. ivanov660

    Посмотрел обработку «недопилина» она для управляемых форм (версия 3). Пришлось много чего руками править (может я не понял как):

    — Не весь функционал перетаскивается — не перенося атрибуты групп (к примеру, нет типа группировки подчиненных элементов; путь к данным, имена команд);

    — Не выделяются (пометка) параметры которые отличаются от по-умолчанию.

    и др.

    Reply
  47. YPermitin

    (48) ivanov660, со всем согласен. В перспективе допилю.

    Reply
  48. mr.Kot

    Вот уже который раз на публикацию о прогорммном изменении форм обращаю внимание, думаю у себя внедрить, но задача постоянно оказывается не столь актуальна, сколь другие. В итоге смотрю, думаю попробовать и забываю. Потом снова смотрю, думаю попробовать и далее по кругу. 🙂

    Reply
  49. YPermitin

    (50) mr.Kot, сам такой же))

    Перевел у многих форм изменения в программное формирование, потом пришли другие важные задачи и все. Больше этим не занимался уже более месяца)

    Reply
  50. validat

    Опытные программисты, скажите, новичку поможет начать изучать или освоить программирование? Или хотя бы начать настраивать формы под определённые нужды?

    Иногда в формах нужно добавить одну колонку с нужными данными, может это облегчить работу?

    Заранее благодарю за советы.

    Reply
  51. AlexeyXL

    (53) validat, да, может.

    Reply
  52. master_yoda

    Нужная приколюха.. ))))

    Reply
  53. Andry.Boris

    Возьму на вооружение…

    Достаточно удобно и наглядно…

    Автор если бы при предварительном просмотре отображались изменения было бы здорово,

    а еще неплохо добавить создание программных элементов прям в обработку…

    +

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *