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

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

Вопрос архитектуры доработок в 1С — это всегда поиск баланса между скоростью внедрения, удобством последующего обновления и стабильностью системы. В среде разработчиков часто возникают споры: стоит ли использовать механизм расширений, или же проверенный временем метод снятия конфигурации с поддержки остается более надежным? Ситуация осложняется при работе с такими системами, как 1С:Документооборот, где структура объектов может быть весьма специфичной. В этой статье мы подробно проанализируем различные подходы, разберем правила "чистой" разработки и выясним, как избежать превращения базы в "зоопарк" несовместимых доработок.

Метод 1: Снятие с поддержки и доработка в основной конфигурации

Рассмотрим ситуацию, когда дорабатывается стабильная конфигурация, обновления которой выходят не слишком часто (например, 1С:Документооборот 2.1). Многие опытные разработчики рекомендуют открывать конфигурацию на редактирование и работать непосредственно в ней, используя Хранилище конфигурации.

Преимущества этого подхода:

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

  1. Использование префиксов: Все новые объекты (справочники, документы), реквизиты, добавленные в типовые объекты, и процедуры должны иметь уникальный префикс (например, прф_). Это позволит мгновенно отличить ваш код от типового при сравнении и объединении.
  2. Программное изменение форм: Вместо визуального изменения типовой формы в редакторе, лучше добавлять элементы программно в обработчике ПриСозданииНаСервере.
  3. Комментарии: Любое изменение в типовом коде должно быть обрамлено комментариями с указанием номера задачи и автора.

Метод 2: Использование расширений (Одно против нескольких)

Если мы выбираем путь расширений, встает вопрос их количества. Проанализируем риски обоих вариантов.

Вариант с одним расширением:

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

Вариант с несколькими расширениями:

Здесь мы можем применить принцип модульности (близкий к SOLID). Разделим доработки на функциональные блоки:

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

Работа с макетами и печатными формами: вечный спор

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

Подход А: Копирование макета

Разработчик копирует типовой макет, добавляет в него префикс прф_, вносит изменения и подменяет вызов типового макета своим кодом. Плюс: При обновлении типовой макет не затрется. Минус: Вы теряете связь с оригиналом. Если 1С в новом релизе изменит структуру макета (например, добавит обязательные поля по закону), ваша копия останется старой, и вы об этом даже не узнаете, пока не возникнет ошибка или претензия от пользователей.

Подход Б: Точечная доработка типового макета

Мы вносим изменения прямо в типовой макет, стараясь минимизировать их. Рассмотрим, как это сделать правильно:

  1. Не удаляйте типовые области.
  2. Добавляйте свои области в конец макета или с использованием префиксов.
  3. Документируйте изменения в модуле объекта, чтобы при обновлении было понятно, что нужно восстановить.

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


// Пример программного добавления информации в печатную форму
&После("СформироватьПечатнуюФорму")
Процедура прф_СформироватьПечатнуюФормуПосле(ТабличныйДокумент, ДанныеПечати)
    
    // Находим нужную область и дополняем её своими данными
    Область = ТабличныйДокумент.НайтиТекст("Итого:");
    Если Область <> Неопределено Тогда
        // Наша логика дозаполнения
    КонецЕсли;
    
КонецПроцедуры

Рекомендации по групповой разработке

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

Особенности доработки 1С:Документооборот 3.0

Важно отметить, что в ДО 3.0 архитектура значительно усложнилась по сравнению с 2.1. Она стала более модульной, и сами разработчики 1С активно используют расширения для поставки функционала. В этой конфигурации рекомендуется:

  1. Минимизировать правки основной конфигурации, так как связи между объектами стали гораздо плотнее.
  2. Использовать событийную модель. Вместо перехвата процедур через &Вместо, посмотрите, нет ли возможности подключиться к типовым подпискам на события или использовать встроенные механизмы переопределения логики в самой конфигурации (например, через программную инициализацию параметров сеанса).

Итоговый алгоритм выбора стратегии

Рассмотрим краткий чек-лист для принятия решения:

  1. Обновляемость: Если конфигурация на "замке" и обновляется раз в год — правьте основную конфигурацию через Хранилище. Это надежнее.
  2. Срочность: Для быстрых правок на "проде" (Hotfixes) используйте маленькие временные расширения, которые позже переносите в основной код.
  3. Масштаб: Если доработка — это отдельная подсистема (например, "Личный кабинет сотрудника"), выносите её в отдельное расширение.
  4. Командная работа: Используйте префиксы всегда, независимо от выбранного метода. Это "гигиена" разработчика.

Разберем типичную ошибку: "Каждая задача — новое расширение". Никогда так не делайте. Через год вы получите систему с 50 расширениями, половина из которых будет конфликтовать по приоритетам, а время запуска 1С увеличится в несколько раз из-за необходимости компиляции каждого модуля. Оптимальное количество для крупного проекта — 3-5 функциональных расширений.

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

← На главную