Имя: Пароль:
1C
 
Как залезть внутрь процедуры - обновление типовых расширениями
0 Гений 1С
 
гуру
07.12.20
13:32
Вот решил переписать клиенту все его доработки в УТ через расширение. Чтобы ему проще было обновляться.
Столкнулся с тем, что если при обновлениях я переносил изменения в коде в середине процедуры, то расширениями так не сделаешь.
Нужно или целиком код процедуры перетаскивать и уже там менять, или же отказываться от этой идеи.
Может я чего-то не знаю и можно в отдельных участках процедуры вмешиваться с помощью расширения?
хочется Аспектно-Ориентированного программирования, знаете ли.
1 Галахад
 
гуру
07.12.20
13:37
(0) Хм. Похоже на ИзменениеИКонтроль, но там "перетаскивать" все же придется.
2 Timon1405
 
07.12.20
13:54
(1) УТ 11.4 не догоняет ИзменениеИКонтроль по совместимости. улыбаемся и машем.
3 Ненавижу 1С
 
гуру
07.12.20
14:03
(2) неправда, у нас все отлично работает
Платформа 8.3.16
УТ в режиме совместимости 8.3.14
4 PuhUfa
 
07.12.20
14:22
8.3.15.1869 + УТ11 в режиме совместимости 8.3.12 - &ИзменениеИКонтроль тоже работает, но что бы его заюзать надо еще постараться. Проблема пробелов и пустых строк это прям бич
5 Timon1405
 
07.12.20
14:22
(3) похоже, мы когда тестили, поймали грабли с пробелами наподобие https://forum.infostart.ru/forum9/topic227698/ и подумали на совместимость. а у вас отлично работает - прямо отлично(видно при обновлении основной конфы, нет проблем при вставке итд) или с оговорками?
6 DTX 4th
 
07.12.20
14:24
Да, лишние пробелы это просто ад
Правится платформой или режимом совместимости?
7 Ненавижу 1С
 
гуру
07.12.20
14:24
(5) ИзменениеИКонтроль это уже проблема, стараемся не делать лишний раз, но "километровые" методы 1С порой вынуждают
8 Гений 1С
 
гуру
08.12.20
20:42
(7) не знал про такую фичу.
1С опять изобрела велосипед с квадратными колесами. Вместо того, чтобы ориентироваться на уникальные строчки, она тащит всю процедуру в ИзменениеИКонтроль. Гм, кто же им ТЗ пишет?
9 Провинциальный 1сник
 
08.12.20
20:48
(8) Да лучше бы они делали декомпозицию на процедуры таким образом, чтобы не возникало задачи влезать в середину.. а такое ощущение, что они специально делают так, чтобы по максимуму затруднить доработку через расширения.
10 Гений 1С
 
гуру
08.12.20
21:01
(9) на это мы не можем рассчитывать. Вот я когда-то (когда еще не было расширений) писал парсер, который обрабатывал модули, искал в них уникальные куски и вставлял после них. Неужели реанимировать это все добро? ;-)
11 bolder
 
09.12.20
00:21
(4) Мы до сих пор на 8.3.15.1830 - самый стабильный из рекомендуемых.Заюзать ИзменениеИКонтроль пока не получается.
12 vis_tmp
 
09.12.20
06:35
(11) Последняя БП уже требует выше
13 Dmitrii
 
гуру
09.12.20
07:00
(0) Вот именно об этом я говорю, когда речь заходит о недостатках и ограничениях применения расширений для доработок.

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

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

PS Расширения хороши для небольших доработок, которые не вмешиваются сильно в методику, логику и алгоритмы основной конфигурации. Для доработок "сбоку". Если надо что-то переписать внутри (алгоритмы расчета себестоимости, учета НДС, расчета прибыли и т.п.) лучше делать это в основной конфигурации.
14 Гений 1С
 
гуру
09.12.20
09:06
(13) ну если все же есть некий бюджет, лучше запилить изменения через парсер (обработку модулей). Тогда парсер сам подскажет, какие блоки не нашел и будет вставлять нужные куски в код. И тогда сбудется мечта - обновлять типовые без ручного сравнения-объединения.
15 Гений 1С
 
гуру
09.12.20
09:07
Причем можно сперва выгружать изменения из модулей из старой конфы.
Потом в новую их вставлять.
т.е. не хранить в отдельном месте изменения конфы.
16 Фрэнки
 
09.12.20
10:38
это все звучит даже пафосно "оставляем вы основной конфигурации"

Надо просто взять достаточно тяжелую конфигурацию и наступить на грабли с обновлением ее через получение измененной конфы из файла cfu
Часто даже с обновлением из файла cf тоже возникают сложности...

Именно практика внедрений с граблями при обновлениям сильно нагруженных конфигураций послужила поводом к разработке механизма Расширений. Это в общем... А если еще более общим образом, то механизм этот похож и другие платформы разработок. Но мне сейчас лень слишком подробно фантазировать в этом направлении.
17 Гений 1С
 
гуру
09.12.20
11:05
(16) напишу как-нибудь пост на тему легкого обновления модифицированных конфигураций без расширений, ок.
18 Фрэнки
 
09.12.20
11:08
(17) только конфигурации выбирай не такие уж легкие. УНФ, в этом смысле, будет нижней градации тяжести обновления.
19 Гений 1С
 
гуру
09.12.20
12:28
(18) методика не зависит от сложности конфигурации. Ты суть метода понял?
20 Dmitrii
 
гуру
09.12.20
14:54
(14) >> запилить изменения через парсер (обработку модулей).

Никакой парсер не автоматизирует тебе анализ сделанных изменений.
Парсер лишь покажет - где эти изменения есть и (возможно) куда-то их воткнёт.
Но если поставщик переписал всю логику работы измененной тобою процедуры, то никакой парсер тебе не поможет. Либо ты в процессе обновления сам откроешь модули и сделаешь сравнение ДО и ПОСЛЕ изменения и оценишь совместимость изменений с твоей доработкой. Либо после обновления получишь уведомление от пользователя об ошибке, что что-то не работает или работает некорректно.
И это ещё неплохо (получить сообщение об ошибке). Потому что некоторые доработки могут отвалиться молча, когда поставщик оставил измененный тобою модуль только для совместимости, а всю работу перенёс в новый модуль. И твой код просто тупо больше не вызывается ниоткуда.
Примеров можно массу подобных привести. И доработки в расширении сильно мешают подобные проблемы вылавливать. Т.к. нет никакого инструмента для автоматического сравнения расширения с основной конфигурацией и конфигурацией поставщика, чтобы увидеть двойные изменения (объект, доработан в расширении и объект доработан в обновлении).
21 Ненавижу 1С
 
гуру
09.12.20
15:04
(20) может он изменения вносит только в события форм типа "ВалютаПриИзменении" и предопределенные методы объектов "ОбработкаПроведения"

ОбработкаПроведения никуда не денется
и
ВалютаПриИзменении -мало шансов, что переименуется

а вот эти ваши общие модули, это не для Гения, он стратегически мыслит

кстати если все срастется и будет куда вставлять свою локализацию надо все равно думать, а стоит ли ее теперь туда вставлять в таком виде? может логика стала другой при внешнем совпадении
22 Гений 1С
 
гуру
09.12.20
15:24
(20) ДА, КЭП, совершенно верно. Но ты говоришь о 5% проблем, с которыми сталкивается обновляльщик. А 95% он автоматизирует. йо?
23 Гений 1С
 
гуру
09.12.20
15:25
(21) Обновляльщики не думаю, они просто сравнивают и обновляют. Почему ИИ должен быть умнее их?
24 Гений 1С
 
гуру
09.12.20
15:55
Короче, написал статью, наслаждайтесь: https://geniy1s.ru/vedenie-dorabotannyh-tipovyh-konfiguraczij-bez-rasshirenij/
25 Ненавижу 1С
 
гуру
09.12.20
16:15
(24) маркеры... В пробелы не умеет...

Где-то такое уже было?
Ах, да... Это же ИзменениеИКонтроль в расширении
26 Гений 1С
 
гуру
09.12.20
17:33
(25) нет, подходы разные. У меня маркеры и не нужно тянуть весь текст процедуры, пусть он на здоровье себе меняется. Ты что, не отдупляешь разницы?
27 Сергиус
 
09.12.20
19:06
(26)Костыли еще те.
28 Гений 1С
 
гуру
09.12.20
20:11
(27) продолжайте кипятить. То бишь расширять.
29 ДедМорроз
 
10.12.20
22:05
У расширения только один плюс - это то,что все доработки отдельно и их легко отключить и удалить.
В случае изменения методики учёта или способа хранения данных в конфигурации,как бы доработка не делалась,она не будет работать,а заставить ее работать можно будет только переписав места взаимодействия с кодом конфигурации.
Другое дело,что в расширении больше способов отслеживания изменений в коде в отличие от прямой доработки.
30 Dmitrii
 
гуру
10.12.20
23:27
(22) >> ты говоришь о 5% проблем, с которыми сталкивается обновляльщик.

Правило Парето говорит, что 80% проблем на выходе возникает как раз из-за 20% таких вот несостыковок.

Чем больше доработок ты перенёс в расширение тем выше процент будет таких неоднозначных ситуаций, не поддающихся никакому автоматизированному анализу - только глазами, руками и головой - проверять каждый доработанный объект - как он был изменён поставщиком и совместимы ли изменения со всеми расширениями. И хорошо, если расширение одно единственное. Если расширений больше двух и есть объекты, которые доработаны одновременно в нескольких из них, каждое обновление превращается в бесконечный ад, по сравнению с которым обновление по старинки (без всяких расширений) покажется манной небесной.
31 Гений 1С
 
гуру
11.12.20
10:03
(30) ты забыл, о чем спич.
А спич о том, как делать доработки если они нужны.
Хочешь ручками сравнивать объединять без автоматизации - на здоровье, только оцени трудозатраты.
Хочешь расширениями с КонтрольИзменений - да не вопрос, только опять же сравни с моей методикой трудозатраты.
Вот когда ты слегка офигеешь от трудозатрат, тогда придешь к методике гуру.
32 Ненавижу 1С
 
гуру
11.12.20
10:19
(31) объясни внятно, чем твое отличается от ИзменениеИКонтроль?
34 Фрэнки
 
11.12.20
10:43
а я вот взял и удалил пост 33 за неуважительное отношение к программистам 1С и все. Причем, не только к ТС и совсем не к ТС, а к широкому кругу лиц, которых обозвали с какого-то перепугу неофитами.

Придержи свои эпитеты при себе неофит обсценной лексики, выражаемой малоупотребительными словами
35 Vovan1975
 
11.12.20
11:26
(32) да походу только тем что текст процедуры или функции не контролируется. То есть Геша еще пока не нарывался на изменения типа "раньше была ссылка" а теперь "массив ссылок".
Он не понял что значит "Контроль"
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.