Как создать единую эталонную конфигурацию из множества разрозненных баз 1С:Бухгалтерия 2.0

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

Ситуация, когда в распоряжении оказывается «зоопарк» из 30–40 информационных баз 1С:Бухгалтерия предприятия 2.0 с несистематизированными доработками, является серьезным вызовом для отдела автоматизации. Отсутствие документации и преемственности в разработке усложняет поддержку и обновление систем. Разберем пошаговую методику приведения такого парка баз к единому стандарту и создания «эталонной» конфигурации.

Этап 1: Инвентаризация и аудит изменений

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

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

/DumpConfigToFiles <путь к каталогу выгрузки>

Выполним это действие для каждой из 40 баз и для чистой типовой конфигурации БП 2.0 той же версии. После этого мы сможем применить профессиональные инструменты сравнения каталогов, такие как Beyond Compare или KDiff3. Проанализируем полученные результаты:

Этап 2: Выбор архитектуры универсального кода

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

Подход 1: Условное ветвление через константы. Это наиболее быстрый в реализации способ. Мы заводим в конфигурации константу ВерсияБазы (или ПрефиксОрганизации) и обрамляем уникальные куски кода условиями. Посмотрим на пример реализации:


Если Константы.ВерсияКода.Получить() = "База_Лютик" Тогда
    // Специфическая логика для конкретного филиала
    ВыполнитьРасчетДополнительнойСкидки();
ИначеЕсли Константы.ВерсияКода.Получить() = "База_Ромашка" Тогда
    // Логика для другого филиала
    ПрименитьОсобыйАлгоритмНДС();
КонецЕсли;

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

Подход 2: Механизм функциональных опций. Несмотря на то что БП 2.0 использует обычные формы, платформа 8.3 позволяет полноценно использовать ФункциональныеОпции. Мы создаем функциональную опцию под каждую крупную доработку (например, ИнтеграцияStoreHouse). Это позволит нам:

  1. Включать или выключать конкретный функционал в каждой базе через интерфейс.
  2. Автоматически управлять видимостью реквизитов на формах и объектов в интерфейсе.
  3. Содержать код в чистоте, проверяя не «имя базы», а наличие конкретной возможности.

Этап 3: Использование Git для слияния конфигураций

Для управления «зоопарком» из 40 баз идеально подходит система контроля версий Git. Разберем процесс организации разработки:

При слиянии Git подсветит нам все конфликты. Это позволит нам увидеть, где разработчики правили одни и те же строки кода. Проанализируем ситуацию: если в Базе 1 а = 2, а в Базе 2 а = 3, Git заставит нас принять решение вручную, что гарантирует сохранение целостности логики.

Этап 4: Вынос логики во внешние компоненты

Чтобы максимально облегчить «эталонную» конфигурацию и упростить её дальнейшее обновление от фирмы «1С», часть доработок стоит вынести за пределы ядра системы. Выясним, что можно перенести:

Это позволит сократить количество измененных объектов в метаданных до минимума, что существенно облегчит жизнь при следующем обновлении релиза.

Этап 5: Создание Мастер-базы и централизованное обновление

Финальным шагом станет назначение одной базы «Центральной базой разработки». Мы вносим все изменения только в неё, после чего формируем файл обновления конфигурации (.cfu или .cf) и рассылаем его во все 40 баз.

Важный нюанс: Перед первым массовым обновлением необходимо убедиться, что во всех базах созданы все новые объекты метаданных (справочники, реквизиты), которые мы решили оставить в «эталоне». Даже если в «Базе №5» не нужен справочник «СпецификацииПроизводства», он должен там существовать (пусть и пустой), чтобы конфигурации всех баз стали идентичными. Это позволит в дальнейшем использовать механизм РИБ или автоматизированное обновление через пакетный режим конфигуратора.

Резюме

Создание универсальной конфигурации из «зоопарка» — это в первую очередь задача аналитическая, а не только программистская. Мы рекомендуем начать с выгрузки в текстовые файлы для оценки масштаба изменений, затем внедрить Git для управления слиянием и постепенно переводить уникальный функционал на Функциональные опции. Такой системный подход позволит не только стандартизировать учет, но и подготовить надежную базу для будущего перехода на 1С:Бухгалтерия 3.0.

← На главную