Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Использование расширений в бою на крупных внедрениях / поделитесь опытом

Использование расширений в бою на крупных внедрениях / поделитесь опытом
Я
   Бовка
 
17.02.21 - 14:50
Всем привет,

Год назад интересовался практикой использования расширений на крупных проектах. Использование расширений в бою на крупных внедрениях / новые объекты МД в расширении.
Для себя на тот момент понял, что рано идти в историю изоляции отраслевой специфики в отдельном расширении. ОК, от расширения метаданных за счет расширения мы отказались на тот момент и "убедили" в этом интегратора.

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

Появился вопрос, а как потом все это дело сравнивать, когда появится новый релиз поставщика?
Я вижу здесь два решения:
1. Требуется 4х стороннее сравнение (новая конфа поставщика - старая конфа поставщика - расширяемая конфа - конфа расширения)
2. Отдельное сравнение расширяемой конфы и расширения с учетом структуры модулей.

Насколько мне известно, сейчас нет ни того, ни того на рынке. Есть только 3хстороннее сравнение, а сравнить cf и cfe нельзя штатно. Могу ошибаться здесь!

Консультировался когда-то по данному вопросу в 1С, получил ответ: пожелание записано для EDT.


Подскажите, кто пользуется подобным подходом с директивами, как вы потом поддерживаете данный ф-л? Удобно/неудобно на большом объеме изменений?
 
 Партнерская программа EFSOL Oblako
   H A D G E H O G s
 
1 - 17.02.21 - 15:14
&ИзменениеИКонтроль - неудобно, по каждому чиху собирать развалившееся.
Я, в целом, все больше прихожу к выводу, что нужно выносить части конфы в расширения, инкапсулируя их в стазисе.
   H A D G E H O G s
 
2 - 17.02.21 - 15:16
Заимствованные объекты - та же херь.
Особенно весело, если вы загоните в расширение основной объект формы - через пару минут в расширении у вас будет волшебный зоопарк объектов, который нужно будет дрожащще обнровлять с каждым выходом релиза.
Поэтому - только динамическое создание реквизитов на форме кодом.

Ну и, если не сертифицируетесь на Совместимо - весь корректный зоопарк заимствованных объектов вам и нафиг не нужон.
   H A D G E H O G s
 
3 - 17.02.21 - 15:17
Со страшилками "А, пропали реквизиты" ни разу не сталкивался.
   fisher
 
4 - 17.02.21 - 15:21
(3) А у вас есть какая-то сложившаяся практика использования расширений в разработке внутренних продуктов? Если да, то какая?
   Бовка
 
5 - 17.02.21 - 15:26
(2)
на Совместимо не претендуем, Концепцию модульного подхода в архитектуре решений 1С не соблюдаем, продукт исключительно внутренний.

про "динамическое создание реквизитов на форме кодом" - полностью согласен, только так и делаем.
   fisher
 
6 - 17.02.21 - 15:29
(5) О! Какие проблемы на внутреннем продукте вы решаете с помощью расширений?
   H A D G E H O G s
 
7 - 17.02.21 - 15:32
(6) Легкое обновление типовой части и отказ от динамического обновления в рабочей базе.
   Бовка
 
8 - 17.02.21 - 15:33
(6) Это было навязанное решение интегратором, отраслевое решение для ERP. Сейчас, избавившись от интегратора, решаю либо в принципе отказаться от использования расширений, либо сохранить что-то в нем для  УПРОЩЕНИЯ дальнейшего сопровождения.
   Вафель
 
9 - 17.02.21 - 15:33
разве под капотом обновления расширения не тоже динамическое?
   H A D G E H O G s
 
10 - 17.02.21 - 15:35
(9) ну при обновлении 1С ничего не предупреждает :-) С проблемами, как при динамическом, не сталкивались.
Ну и скорость отладки сравнима с внешними обработками, особенно если держать старый сеанс в фоне (для клиент сервера)
   fisher
 
11 - 17.02.21 - 15:37
(7) То есть все нетиповое в отдельном расширении? Или как?
   VladZ
 
12 - 17.02.21 - 15:37
(0) Моё мнение: на крупных проектах не стал бы использовать механизм расширений.

Причины:
1. Не все объекты поддерживаются в расширении.
2. Бывают ситуации, когда добавленные в расширении реквизиты существующих объектов отваливаются.

По п.2 критичных проблем не было. Решали так: удалили текущий реквизит, добавили новый, значения перетащили.

Итог:
- механизм расширений идеален в качестве "патча" (временное решение для исправления ошибок).
- можно использовать для небольших проектов
- для крупных проектов не рекомендую.
   2S
 
13 - 17.02.21 - 15:37
со временем понимаешь, что доработки лучше оставлять в составе конфиги. Расширения и обновления - боль
   Новый1сник2
 
14 - 17.02.21 - 15:38
(0) новые объекты добавляю в основную конфу. программное добавление на форму через расширение. сталкивался с тем что терялась часть информации, когда только начинал юзать обновления.
   Новый1сник2
 
15 - 17.02.21 - 15:38
(12) + 1
   fisher
 
16 - 17.02.21 - 15:39
(8) Помню, была ветка про отказ от расширения. Когда как раз вся доработка велась в бухнущем расширении, возникали какие-то проблемы и товарищ хотел отказаться от расширения. И простых вариантов там вроде не отсвечивало.
   Новый1сник2
 
17 - 17.02.21 - 15:40
(14) *обновления читать как расширения
   Новый1сник2
 
18 - 17.02.21 - 15:41
еще у расширений есть минусы, нету общих модулей, подписок на события. нельзя использовать в базовых версиях
   fisher
 
19 - 17.02.21 - 15:43
Я просто все пытаюсь для себя сформулировать, когда имеет смысл использовать расширения, и кроме как на костыли к типовым в качестве меньшего зла все никак не придумывается. Но тема очень любопытная поэтому хочется держать руку на пульсе :)
   Бовка
 
20 - 17.02.21 - 15:47
(11) это в 1С и называется Концепция модульного подхода в архитектуре решений, когда есть много отраслевых расширений и каждое пилится отдельным партнером под шилдиком 1С-Совместно
   Новый1сник2
 
21 - 17.02.21 - 15:47
новые объекты лучше добавлять в основную конфу, все таки обновлять проще сравнивая две конфигурации
   Garykom
 
22 - 17.02.21 - 15:51
Все кто не используют расширения - просто еще не умеют их правильно готовить.
И да https://ru.wikipedia.org/wiki/Серебряной_пули_нет и расширения не серебряная пуля, с ними тоже можно накосячить.
С ними просто удобней чем без них и все.
   Бовка
 
23 - 17.02.21 - 15:56
(12) спасибо за мнение. Согласен про хотфиксы.

(22) Ок, сказал А, говори Б) Вот конкретный пример:
1С декларирует смело свои директивы компиляции, вроде звучит круто.
Бери &Вместо, пиши свой код в расширении и все. В расширяемой конфе объект на замке, это хорошо. Как обновлять потом?
   Новый1сник2
 
24 - 17.02.21 - 15:59
(23) такой же вопрос, как обновлять "&Вместо"
   fisher
 
25 - 17.02.21 - 15:59
(20) Фига себе, а я проспал всю движуху! Наоборот, помнил еще как 1С в начале открещивались что мол "не-не-не, расширения - это не про модульность, окститесь, не надо их в ту сторону форсить".
   Garykom
 
26 - 17.02.21 - 16:03
(23) &Вместо надо писать в последнюю очередь, сначала попытаться &Перед или &После решить проблему/задачу

И вы снова пытаетесь найти серебряную пулю, решить совершенно иную проблему, которую расширения не решают.
Они не скажут как писать код ля и не напишут за вас код.
Они просто помогут уже написанный код отделить и легко перенести в другой код(конфу)
   Новый1сник2
 
27 - 17.02.21 - 16:05
еще интереснее обновлять, когда несколько расширений в конфу сделано разными программистами.
   Garykom
 
28 - 17.02.21 - 16:06
И да на "крупных внедрениях" пора переходить на EDT с Git, ибо там трёхстороннее сравнение и объединение и выделение фич по веткам и единственный вариант совместной разработки большой команды почти не мешая друг другу что часто с Хранилищем
   fisher
 
29 - 17.02.21 - 16:15
Короче, я для себя понял так.
Расширения - удобная альтернатива нескольким конфигурациям поставщика.
   AlvlSpb
 
30 - 17.02.21 - 16:18
(23) 1С как раз - таки декларирует использовать Вместо крайне осторожно и в исключительных случаях. После полноценного внедрения Изменение и контроль( ждем совместимости типовых с 8.3.15), про Вместо вообще лучше забыть. А пока искать способы модернизировать код с Перед и После
 
 
   VladZ
 
31 - 17.02.21 - 16:22
&Вместо вообще лучше не использовать. Это как мина замедленного действия - никогда не знаешь, когда рванет.
   VladZ
 
32 - 17.02.21 - 16:24
+31. Как вариант &ИзменениеИКонтроль. Но на больших проектах это скорее проблема, чем решение.
   H A D G E H O G s
 
33 - 17.02.21 - 16:38
(18) Вы к нам прямо из 2015 ого?
   Dmitrii
 
34 - 17.02.21 - 16:46
(12) +100500

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

Степень энтропии в процессе разработки прямо пропорциональная количеству расширений.
При количестве расширений больше трёх оценить совместимость расширений между собой, основной конфигурацией и новой конфигурацией поставщика на логическом уровне уже не представляется возможным. Или трудозатраты на такую оценку будут превышать все разумные возможные выгоды, полученные от экономии ресурсов при обновлении.
   FormatC
 
35 - 17.02.21 - 16:53
мы используем расширения только для устранения косяков
   vde69
 
36 - 17.02.21 - 16:55
На крупных проектах всегда делается отдельная сбоку лежащая подсистема, все модули исключительно отдельные.

Правки в типовом функционале сводятся в основном к модулям "расширяемый" ну и добавления своих типов в общие типы и подписки.

А вот права рекомендую переписывать на 100% и сразу, практически во всех проектах где я участвовал наступал момент когда типовая схема прав не устраивала и приходилось все перелолопачивать, теперь сразу в проекте делаю 100% своих ролей и из них собираю профили и все остальное.
   Dmitrii
 
37 - 17.02.21 - 16:57
(23) >> Бери &Вместо, пиши свой код в расширении и все. В расширяемой конфе объект на замке, это хорошо. Как обновлять потом?

Да какая разница - &Вместо, &Перед или &После?

Предположим вы дописали (расширили) какую-то процедуру с компилятором &После.
В очередном обновлении 1С-ники решили вообще отказаться от данной процедуры и перенесли её саму либо в другую процедуру либо вообще в другой модуль (любимое дело писателей типовых). Но оставили исходную (дописанную нами в расширении) процедуру для совместимости. И больше ниоткуда её не вызывают. Ваш код после обновления остался, но фактически больше не работает. Хорошо, если последствием будет сообщение об ошибке от пользователя. А то ведь может такое быть, что код просто перестал молча работать, а заметят это спустя пару месяцев при закрытии периода, например.

Оценить подобный логический конфликт просто никак невозможно. Аналогичная ситуация при доработке внутри самой конфы конечно же тоже возможна, но там есть хоть какая-то вероятность увидеть потенциальную проблему при трехстороннем сравнении. В случае с расширением - единственный шанс - чисто случайно "вспомнить".
   pavig
 
38 - 17.02.21 - 16:59
(35)
Хорошая практика. Тоже используем по данному назначению.
   CepeLLlka
 
39 - 17.02.21 - 17:02
Согласен с (12)
Расширения только так.. подлатать быстренько что-нибудь..
Если более-менее большая доработка, удобнее "вскрыть" конфу и работать по старинке..

Может быть, когда механизм расширений будет полностью готов, моё мнение изменится.. Но пока что больше проблем, чем плюшек..
   Новый1сник2
 
40 - 17.02.21 - 17:15
(33) что то изменилось с тех пор ?
   Новый1сник2
 
41 - 17.02.21 - 17:23
(37) разница есть, если использовать например "&После" можно добавить свои реквизиты на форму, после процедуры "при создании на сервере", вряд ли ее переименуют, даже если перепишут, расширение должно будет работать.
   Новый1сник2
 
42 - 17.02.21 - 17:25
(33) да и причем тут 2015г ?
   Dmitrii
 
43 - 17.02.21 - 19:35
(41) >> вряд ли ее переименуют.

С каких пор "вряд ли" стало мерилом гарантии? Даже смешно обсуждать.

>> если перепишут, расширение должно будет работать.

Никто не спорит, что расширение будет работать.
Вопрос в том - как?
Если расширение не отвалилось с синтаксической ошибкой - значит ли это, что оно работает?
А то, что код, ради которого было написано расширение перестал вызываться и работать - это нормально? Или смысл работы этого кода потерялся т.к. поставщик полностью переработал форму и логику её работы?
   Eeeehhhh
 
44 - 17.02.21 - 19:42
(3) я сталкивался. Зашло обновление на ЗУП с волшебным переименованием измерения в "СотрудникУдалить" расширение отвалилось после апдейта студентом из франча и похерились все данные объектов расширения.
   Dmitry1c
 
45 - 17.02.21 - 19:51
(44) до слез
   fisher
 
46 - 18.02.21 - 13:30
Ээээ... А может кто-то на пальцах объяснить мне, который с расширениями не работал, какие нужно приложить усилия, чтобы похерились данные объектов расширения как в (44)?
Или такое невозможно и после восстановления работоспособности расширения всегда будут на месте? Или можно ли так "отвалить" расширение, чтобы не было возможности его подключить обратно (что примерно то же самое по эффекту)?
   Aleksey
 
47 - 18.02.21 - 13:32
(46) удалить физически расширение из базы, вместо отключения
   fisher
 
48 - 18.02.21 - 13:39
(47) А сбоев такого рода, что невозможно подключить отключившееся расширение не бывает?
   Фрэнки
 
49 - 18.02.21 - 13:49
(46) дай дуракам хрустальный хер...

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

Сама 1С поступила весьма легкомысленно. Например, когда при поиске технического решения разрешила расширением добавлять новые реквизиты в заимствованный объект.

Если объекты просто новые, а не реквизиты, то до момента физического удаления расширения из базы не происходит изменения состава таблиц.

Если в заимствованные объекты насувать новых полей, то работа с таблицей с включенным и выключенным расширением может тупо проигнорить добавленные поля, даже если они остаются в базе. И соотв. при перезаписи таких "испорченных" объектов будут "испорченные" записи.
   fisher
 
50 - 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С эту область закрыла каким-то своим решением.
   fisher
 
55 - 18.02.21 - 16:25
(52) Погоди-погоди. То есть, если перезаписать объект с добавленными реквизитами при отключенном расширении, то данные в добавленных реквизитах очищаются? Японский городовой! Чуял я, что есть где-то засада :)
   Фрэнки
 
56 - 18.02.21 - 16:46
(55) Не, я все понимаю, если мы по взрослому платформу ваяем, то

Такие технические возможности с подстановкой новых полей в таблицы для наследуемых в расширение объектов - это обязательная возможность для разработки.
Рано или поздно, но это будет необходимо.

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

Т.е. интуитивно о потенциальном наличии такой траблы можно было догадываться. Ну и я не знаю, на самом деле, как физически размещены добавленные поля. Может они в новых таблицах и там ссылка на владельца, похоже на то, как регистры сведений могут быть с подчинением регистратору.
   hhhh
 
57 - 18.02.21 - 17:14
не особо можно общие модули расширять. В регзаданиях пишет

Ошибка расширения модуля 'ОбщийМодуль.ПродажиСервер.Модуль': расширение модуля запрещено из-за того, что расширение 'Расш' подключено в безопасном режиме
   fisher
 
58 - 18.02.21 - 17:38
(56) Нифига не интуитивно. Интуитивно - не трогать значения добавленных реквизитов при перезаписи объекта и отключенном расширении.
   fisher
 
59 - 18.02.21 - 17:41
И само собой - добавленные реквизиты находятся в отдельных таблицах. И тем более непонятно, нафига платформе туда лезть при отключенном расширении. Если ты прав, конечно. Обязательно протестирую этот момент при случае.
   Ненавижу 1С
 
60 - 18.02.21 - 17:43
УТ 11.4. Вся логика на расширениях. Интерфейсы существующих форм меняем программно. Реквизиты, таблицы и новые права создаем в основной конфигурации.
Полгода полет нормальный. На каникулах пережили обновление до последнего релиза.
 
 
   fisher
 
61 - 18.02.21 - 17:50
(60) Хороший компромисс. Чувствуется рука бывалого параноика :)
Единственное, не понял как с правами. Можно давать права в основной на объекты расширения?
   Ненавижу 1С
 
62 - 18.02.21 - 17:55
(61) так я же написал. Все таблицы и права в основной
   fisher
 
63 - 18.02.21 - 17:56
(62) Туплю
   Eeeehhhh
 
64 - 18.02.21 - 18:05
(52) именно, объект заимствован - были добавлены нужные клиенту реквизиты. А потом зашел этот объект и один из заимствованых реквизитов стал СотрудникУдалить плюс зашли новые и алгоритм обновления перезаписал все элементы справочника при обновлении. Пришлось восстанавливать данные из копии.
   Фрэнки
 
65 - 18.02.21 - 18:29
(64) за одного битого двух небитых дают
   Eeeehhhh
 
66 - 18.02.21 - 18:42
(65) сисадмин клиента начитался и потребовал в ТЗ сделать именно так. Обновлять типо проще потом ))) По факту юзаю расширения, только если костыль какой вставить. Новые объекты\реквизиты только в основную конфигурацию во избежание так сказать.
   Timon1405
 
67 - 18.02.21 - 22:32
(60) на расширенияХ или основном расширении+заплатки/патчи. если их много, то как следите кто что кодит и кто кого расширяет?
   timurhv
 
68 - 18.02.21 - 23:03
(0) При выходе расширений обещали механизм сравнения с основной конфигурацией, так и не добавили.
В работе столкнулся что некоторые формы перестали открываться в конфигураторе при обновлении платформы (в пользовательском все хорошо).
Больше в продуктиве на новых проектах не использую.
   Ненавижу 1С
 
69 - 19.02.21 - 00:09
(67) разбиты по разделам учета
все неоднозначно, как с выбором нарезанных наделов, так и соблюдением границ
в общем набираемся опыта
   mszsuz
 
70 - 19.02.21 - 00:26
Мой опыт: 5 лет все доработки только через расширения. У клиентов всегда актуальные типовые, что немаловажно в эпоху цифровизации и тотальной маркировки.
Ищите "фреймворк для расширений")
   2mugik
 
71 - 19.02.21 - 05:43
Тоже только в конфе данные добавляем(реквизиты, новые объекты).
Вначале было несколько расширений, в итоге отказались в пользу одного.
УТ 11.4 не то чтобы сильно перепахана, но к примеру в систему взаиморасчетов пара своих измерений добавлена.
   Провинциальный 1сник
 
72 - 19.02.21 - 06:20
(23) "В расширяемой конфе объект на замке, это хорошо. Как обновлять потом?"
Какие проблемы? Обновил штатно и гори там всё синим пламенем. Ведь 99% хотелок, реализуемых расширениями - это хотелки менеджеров, которые меняются чаще, чем обновляется 1с))
   Itmaint
 
73 - 19.02.21 - 06:25
Я в расширениях использую только хотфиксы или законченные автономные подсистемы.
Не вижу ни малейшерго смысла применять их для доработки конфигурации.
   2mugik
 
74 - 19.02.21 - 10:28
(73)например можно обновлять по принципу(72).
   maximkasuper
 
75 - 19.02.21 - 10:57
(0) В расширениях используем только директивы &Перед и &После. Если нужны изменения внутри метода, то меняем в основной конфигурации. Новые объекты добавляем только в основную конфигурацию. Интерфейс изменяем в расширении декларативно. Расширения начали использовать еще начиная с версии ERP 2.2, сейчас ERP 2.4. ,т.е. уже более двух лет. За все время проблем с обновлениями особых не было. С новыми версиями платформы, время от времени, добавляется новые самопроверки платформы на применимость расширения.
   ildary
 
76 - 19.02.21 - 10:58
(75) скажите пожалуйста, как Вы проверяете расширения на работоспособность при обновлениях на мажорный релиз (аля 2.2-> 2.4 или 2.4 -> 2.5)?
   maximkasuper
 
77 - 19.02.21 - 11:01
(76) Сначала прогоняем дымовыми тестами, потом вручную сценарным тестированием. Автоматическое сценарное тестирование не используем.
   ildary
 
78 - 19.02.21 - 11:09
(77) спасибо за информацию!
   bolder
 
79 - 19.02.21 - 11:11
(0) В крупных внедрениях не используем.Для доработок всевозможных хотелок и багфиксов расширения оказались очень удобны-> в багаже более полусотни.
   Гений 1С
 
80 - 19.02.21 - 11:24
Я вот сделал доп.реквизит объекта по ГТД в расширении у клиента. так меня потом месяц совесть мучала, что не в конфу добавил, а в расширение. Ведь конфа была модифицированная.
Не делайте так. Расширения для кода, а не для доп.полей, ну разве что если в конфу на поддержке.
   GANR
 
81 - 19.02.21 - 11:27
Рекомендую плодить не зоопарк из 40 мелких расширений, а 2-3 и поддерживать их через хранилища. Иначе не проконтролируете. Всё.
   fisher
 
82 - 19.02.21 - 12:18
(77) Грамотное название отсутствия тестирования :) Возьму на вооружение :)
   Бовка
 
83 - 19.02.21 - 16:47
Ответов уже больше, чем в прошлом году)) Т.е. механизм развивается, хоть и очень "осторожно"

Для себя понял три основных тренда/ этапа принятия расширений. 
1. Не использовать расширения в принципе, кроме хотфиксов
2  Использовать по принципу, как и описал в (0), только для программного расширения модулей поставщика с директивами После, Перед.  
3. Использовать для полноценной изоляции определенного ф-ла (расширение данных, программное расширение модулей) Тот самый модульный подход 1С. На текущий момент к нему готовы только в 1С :)

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


Список тем форума
 
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.