Вопрос архитектуры доработок в 1С — это всегда поиск баланса между скоростью внедрения, удобством последующего обновления и стабильностью системы. В среде разработчиков часто возникают споры: стоит ли использовать механизм расширений, или же проверенный временем метод снятия конфигурации с поддержки остается более надежным? Ситуация осложняется при работе с такими системами, как 1С:Документооборот, где структура объектов может быть весьма специфичной. В этой статье мы подробно проанализируем различные подходы, разберем правила "чистой" разработки и выясним, как избежать превращения базы в "зоопарк" несовместимых доработок.
Рассмотрим ситуацию, когда дорабатывается стабильная конфигурация, обновления которой выходят не слишком часто (например, 1С:Документооборот 2.1). Многие опытные разработчики рекомендуют открывать конфигурацию на редактирование и работать непосредственно в ней, используя Хранилище конфигурации.
Преимущества этого подхода:
Разберем основные правила работы в основной конфигурации, чтобы не превратить процесс обновления в кошмар:
прф_). Это позволит мгновенно отличить ваш код от типового при сравнении и объединении.ПриСозданииНаСервере.Если мы выбираем путь расширений, встает вопрос их количества. Проанализируем риски обоих вариантов.
Вариант с одним расширением:
Это классический подход, когда все доработки "живут" в одной надстройке. Основной минус — если при обновлении типовой конфигурации возникнет конфликт хотя бы в одном заимствованном методе, платформа может отключить всё расширение целиком. Представьте, что из-за ошибки в печатной форме перестал работать механизм согласования документов. Это критический риск для бизнеса.
Вариант с несколькими расширениями:
Здесь мы можем применить принцип модульности (близкий к SOLID). Разделим доработки на функциональные блоки:
Посмотрим на технические нюансы работы с несколькими расширениями. Крайне важно следить за приоритетом выполнения. В 1С расширения применяются в соответствии с их порядком в списке. Если два расширения используют аннотацию &Вместо для одного и того же метода, сработает только то, у которого приоритет выше. Поэтому рекомендуется максимально использовать &Перед и &После, так как они позволяют выстраивать цепочки вызовов.
Проанализируем ситуацию доработки типовой печатной формы. Существует два основных подхода, и у каждого есть свои сторонники.
Подход А: Копирование макета
Разработчик копирует типовой макет, добавляет в него префикс прф_, вносит изменения и подменяет вызов типового макета своим кодом.
Плюс: При обновлении типовой макет не затрется.
Минус: Вы теряете связь с оригиналом. Если 1С в новом релизе изменит структуру макета (например, добавит обязательные поля по закону), ваша копия останется старой, и вы об этом даже не узнаете, пока не возникнет ошибка или претензия от пользователей.
Подход Б: Точечная доработка типового макета
Мы вносим изменения прямо в типовой макет, стараясь минимизировать их. Рассмотрим, как это сделать правильно:
Выясним, как программно модифицировать макет, не меняя его визуально. Рассмотрим пример кода, где мы добавляем свою колонку в уже сформированный табличный документ:
// Пример программного добавления информации в печатную форму
&После("СформироватьПечатнуюФорму")
Процедура прф_СформироватьПечатнуюФормуПосле(ТабличныйДокумент, ДанныеПечати)
// Находим нужную область и дополняем её своими данными
Область = ТабличныйДокумент.НайтиТекст("Итого:");
Если Область <> Неопределено Тогда
// Наша логика дозаполнения
КонецЕсли;
КонецПроцедуры
Если в команде несколько человек, использование множества расширений может помочь избежать конфликтов в Хранилище, но порождает проблемы зависимостей. Проанализируем современные инструменты:
Важно отметить, что в ДО 3.0 архитектура значительно усложнилась по сравнению с 2.1. Она стала более модульной, и сами разработчики 1С активно используют расширения для поставки функционала. В этой конфигурации рекомендуется:
&Вместо, посмотрите, нет ли возможности подключиться к типовым подпискам на события или использовать встроенные механизмы переопределения логики в самой конфигурации (например, через программную инициализацию параметров сеанса).Рассмотрим краткий чек-лист для принятия решения:
Хранилище. Это надежнее.Разберем типичную ошибку: "Каждая задача — новое расширение". Никогда так не делайте. Через год вы получите систему с 50 расширениями, половина из которых будет конфликтовать по приоритетам, а время запуска 1С увеличится в несколько раз из-за необходимости компиляции каждого модуля. Оптимальное количество для крупного проекта — 3-5 функциональных расширений.
Помните, что расширение — это не способ скрыть плохой код, а инструмент управления сложностью. Соблюдая правила именования и минимизируя заимствования (не тащите в расширение форму целиком, если нужно поменять одну кнопку), вы обеспечите долголетие и стабильность вашей информационной системы.