|
Использование расширений в бою на крупных внедрениях / поделитесь опытом | ☑ | ||
---|---|---|---|---|
0
Бовка
17.02.21
✎
14:50
|
Всем привет,
Год назад интересовался практикой использования расширений на крупных проектах. Использование расширений в бою на крупных внедрениях / новые объекты МД в расширении. Для себя на тот момент понял, что рано идти в историю изоляции отраслевой специфики в отдельном расширении. ОК, от расширения метаданных за счет расширения мы отказались на тот момент и "убедили" в этом интегратора. Сейчас пытаюсь решить вопрос с выносом объектов поставщика для переопределения/дополнения за счет директив Перед, После, Вместо и пр 1С здесь предлагает использовать исключительно расширение с соответствующей директивой компиляции и даже уже не смотреть в переопределяемые общие модули, где они еще остались. Появился вопрос, а как потом все это дело сравнивать, когда появится новый релиз поставщика? Я вижу здесь два решения: 1. Требуется 4х стороннее сравнение (новая конфа поставщика - старая конфа поставщика - расширяемая конфа - конфа расширения) 2. Отдельное сравнение расширяемой конфы и расширения с учетом структуры модулей. Насколько мне известно, сейчас нет ни того, ни того на рынке. Есть только 3хстороннее сравнение, а сравнить cf и cfe нельзя штатно. Могу ошибаться здесь! Консультировался когда-то по данному вопросу в 1С, получил ответ: пожелание записано для EDT. Подскажите, кто пользуется подобным подходом с директивами, как вы потом поддерживаете данный ф-л? Удобно/неудобно на большом объеме изменений? |
|||
1
H A D G E H O G s
17.02.21
✎
15:14
|
&ИзменениеИКонтроль - неудобно, по каждому чиху собирать развалившееся.
Я, в целом, все больше прихожу к выводу, что нужно выносить части конфы в расширения, инкапсулируя их в стазисе. |
|||
2
H A D G E H O G s
17.02.21
✎
15:16
|
Заимствованные объекты - та же херь.
Особенно весело, если вы загоните в расширение основной объект формы - через пару минут в расширении у вас будет волшебный зоопарк объектов, который нужно будет дрожащще обнровлять с каждым выходом релиза. Поэтому - только динамическое создание реквизитов на форме кодом. Ну и, если не сертифицируетесь на Совместимо - весь корректный зоопарк заимствованных объектов вам и нафиг не нужон. |
|||
3
H A D G E H O G s
17.02.21
✎
15:17
|
Со страшилками "А, пропали реквизиты" ни разу не сталкивался.
|
|||
4
fisher
17.02.21
✎
15:21
|
(3) А у вас есть какая-то сложившаяся практика использования расширений в разработке внутренних продуктов? Если да, то какая?
|
|||
5
Бовка
17.02.21
✎
15:26
|
(2)
на Совместимо не претендуем, Концепцию модульного подхода в архитектуре решений 1С не соблюдаем, продукт исключительно внутренний. про "динамическое создание реквизитов на форме кодом" - полностью согласен, только так и делаем. |
|||
6
fisher
17.02.21
✎
15:29
|
(5) О! Какие проблемы на внутреннем продукте вы решаете с помощью расширений?
|
|||
7
H A D G E H O G s
17.02.21
✎
15:32
|
(6) Легкое обновление типовой части и отказ от динамического обновления в рабочей базе.
|
|||
8
Бовка
17.02.21
✎
15:33
|
(6) Это было навязанное решение интегратором, отраслевое решение для ERP. Сейчас, избавившись от интегратора, решаю либо в принципе отказаться от использования расширений, либо сохранить что-то в нем для УПРОЩЕНИЯ дальнейшего сопровождения.
|
|||
9
Вафель
17.02.21
✎
15:33
|
разве под капотом обновления расширения не тоже динамическое?
|
|||
10
H A D G E H O G s
17.02.21
✎
15:35
|
(9) ну при обновлении 1С ничего не предупреждает :-) С проблемами, как при динамическом, не сталкивались.
Ну и скорость отладки сравнима с внешними обработками, особенно если держать старый сеанс в фоне (для клиент сервера) |
|||
11
fisher
17.02.21
✎
15:37
|
(7) То есть все нетиповое в отдельном расширении? Или как?
|
|||
12
VladZ
17.02.21
✎
15:37
|
(0) Моё мнение: на крупных проектах не стал бы использовать механизм расширений.
Причины: 1. Не все объекты поддерживаются в расширении. 2. Бывают ситуации, когда добавленные в расширении реквизиты существующих объектов отваливаются. По п.2 критичных проблем не было. Решали так: удалили текущий реквизит, добавили новый, значения перетащили. Итог: - механизм расширений идеален в качестве "патча" (временное решение для исправления ошибок). - можно использовать для небольших проектов - для крупных проектов не рекомендую. |
|||
13
2S
17.02.21
✎
15:37
|
со временем понимаешь, что доработки лучше оставлять в составе конфиги. Расширения и обновления - боль
|
|||
14
Новый1сник2
17.02.21
✎
15:38
|
(0) новые объекты добавляю в основную конфу. программное добавление на форму через расширение. сталкивался с тем что терялась часть информации, когда только начинал юзать обновления.
|
|||
15
Новый1сник2
17.02.21
✎
15:38
|
(12) + 1
|
|||
16
fisher
17.02.21
✎
15:39
|
(8) Помню, была ветка про отказ от расширения. Когда как раз вся доработка велась в бухнущем расширении, возникали какие-то проблемы и товарищ хотел отказаться от расширения. И простых вариантов там вроде не отсвечивало.
|
|||
17
Новый1сник2
17.02.21
✎
15:40
|
(14) *обновления читать как расширения
|
|||
18
Новый1сник2
17.02.21
✎
15:41
|
еще у расширений есть минусы, нету общих модулей, подписок на события. нельзя использовать в базовых версиях
|
|||
19
fisher
17.02.21
✎
15:43
|
Я просто все пытаюсь для себя сформулировать, когда имеет смысл использовать расширения, и кроме как на костыли к типовым в качестве меньшего зла все никак не придумывается. Но тема очень любопытная поэтому хочется держать руку на пульсе :)
|
|||
20
Бовка
17.02.21
✎
15:47
|
(11) это в 1С и называется Концепция модульного подхода в архитектуре решений, когда есть много отраслевых расширений и каждое пилится отдельным партнером под шилдиком 1С-Совместно
|
|||
21
Новый1сник2
17.02.21
✎
15:47
|
новые объекты лучше добавлять в основную конфу, все таки обновлять проще сравнивая две конфигурации
|
|||
22
Garykom
гуру
17.02.21
✎
15:51
|
Все кто не используют расширения - просто еще не умеют их правильно готовить.
И да https://ru.wikipedia.org/wiki/Серебряной_пули_нет и расширения не серебряная пуля, с ними тоже можно накосячить. С ними просто удобней чем без них и все. |
|||
23
Бовка
17.02.21
✎
15:56
|
(12) спасибо за мнение. Согласен про хотфиксы.
(22) Ок, сказал А, говори Б) Вот конкретный пример: 1С декларирует смело свои директивы компиляции, вроде звучит круто. Бери &Вместо, пиши свой код в расширении и все. В расширяемой конфе объект на замке, это хорошо. Как обновлять потом? |
|||
24
Новый1сник2
17.02.21
✎
15:59
|
(23) такой же вопрос, как обновлять "&Вместо"
|
|||
25
fisher
17.02.21
✎
15:59
|
(20) Фига себе, а я проспал всю движуху! Наоборот, помнил еще как 1С в начале открещивались что мол "не-не-не, расширения - это не про модульность, окститесь, не надо их в ту сторону форсить".
|
|||
26
Garykom
гуру
17.02.21
✎
16:03
|
(23) &Вместо надо писать в последнюю очередь, сначала попытаться &Перед или &После решить проблему/задачу
И вы снова пытаетесь найти серебряную пулю, решить совершенно иную проблему, которую расширения не решают. Они не скажут как писать код ля и не напишут за вас код. Они просто помогут уже написанный код отделить и легко перенести в другой код(конфу) |
|||
27
Новый1сник2
17.02.21
✎
16:05
|
еще интереснее обновлять, когда несколько расширений в конфу сделано разными программистами.
|
|||
28
Garykom
гуру
17.02.21
✎
16:06
|
И да на "крупных внедрениях" пора переходить на EDT с Git, ибо там трёхстороннее сравнение и объединение и выделение фич по веткам и единственный вариант совместной разработки большой команды почти не мешая друг другу что часто с Хранилищем
|
|||
29
fisher
17.02.21
✎
16:15
|
Короче, я для себя понял так.
Расширения - удобная альтернатива нескольким конфигурациям поставщика. |
|||
30
AlvlSpb
17.02.21
✎
16:18
|
(23) 1С как раз - таки декларирует использовать Вместо крайне осторожно и в исключительных случаях. После полноценного внедрения Изменение и контроль( ждем совместимости типовых с 8.3.15), про Вместо вообще лучше забыть. А пока искать способы модернизировать код с Перед и После
|
|||
31
VladZ
17.02.21
✎
16:22
|
&Вместо вообще лучше не использовать. Это как мина замедленного действия - никогда не знаешь, когда рванет.
|
|||
32
VladZ
17.02.21
✎
16:24
|
+31. Как вариант &ИзменениеИКонтроль. Но на больших проектах это скорее проблема, чем решение.
|
|||
33
H A D G E H O G s
17.02.21
✎
16:38
|
(18) Вы к нам прямо из 2015 ого?
|
|||
34
Dmitrii
гуру
17.02.21
✎
16:46
|
(12) +100500
Золотые слова! Подписываюсь почти под каждым. Расширения прекрасны в качестве временных патчей и для подключаемых обработок и отчетов (то для чего раньше использовались внешние отчеты и обработки). Иногда расширения можно использовать для небольших проектов, где дорабатываемый функционал не сильно корёжит типовую конфигурацию поставщика, её логику и архитектуру. Но с целым рядом оговорок. В остальном, если предполагается конфигурацию обновлять, то доработки лучше делать в самой конфигурации, а не в расширении. Тогда при любом обновлении вы всегда будете видеть все сделанные изменения и можете хоть как-то оценить их совместимость с изменениями поставщика. Степень энтропии в процессе разработки прямо пропорциональная количеству расширений. При количестве расширений больше трёх оценить совместимость расширений между собой, основной конфигурацией и новой конфигурацией поставщика на логическом уровне уже не представляется возможным. Или трудозатраты на такую оценку будут превышать все разумные возможные выгоды, полученные от экономии ресурсов при обновлении. |
|||
35
FormatC
17.02.21
✎
16:53
|
мы используем расширения только для устранения косяков
|
|||
36
vde69
17.02.21
✎
16:55
|
На крупных проектах всегда делается отдельная сбоку лежащая подсистема, все модули исключительно отдельные.
Правки в типовом функционале сводятся в основном к модулям "расширяемый" ну и добавления своих типов в общие типы и подписки. А вот права рекомендую переписывать на 100% и сразу, практически во всех проектах где я участвовал наступал момент когда типовая схема прав не устраивала и приходилось все перелолопачивать, теперь сразу в проекте делаю 100% своих ролей и из них собираю профили и все остальное. |
|||
37
Dmitrii
гуру
17.02.21
✎
16:57
|
(23) >> Бери &Вместо, пиши свой код в расширении и все. В расширяемой конфе объект на замке, это хорошо. Как обновлять потом?
Да какая разница - &Вместо, &Перед или &После? Предположим вы дописали (расширили) какую-то процедуру с компилятором &После. В очередном обновлении 1С-ники решили вообще отказаться от данной процедуры и перенесли её саму либо в другую процедуру либо вообще в другой модуль (любимое дело писателей типовых). Но оставили исходную (дописанную нами в расширении) процедуру для совместимости. И больше ниоткуда её не вызывают. Ваш код после обновления остался, но фактически больше не работает. Хорошо, если последствием будет сообщение об ошибке от пользователя. А то ведь может такое быть, что код просто перестал молча работать, а заметят это спустя пару месяцев при закрытии периода, например. Оценить подобный логический конфликт просто никак невозможно. Аналогичная ситуация при доработке внутри самой конфы конечно же тоже возможна, но там есть хоть какая-то вероятность увидеть потенциальную проблему при трехстороннем сравнении. В случае с расширением - единственный шанс - чисто случайно "вспомнить". |
|||
38
pavig
17.02.21
✎
16:59
|
(35)
Хорошая практика. Тоже используем по данному назначению. |
|||
39
CepeLLlka
17.02.21
✎
17:02
|
Согласен с (12)
Расширения только так.. подлатать быстренько что-нибудь.. Если более-менее большая доработка, удобнее "вскрыть" конфу и работать по старинке.. Может быть, когда механизм расширений будет полностью готов, моё мнение изменится.. Но пока что больше проблем, чем плюшек.. |
|||
40
Новый1сник2
17.02.21
✎
17:15
|
(33) что то изменилось с тех пор ?
|
|||
41
Новый1сник2
17.02.21
✎
17:23
|
(37) разница есть, если использовать например "&После" можно добавить свои реквизиты на форму, после процедуры "при создании на сервере", вряд ли ее переименуют, даже если перепишут, расширение должно будет работать.
|
|||
42
Новый1сник2
17.02.21
✎
17:25
|
(33) да и причем тут 2015г ?
|
|||
43
Dmitrii
гуру
17.02.21
✎
19:35
|
(41) >> вряд ли ее переименуют.
С каких пор "вряд ли" стало мерилом гарантии? Даже смешно обсуждать. >> если перепишут, расширение должно будет работать. Никто не спорит, что расширение будет работать. Вопрос в том - как? Если расширение не отвалилось с синтаксической ошибкой - значит ли это, что оно работает? А то, что код, ради которого было написано расширение перестал вызываться и работать - это нормально? Или смысл работы этого кода потерялся т.к. поставщик полностью переработал форму и логику её работы? |
|||
44
Eeeehhhh
17.02.21
✎
19:42
|
(3) я сталкивался. Зашло обновление на ЗУП с волшебным переименованием измерения в "СотрудникУдалить" расширение отвалилось после апдейта студентом из франча и похерились все данные объектов расширения.
|
|||
45
Dmitry1c
17.02.21
✎
19:51
|
(44) до слез
|
|||
46
fisher
18.02.21
✎
13:30
|
Ээээ... А может кто-то на пальцах объяснить мне, который с расширениями не работал, какие нужно приложить усилия, чтобы похерились данные объектов расширения как в (44)?
Или такое невозможно и после восстановления работоспособности расширения всегда будут на месте? Или можно ли так "отвалить" расширение, чтобы не было возможности его подключить обратно (что примерно то же самое по эффекту)? |
|||
47
Aleksey
18.02.21
✎
13:32
|
(46) удалить физически расширение из базы, вместо отключения
|
|||
48
fisher
18.02.21
✎
13:39
|
(47) А сбоев такого рода, что невозможно подключить отключившееся расширение не бывает?
|
|||
49
Фрэнки
18.02.21
✎
13:49
|
(46) дай дуракам хрустальный хер...
На том уровне, как подана инфа там гадать нужно. Если мозгов нет, то и без расширения можно данные угрохать и с расширением точно так же. Сама 1С поступила весьма легкомысленно. Например, когда при поиске технического решения разрешила расширением добавлять новые реквизиты в заимствованный объект. Если объекты просто новые, а не реквизиты, то до момента физического удаления расширения из базы не происходит изменения состава таблиц. Если в заимствованные объекты насувать новых полей, то работа с таблицей с включенным и выключенным расширением может тупо проигнорить добавленные поля, даже если они остаются в базе. И соотв. при перезаписи таких "испорченных" объектов будут "испорченные" записи. |
|||
50
fisher
18.02.21
✎
13:51
|
(49) Что такое "испорченные" записи/объекты? И как можно добиться того, что при включенном расширении добавленные поля будут проигнорированы?
|
|||
51
Фрэнки
18.02.21
✎
13:53
|
(50) при выключенном, но до его удаления
|
|||
52
Фрэнки
18.02.21
✎
13:53
|
(51) т.е. по идее, поля остаются. Но доступа на запись в эти поля нет. Их никто "не видит". Перезапись этого объекта и данных ёк
|
|||
53
Фрэнки
18.02.21
✎
13:56
|
А в примере из (44) по причине радикального обновления, скорей всего, что происходила физическая перезапись всех найденных объектов, которые нашлись в этом справочнике.
|
|||
54
Ботаник Гарден Меран
18.02.21
✎
15:02
|
Похоже, отчет на 4-х стороннее сравнение стоит дописать.
Думал, 1С эту область закрыла каким-то своим решением. |
|||
55
fisher
18.02.21
✎
16:25
|
(52) Погоди-погоди. То есть, если перезаписать объект с добавленными реквизитами при отключенном расширении, то данные в добавленных реквизитах очищаются? Японский городовой! Чуял я, что есть где-то засада :)
|
|||
56
Фрэнки
18.02.21
✎
16:46
|
(55) Не, я все понимаю, если мы по взрослому платформу ваяем, то
Такие технические возможности с подстановкой новых полей в таблицы для наследуемых в расширение объектов - это обязательная возможность для разработки. Рано или поздно, но это будет необходимо. Но доступ к этому функционалу всем любым подряд давать было нельзя. Но его дали, вероятно, что вместе с доступом к другими свойствами объектов, большинство их которых не имеют отношения именно к данным экземпляров, а не всяким там разным свойствам форм... Т.е. интуитивно о потенциальном наличии такой траблы можно было догадываться. Ну и я не знаю, на самом деле, как физически размещены добавленные поля. Может они в новых таблицах и там ссылка на владельца, похоже на то, как регистры сведений могут быть с подчинением регистратору. |
|||
57
hhhh
18.02.21
✎
17:14
|
не особо можно общие модули расширять. В регзаданиях пишет
Ошибка расширения модуля 'ОбщийМодуль.ПродажиСервер.Модуль': расширение модуля запрещено из-за того, что расширение 'Расш' подключено в безопасном режиме |
|||
58
fisher
18.02.21
✎
17:38
|
(56) Нифига не интуитивно. Интуитивно - не трогать значения добавленных реквизитов при перезаписи объекта и отключенном расширении.
|
|||
59
fisher
18.02.21
✎
17:41
|
И само собой - добавленные реквизиты находятся в отдельных таблицах. И тем более непонятно, нафига платформе туда лезть при отключенном расширении. Если ты прав, конечно. Обязательно протестирую этот момент при случае.
|
|||
60
Ненавижу 1С
гуру
18.02.21
✎
17:43
|
УТ 11.4. Вся логика на расширениях. Интерфейсы существующих форм меняем программно. Реквизиты, таблицы и новые права создаем в основной конфигурации.
Полгода полет нормальный. На каникулах пережили обновление до последнего релиза. |
|||
61
fisher
18.02.21
✎
17:50
|
(60) Хороший компромисс. Чувствуется рука бывалого параноика :)
Единственное, не понял как с правами. Можно давать права в основной на объекты расширения? |
|||
62
Ненавижу 1С
гуру
18.02.21
✎
17:55
|
(61) так я же написал. Все таблицы и права в основной
|
|||
63
fisher
18.02.21
✎
17:56
|
(62) Туплю
|
|||
64
Eeeehhhh
18.02.21
✎
18:05
|
(52) именно, объект заимствован - были добавлены нужные клиенту реквизиты. А потом зашел этот объект и один из заимствованых реквизитов стал СотрудникУдалить плюс зашли новые и алгоритм обновления перезаписал все элементы справочника при обновлении. Пришлось восстанавливать данные из копии.
|
|||
65
Фрэнки
18.02.21
✎
18:29
|
(64) за одного битого двух небитых дают
|
|||
66
Eeeehhhh
18.02.21
✎
18:42
|
(65) сисадмин клиента начитался и потребовал в ТЗ сделать именно так. Обновлять типо проще потом ))) По факту юзаю расширения, только если костыль какой вставить. Новые объекты\реквизиты только в основную конфигурацию во избежание так сказать.
|
|||
67
Timon1405
18.02.21
✎
22:32
|
(60) на расширенияХ или основном расширении+заплатки/патчи. если их много, то как следите кто что кодит и кто кого расширяет?
|
|||
68
timurhv
18.02.21
✎
23:03
|
(0) При выходе расширений обещали механизм сравнения с основной конфигурацией, так и не добавили.
В работе столкнулся что некоторые формы перестали открываться в конфигураторе при обновлении платформы (в пользовательском все хорошо). Больше в продуктиве на новых проектах не использую. |
|||
69
Ненавижу 1С
гуру
19.02.21
✎
00:09
|
(67) разбиты по разделам учета
все неоднозначно, как с выбором нарезанных наделов, так и соблюдением границ в общем набираемся опыта |
|||
70
mszsuz
19.02.21
✎
00:26
|
Мой опыт: 5 лет все доработки только через расширения. У клиентов всегда актуальные типовые, что немаловажно в эпоху цифровизации и тотальной маркировки.
Ищите "фреймворк для расширений") |
|||
71
2mugik
19.02.21
✎
05:43
|
Тоже только в конфе данные добавляем(реквизиты, новые объекты).
Вначале было несколько расширений, в итоге отказались в пользу одного. УТ 11.4 не то чтобы сильно перепахана, но к примеру в систему взаиморасчетов пара своих измерений добавлена. |
|||
72
Провинциальный 1сник
19.02.21
✎
06:20
|
(23) "В расширяемой конфе объект на замке, это хорошо. Как обновлять потом?"
Какие проблемы? Обновил штатно и гори там всё синим пламенем. Ведь 99% хотелок, реализуемых расширениями - это хотелки менеджеров, которые меняются чаще, чем обновляется 1с)) |
|||
73
Itmaint
19.02.21
✎
06:25
|
Я в расширениях использую только хотфиксы или законченные автономные подсистемы.
Не вижу ни малейшерго смысла применять их для доработки конфигурации. |
|||
74
2mugik
19.02.21
✎
10:28
|
(73)например можно обновлять по принципу(72).
|
|||
75
maximkasuper
19.02.21
✎
10:57
|
(0) В расширениях используем только директивы &Перед и &После. Если нужны изменения внутри метода, то меняем в основной конфигурации. Новые объекты добавляем только в основную конфигурацию. Интерфейс изменяем в расширении декларативно. Расширения начали использовать еще начиная с версии ERP 2.2, сейчас ERP 2.4. ,т.е. уже более двух лет. За все время проблем с обновлениями особых не было. С новыми версиями платформы, время от времени, добавляется новые самопроверки платформы на применимость расширения.
|
|||
76
ildary
19.02.21
✎
10:58
|
(75) скажите пожалуйста, как Вы проверяете расширения на работоспособность при обновлениях на мажорный релиз (аля 2.2-> 2.4 или 2.4 -> 2.5)?
|
|||
77
maximkasuper
19.02.21
✎
11:01
|
(76) Сначала прогоняем дымовыми тестами, потом вручную сценарным тестированием. Автоматическое сценарное тестирование не используем.
|
|||
78
ildary
19.02.21
✎
11:09
|
(77) спасибо за информацию!
|
|||
79
bolder
19.02.21
✎
11:11
|
(0) В крупных внедрениях не используем.Для доработок всевозможных хотелок и багфиксов расширения оказались очень удобны-> в багаже более полусотни.
|
|||
80
Гений 1С
гуру
19.02.21
✎
11:24
|
Я вот сделал доп.реквизит объекта по ГТД в расширении у клиента. так меня потом месяц совесть мучала, что не в конфу добавил, а в расширение. Ведь конфа была модифицированная.
Не делайте так. Расширения для кода, а не для доп.полей, ну разве что если в конфу на поддержке. |
|||
81
GANR
19.02.21
✎
11:27
|
Рекомендую плодить не зоопарк из 40 мелких расширений, а 2-3 и поддерживать их через хранилища. Иначе не проконтролируете. Всё.
|
|||
82
fisher
19.02.21
✎
12:18
|
(77) Грамотное название отсутствия тестирования :) Возьму на вооружение :)
|
|||
83
Бовка
19.02.21
✎
16:47
|
Ответов уже больше, чем в прошлом году)) Т.е. механизм развивается, хоть и очень "осторожно"
Для себя понял три основных тренда/ этапа принятия расширений. 1. Не использовать расширения в принципе, кроме хотфиксов 2 Использовать по принципу, как и описал в (0), только для программного расширения модулей поставщика с директивами После, Перед. 3. Использовать для полноценной изоляции определенного ф-ла (расширение данных, программное расширение модулей) Тот самый модульный подход 1С. На текущий момент к нему готовы только в 1С :) Пока остановлюсь на этапе 1. Подожду полноценного развития механизма. Спасибо большое за ответы! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |