diamond АШ Tlg

Как лучше дорабатывать типовую конфигурацию: в расширении или основной конфигурации?

Основная конфигурация vs расширение - взвешиваем все "за" и "против"

Для начала стоит вообще перечислить существующие подходы по доработке типовых конфигурций от 1С:

Метод №1: Доработка основной конфигурации

Метод, понятный любому программисту: предполагает полное или частичное снятие с поддержки основной конфигурации поставщика и внесение в него всех доработок.

Метод №2: Доработка в расширениях и дополнительных обработках

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

Метод №3: Гибридный подход

Метод предполагает, что поддержка основной конфигурации поставщика будет снята, но только для добавления новых объектов в основную конфигурацию. Чаще всего это новые реквизиты существующих объектов, новые регистры, т.е. носители хранимых в базе данных. Доработка логики ведется в расширениях и внешних обработках. Суть в том, что при удалении расширения данные в базе никак не пострадают, расширения можно легко динамически заменять и обновлять. Но такое разделение может быть и просто историческим: например, в далёком прошлом могли дорабатывать основную конфигурацию по методу №1, но потом всё новое начать разрабатывать в расширениях по методу №2.

Так какой же метод всё таки выбрать?

Однозначный и единственно верный ответ можно дать только в следующих исключительных случаях:

Ключевой фактор Метод Комментарий
№1 (осн.конф.) №2 (расш.) №3 (гибрид)
Типовая конфигурация не поддерживает расширения Да Нет Нет УПП
Типовую конфигурацию обновлять не планируется Да Нет Нет Нет смысла усложнять себе работу
Пользователь планирует обновлять типовую конфигурацию автоматически, без привлечения квалифицированного специалиста Нет Да Нет Обновление без открытия конфигуратора и окна «Сравнения и объединения» конфигурации» возможно только с сохранением поддержки основной конфигурации.
Планируется размещение базы в 1С:Фреш Нет Да Нет В сервисе 1С:Фреш пользовательские доработки вносятся только в виде расширений
Планируется создание тиражируемого коробочного продукта Нет Да Нет Вы не можете продавать модифицированный БП, ERP или ЗУП, так как 1С это вам не GNU

Если таких исключительных условий нет, то вам потребуется взвесить все "за" и "против". Для облегчения выбора можно воспользоваться нижеприведённой таблицей. Если какой-либо перечисленный фактор из таблицы имеет для вас значение - добавляйте числовое значение в общую сумму по столбцам. Строки не имеющие важного значения игнорируйте.

Оценочный фактор Метод Комментарий
№1 (осн.конф.) №2 (расш.) №3 (гибрид)
Планируется периодически обновлять типовую конфигурацию, типовая конфигурация по важности и критичности стоит выше доработок. 0 1 1 Критически важный типовой функционал будет работать даже со сломанными и заблокированными после обновлениями расширениями.
Планируется периодически обновлять типовую конфигурацию, но важность и критичность доработок стоят выше типового функционала 1 0 0 Критически важные доработки и хранимые данные, находящиеся в основной конфигурации, гораздо труднее случайно удалить по ошибке. Отмечались случаи, когда неквалифицированный администратор по ошибке удалял расширения (вместе с хранимыми данными)
Планируется переход типовой конфигурации на новый крупный релиз 1 0 1 При смене релиза типовой конфигурации могут возникнуть непреодолимые ошибки на уровне СУБД, требующие полного удаления расширений. Соответственно потребуется сохранять данные расширений в выгрузку и загрузку их обратно после перехода. По срокам и объёмам данных это может стать неприемлемым.
Критическое значение имеет скорость накатывания типовых обновлений 0 1 1 Доработки кода в расширениях в большинстве случаев не потребуют время на тотальный анализ кода модулей. В любом случае можно быстро обновиться без затрат на анализ и сразу запустить в работу, исправляя выявленные ошибки расширений в ходе эксплуатации.
Качество конфигурации в целом после обновления имеет наивысший приоритет 1 0 0 Только путём сравнения-объединения конфигурации можно увидеть и проанализировать полностью все внесённые изменения, правильно оценить трудоёмкость обновления и исключить неожиданности.
Большинство планируемых доработок — это новый функционал в добавленных объектах. 1 1 1 С точки зрения сложности и качества обновления разницы нет
Большинство планируемых доработок — это изменение существующих типовых объектов. 0 1 1 Исправление типовых объектов в основной конфигурации постепенно приведёт к росту трудоёмкости обновления типовой конфигурации.
Большинство планируемых доработок в модулях возможно разместить в функциях и процедурах &Перед или &После 0 1 1 При обновлении типовой конфигурации не потребуется анализ сравнения и объединения кода (но изменение функциональности аргументов и результатов потребует анализа при любом варианте)
Большинство планируемых доработок в модулях потребует замену содержания с помощью &Вместо или &ИзменениеИКонтроль 1 0 0 При обновлении типового кода потребуется обязательный анализ сравнения и объединения кода. Механизм расширений не имеет такого функционала - придётся сравнивать тексты модулей вручную глазами в 2 окнах или с помощью отдельного инструмента.
Предполагается доработка объектов, которые невозможно доработать в расширении на текущей версии платформы 1 0 1 Например, в версии платформы 8.3.22 невозможно в расширении доработать объекты XDTO, а следовательно и форматы универсального обмена.
Доработки включают в себя web и http сервисы, обеспечивающие доступ к конфиденциальным данным, которыми требуется точечно управлять 1 0 0 При публикации на веб-сервере сервисы расширений можно опубликовать либо все сразу, либо ни один. Управление отдельными публикациями сервисов расширений не предусмотрено.
Это HiLoad 1 0 0 На высоконагруженных системах может потребоваться массовая доработка почти всех объектов. На HiLoad обычно типовая конфа снимается с поддержки. Пример: тотальное удаление из всех форм поля поиска.
Планируется дорабатывать функционал существующего расширения 1 1 0 Основная конфигурация в момент разработки не видит объекты расширений, одно расширение не видит объекты другого расширения: здесь либо дорабатывать само расширение, либо переносить всю разработку целиком в основную конфигурацию.

Метод, набравший наибольшее количество баллов и можно выбрать как отправную точку. Я намеренно привёл здесь упрощенную таблицу, потому что в реальности цифры могут иметь и другие значения, а не только 0 и 1. Важность каждого фактора определяет сам клиент и у каждого свои предпочтения. Некоторые факторы могут быть более весомыми, чем другие, поэтому цифры в таблице можно и нужно уточнять в каждом конкретном случае.