Ситуация, когда в распоряжении оказывается «зоопарк» из 30–40 информационных баз 1С:Бухгалтерия предприятия 2.0 с несистематизированными доработками, является серьезным вызовом для отдела автоматизации. Отсутствие документации и преемственности в разработке усложняет поддержку и обновление систем. Разберем пошаговую методику приведения такого парка баз к единому стандарту и создания «эталонной» конфигурации.
Прежде чем приступать к объединению кода, нам необходимо понять масштаб различий. Проанализируем ситуацию: в одной базе может быть доработан справочник Номенклатура, в другой — изменены алгоритмы проведения документа РеализацияТоваровУслуг, а в третьей — добавлены только интерфейсные правки. Чтобы не утонуть в ручном сравнении, воспользуемся инструментами автоматизации.
Рассмотрим метод выгрузки конфигураций в текстовые файлы. Это позволит нам использовать внешние инструменты сравнения (diff-инструменты), которые работают быстрее и нагляднее стандартного механизма сравнения в конфигураторе. Для этого используем параметры командной строки 1С:
/DumpConfigToFiles <путь к каталогу выгрузки>
Выполним это действие для каждой из 40 баз и для чистой типовой конфигурации БП 2.0 той же версии. После этого мы сможем применить профессиональные инструменты сравнения каталогов, такие как Beyond Compare или KDiff3. Проанализируем полученные результаты:
После проведения аудита нам необходимо решить, как «упаковать» все нужные изменения в одну конфигурацию так, чтобы они не мешали друг другу. Рассмотрим два основных подхода.
Подход 1: Условное ветвление через константы. Это наиболее быстрый в реализации способ. Мы заводим в конфигурации константу ВерсияБазы (или ПрефиксОрганизации) и обрамляем уникальные куски кода условиями. Посмотрим на пример реализации:
Если Константы.ВерсияКода.Получить() = "База_Лютик" Тогда
// Специфическая логика для конкретного филиала
ВыполнитьРасчетДополнительнойСкидки();
ИначеЕсли Константы.ВерсияКода.Получить() = "База_Ромашка" Тогда
// Логика для другого филиала
ПрименитьОсобыйАлгоритмНДС();
КонецЕсли;
Этот метод хорош для быстрого старта, но при большом количестве баз он делает код трудночитаемым. Поэтому разберем более профессиональный вариант.
Подход 2: Механизм функциональных опций. Несмотря на то что БП 2.0 использует обычные формы, платформа 8.3 позволяет полноценно использовать ФункциональныеОпции. Мы создаем функциональную опцию под каждую крупную доработку (например, ИнтеграцияStoreHouse). Это позволит нам:
Для управления «зоопарком» из 40 баз идеально подходит система контроля версий Git. Разберем процесс организации разработки:
БП 2.0.merge (слияние) для переноса изменений из веток баз в основную ветку (master/main).При слиянии Git подсветит нам все конфликты. Это позволит нам увидеть, где разработчики правили одни и те же строки кода. Проанализируем ситуацию: если в Базе 1 а = 2, а в Базе 2 а = 3, Git заставит нас принять решение вручную, что гарантирует сохранение целостности логики.
Чтобы максимально облегчить «эталонную» конфигурацию и упростить её дальнейшее обновление от фирмы «1С», часть доработок стоит вынести за пределы ядра системы. Выясним, что можно перенести:
.erf.Это позволит сократить количество измененных объектов в метаданных до минимума, что существенно облегчит жизнь при следующем обновлении релиза.
Финальным шагом станет назначение одной базы «Центральной базой разработки». Мы вносим все изменения только в неё, после чего формируем файл обновления конфигурации (.cfu или .cf) и рассылаем его во все 40 баз.
Важный нюанс: Перед первым массовым обновлением необходимо убедиться, что во всех базах созданы все новые объекты метаданных (справочники, реквизиты), которые мы решили оставить в «эталоне». Даже если в «Базе №5» не нужен справочник «СпецификацииПроизводства», он должен там существовать (пусть и пустой), чтобы конфигурации всех баз стали идентичными. Это позволит в дальнейшем использовать механизм РИБ или автоматизированное обновление через пакетный режим конфигуратора.
Создание универсальной конфигурации из «зоопарка» — это в первую очередь задача аналитическая, а не только программистская. Мы рекомендуем начать с выгрузки в текстовые файлы для оценки масштаба изменений, затем внедрить Git для управления слиянием и постепенно переводить уникальный функционал на Функциональные опции. Такой системный подход позволит не только стандартизировать учет, но и подготовить надежную базу для будущего перехода на 1С:Бухгалтерия 3.0.