Быстрая кодогенерация программной доработки форм

0. huxuxuya 12.10.20 12:40 Сейчас в теме
Данная статья является описанием идеи по быстрому получению кода для программной доработки форм.
А также приглашением к участию в реализации данной идеи (даже звездочке на гите буду рад).

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. leosoft 149 12.10.20 12:55 Сейчас в теме
4. huxuxuya 12.10.20 13:11 Сейчас в теме
2. malikov_pro 557 12.10.20 12:56 Сейчас в теме
Как идея доработки основной конфигурации норм, но после нужно удалять доп. форму. Не понятно как объединить изменения если меняем повторно.
Сам пользуюсь по большей частью расширениями, в них программное добавление актуально, но как применить текущую наработку непонятно.
Возможно имеет смысл залезть чуть глубже и сравнивать выгрузки конфигураций, из этого формировать код.
3. huxuxuya 12.10.20 13:10 Сейчас в теме
(2) Я на питоне пытался идти по этому пути с выгрузкой в файлы и анализом XML - слишком дорого получается по трудозатратам и библиотеки по сравнению XML, плохо "жуют" хмл форм, плюс там идентификаторы внутри едут, через преобразование XML в JSON тоже делал, там похожая история.

Про удаление доп формы, на самом деле ты можешь взять, скопировать и вставить например в свою же внешнюю обработку и тогда удалять не надо из основной конфигурации...
5. K_A_O 529 12.10.20 14:23 Сейчас в теме
Для генерации кода есть отличная обработка.
https://infostart.ru/public/304736/
6. huxuxuya 12.10.20 14:38 Сейчас в теме
(5)Да, на нее опирался при начале разработки, добавил в описание ссылку на нее как на референсную.

Хорошая обработка, но есть несколько моментов которые не нравятся:
- нет сравнения с эталоном
- много кода получается на выходе
- интерфейс перегружен, хочется все сделать в один клик
- хочется что бы дальше развивалась обработка через групповую разработку(EDT, добро пожаловать в контрибьютеры)
- когда обработкой будут пользоваться, можно кидать ишьюсы и закрывать их, но это к предыдущему пункту

надо прочтиать там все комментарии под обработкой, что то там много написано интересного...
7. Steelvan 12.10.20 16:53 Сейчас в теме
На секунду задумался.

Если я приму в этом участие как соавтор, то мне придется общаться с автором.
С учетом того русско-английского суржика, который употребляет автор, что-то у меня нет желания в этом участвовать.
8. huxuxuya 12.10.20 18:08 Сейчас в теме
(7) На английском только названии репозиториев, конфигурации и обработки.
Подумаю что можно с этим сделать, что бы не пугать потенциальных соавторов.
9. muskul 13.10.20 04:45 Сейчас в теме
10. davdykin 25 13.10.20 16:07 Сейчас в теме
На самом деле идея с программной доработкой формы - на мой взгляд насущная, т.к. доработка формы в расширении, лично мне не нравиться:
- я так и не нашел как можно "Обновить из стандартной" все формы
- Зачастую после обновления стандартной - у меня частенько слетали реквизиты в элементах, т.е. сам элемент на форме есть, но не связан с реквизитом - соответственно ничего не работало
- в целом механизм мне не показался удобным.
У программной доработки, на мой взгляд есть один существенный недостаток (помимо бОльших затрат на перваначальную доработку) - это последующая модификация формы, ведь если у вас есть форма оригинал, вы в ней программно добавляете 2 реквизита - добавить следующий реквизит через обработки генерации формы - будет не реально, т.к. копия формы - будет стандартная, без программно сгенерированных реквизитов..
Ну и мне больше понравилась идея - макет, где прописываются все программно добавляемые элементы:
- удобней отлаживать (можно отключить какой-то реквизит)
- Практически нет необходимости кодить - надо только правильно добавить строчку в макет
13. huxuxuya 14.10.20 11:29 Сейчас в теме
(10)
С макетом видел, идея тоже прикольная, но обкатать эту идею не разу не получалось, интересно какие там подводные камни есть.

В расширении тоже не нравится программная доработка форм..

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

Программная же доработка формы выглядит так:

Процедура ПриСозданииНаСервере

//Где то тут добавляем элементы и реквизиты программно

КонецПроцедуры

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

т.е.

Процедура ПриСозданииНаСервере

//Где то тут добавляем элементы и реквизиты программно

//Грабим все реквизиты и элементы формы после программной доработки

Итого: Добавить следующий реквизит через обработки генерации формы - будет реально :)
т.к. эталоном может выступать форма уже после того как отработали обработчики программного добавления элементов

КонецПроцедуры
15. davdykin 25 14.10.20 16:01 Сейчас в теме
(13)
1. Не совсем понял, почему не нравиться доработка через расширение
2. По дальнейшей доработки, не совсем понял что с чем вы собираетесь сравнивать, ведь, у нас в режиме предприятия - нет эталона, а в режиме конфигуратор - нет дработанной.

В расширении, если конфигурация на БСП, в принципе можно не захватывать формы, во многих формах вызываются процедуры общих модулей, которые достаточно перехватить.
18. huxuxuya 14.10.20 17:13 Сейчас в теме
(15)
1. Поддерживать сложно расширения, если их много, лишние телодвижения, отвалиться могут, изменения сложно увидеть, трёхстороннего нет...
2. При дальнейшей доработке, если какие то независимые блоки логики добавлять на форму то доработанная форма не нужна, если вносить какие то правки в те места где уже элементы программно сформированы кодом, то да, вы правы только вручную кодом. Вы правы, колонку в программно доработанную таблицу придется вручную добавлять.

С расширением интересная идея, если эту обработку в расширение пихнуть, то может в этом расширении и можно будет хранить и эталонную(на случай если она в поставке изменится) и доработанную форму...
14. huxuxuya 14.10.20 11:35 Сейчас в теме
(10)
А как при макете будут выглядеть обработчики элементов форм, там ПриИзменении, а для команд, когда логика нужна с описанием оповещения это как реализуется?
16. davdykin 25 14.10.20 16:09 Сейчас в теме
(14)Оповещение, насколько помню - прописываешь имя процедуры которое есть в расширение формы и на его основе генеришь "Действие", которое устанавливаешь на определенные события..
17. huxuxuya 14.10.20 16:56 Сейчас в теме
(16) Значит и ПриИзменении так же в расширении формы должно быть...
Просто думал что макет будет без расширений жить, просто в доработанной конфигурации.
И главная идея, в одном месте одну строчку добавил и все.. больше нет изменений формы, а все остальное в макете жить будет.
19. Brawler 476 16.10.20 08:29 Сейчас в теме
(10) Мне тоже не нравится наследование форм в расширениях.
Я вообще даже за то чтобы ты типа отнаследовал в расширение некую форму, но не как форму, а только ее модуль и все!!!
ТОЛЬКО МОДУЛЬ! (с правом выбора типа наследования естественно, модуль или вся форма с модулем формы)
Чтобы не париться потом обновлением форм по всему расширению.
Все изменения естественно делать только программно.

Почему за такой вариант топлю?
Ну вот у меня ERP, на одном из релизов платформы отнаследовал форму "Заказа клиента".
Программно всякие изменения сделаны, а на самой форме ничего не делали.
Обновляем конфигурацию на след релиз.
Появилась потребность обновить форму.
Обновляю форму в расширении.
Запускаю базу.
Открываю заказ клиента.
Первое что кидается в глаза, пустое поле хозяйственной операции, а в списке выбора тоже пустота, вернее 4 пункта без названий. И это было не одно такое заглючившее поле.
Пришлось восстанавливать работоспособность.
Ну это я считаю косяк!
И я не хочу с ними сталкиваться!
Хочу просто модуль формы иметь в доступе и в него вносить изменения.
20. FatPanzer 7 16.10.20 09:16 Сейчас в теме
(19) Ну так не изменяйте захваченную форму, изменяйте только модуль.
Какие проблемы-то?
21. Brawler 476 16.10.20 09:46 Сейчас в теме
(20) Ну так только модуль и изменяли, ни одного "пикселя" не сдвинули на самой форме, а баги платформы или что это хрен его знает по итогу ломают форму при ее обновлении при переходе на новые релизы конфигурации.
24. davdykin 25 16.10.20 13:41 Сейчас в теме
(21)Вы попробуйте, не захватывать форму, захватите общий модуль, который вызывается при создании формы, и в нем уже меняйте форму. В БСП по-моему такой модуль есть, погуглите, я думаю найдете.

В принципе, я не против редактирования форм в расширении, но мне не нравиться как это сделано сейчас )) . При нынешнем раскладе - программное изменение - видится предпочтительным вариантом.
25. FatPanzer 7 16.10.20 13:42 Сейчас в теме
(24)
В БСП по-моему такой модуль есть, погуглите, я думаю найдете.
Нет, это частные решения в конфигурациях. Например, в УТ это модуль "СобытияФорм", где прописаны все серверные обработчики событий формы из модуля форм... Есть такой же и клиентский.
В БСП только свои переопределяемые модули - для своих же подсистем. Остальная общая логика реализуется разработчиками конкретного решения.
26. Brawler 476 16.10.20 14:27 Сейчас в теме
(24) Со временем при большом числе доработок эти модули превращаются в СУПЕР модули, а хотелось бы все же программный код хранить ближе к тем объектам для которых он предназначен, а уже что-то общее выносить в общие модули.
27. FatPanzer 7 16.10.20 14:33 Сейчас в теме
(26) Ну, надо предложить 1С реализовать в платформе дополнительные модули для форм, объектов и менеджеров, команд и прочих модулей приложений и сеансов. И будет счастье.
Отличная идея, кстати. Причем, уже реализованная. В виде расширений...
29. huxuxuya 83 21.10.20 10:53 Сейчас в теме
(27) На самом деле нет ничего плохого внутри модуля формы, например внизу хранить весь обслуживающий код, который не является типовым. При обновлении это проблем не вызывает и удобно что сразу видно что в форме доработано.

Для простых доработок удобно использовать "СобытияФорм", но к сожалению это да, превращается в огромные простыни, и не у всех конфигураций есть такие переопределяемые модули для форм.
23. davdykin 25 16.10.20 13:39 Сейчас в теме
Как только ты захватил форму в расширение - она скорее всего перестала "обновляться" из основной конфигурации, даже если на саму форму ничего не выносили
11. sytkosa 119 14.10.20 05:39 Сейчас в теме
(10) Если не сложно приведите ссылку на обработку где реализовано идея - макет , где прописываются все программно добавляемые элементы. Я думаю сообществу можно еще раз напомнить о ней. Сам найти быстро по поиску не смог.
12. davdykin 25 14.10.20 09:11 Сейчас в теме
(11)https://infostart.ru/1c/articles/560508/
Вот эта доработка, но здесь предлагается регистр сведений, мне эта идея не понравилась, я все хотел переделать на встроенный макет, чтобы вместе с обновлением конфигурации обновлялись и программные доработки, но руки не дошли пока
22. capitan 1746 16.10.20 12:56 Сейчас в теме
Мужик с женским фото на аватарке и ником хухухуйя на гитхабе...
За одно это только плюс поставил
JohnyDeath; FatPanzer; +2 Ответить
28. huxuxuya 21.10.20 10:28 Сейчас в теме
(22) Спасибо, хотя бы один позитивный комментарий во всем треде :))

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