Стоит ли переходить на расширения при доработке старых конфигураций 1С?

Программист 1С v8.3 (Обычные формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

Анализ ситуации: Расширения в устаревших системах

Рассмотрим ситуацию, когда внешние специалисты (аутсорс) настаивают на переходе всей разработки на механизм расширений в конфигурации, которая длительное время находилась на поддержке через Хранилище конфигурации и работает на обычных формах (например, УТ 10.3). Разберем, почему этот подход может быть избыточным и даже вредным.

Механизм расширений был спроектирован для управляемых форм и типовых решений, чтобы миновать «снятие с замка». Однако, если конфигурация давно снята с поддержки, прямой доступ к коду конфигурации через Хранилище является стандартом индустрии для групповой разработки. Попытка навязать расширения для таких баз требует поднятия Режима совместимости платформы, что может привести к непредсказуемым ошибкам в уже работающих, старых алгоритмах.

Основные аргументы против тотального использования расширений

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

Когда действительно стоит использовать расширения?

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

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

Рекомендованная стратегия работы с аутсорсом

Разберем по шагам, как эффективно организовать работу с внешними программистами, чтобы не потерять контроль над системой:

  1. Отказ от ультиматумов: Если аутсорс настаивает на расширениях для всей логики, стоит пересмотреть условия сотрудничества. Профессионалы должны уметь работать с тем инструментом, который принят в компании (будь то Хранилище или Git).
  2. Гибридная модель: Договоритесь, что основной функционал (изменение бизнес-процессов) будет реализовываться через Хранилище (прямые правки), а второстепенные задачи — через расширения.
  3. Прозрачность изменений: Все доработки должны проходить процедуру код-ревью. Не соглашайтесь на передачу функционала в виде закрытых расширений без предоставления исходного кода.
  4. Версионирование: Настаивайте на подключении внешних разработчиков к общей системе контроля версий. Работа с копиями базы на локальных машинах без синхронизации через Хранилище гарантированно приведет к потере данных и конфликтам при обновлении.

Пример работы с расширением:

Если вы все же решили использовать расширение для второстепенной задачи, убедитесь, что вы не используете его там, где нужно полное изменение логики метода. Если вам нужно изменить стандартный метод ОбработкаПроведения, в расширении это может выглядеть так:


&После("ОбработкаПроведения")
Процедура МоеРасширение_ОбработкаПроведения(Отказ, РежимПроведения)
    // Дополнительная логика, не ломающая основной механизм
    Если Не Отказ Тогда
        // Выполнить действия
    КонецЕсли;
КонецПроцедуры

Однако, проанализировав ситуацию, помните: если вендор или вы сами решите серьезно изменить логику Документа, прямая правка в модуле объекта будет более читаемой и поддерживаемой в долгосрочной перспективе, чем «наслоение» расширений друг на друга. Будьте бдительны и отдавайте приоритет качеству архитектуры системы, а не модным трендам разработки.

← На главную