Как правильно объединить две базы 1С:Бухгалтерия 3.0 в одну

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

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

Предварительные проверки и подготовка баз к слиянию

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

  1. Проверка версий и релизов конфигураций: обе базы данных должны быть обновлены до одного и того же релиза. Различия в структуре метаданных приведут к ошибкам при загрузке.
  2. Оценка платформенных ограничений: если исходные базы велись в базовых версиях конфигурации, необходимо выполнить их переход на версию ПРОФ или КОРП, так как базовые версии не поддерживают ведение учета по нескольким организациям в одной базе.
  3. Проверка плана счетов и настроек учета: разберем настройки учета в обеих базах. Если в одной базе включен раздельный учет НДС или субконто на счетах учета отличаются, это повлияет на корректность сформированных проводках после переноса.
  4. Включение и настройка префиксов: разберем вопрос уникальности номеров документов. Как только в базе появляется вторая организация, для разделения нумерации обязательно должны быть заданы префиксы организаций. Если документов с одинаковыми номерами избежать не удастся, система заблокирует запись или перепутает нумерацию.

Вариант 1. Использование универсальной выгрузки и загрузки данных XML с последующей обработкой дублей

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

Этот способ подходит, когда нужно быстро перенести всю историю документов и справочники из приемника в источник без написания конвертаций.

  1. Выполняем выгрузку данных из второй базы с помощью обработки Выгрузка и загрузка данных XML.
  2. Загружаем полученный XML-файл в главную базу данных.
  3. Так как элементы справочников в разных базах создавались независимо и имеют разные уникальные идентификаторы (GUID), после загрузки возникнут дубликаты справочников (Контрагенты, Номенклатура, Физические лица).
  4. Запускаем штатный механизм Поиск и удаление дублей (находится в разделе Администрирование — Обслуживание — Корректировка данных) и объединяем совпадающие позиции по ключевым реквизитам (ИНН/КПП, Наименование, Артикул).

Вариант 2. Создание правил обмена в Конвертации Данных (КД 2.0)

Проанализируем более точный способ переноса — написание правил выгрузки в конфигурации Конвертация Данных 2.0. В отличие от простой XML-загрузки, этот подход позволяет заранее настроить поля поиска и избежать массивного появления дублей.

При составлении правил конвертации объектов (ПКО) обратите внимание на следующие нюансы:


ЗагружаемыйОбъект.ДополнительныеСвойства.Вставить("ЗаполнитьСчетаУчетаПередЗаписью", Истина);

Вариант 3. Объединение баз через механизмы РИБ (Распределенной Информационной Базы)

Интересный альтернативный подход — временно объединить базы через механизм РИБ по организациям или полному обмену. Рассмотрим последовательность действий:

  1. Создаем в будущей центральной базе узлы плана обмена.
  2. Выполняем первичную инициализацию периферийной базы из центральной или связываем действующие базы через узлы обмена.
  3. Выполняем полную регистрацию объектов и производим синхронизацию данных.
  4. Отключаем распределенную информационную базу командой ЦентральныйУзел = Неопределено в режиме 1С:Предприятие или через конфигуратор.
  5. Выполняем поиск и замену дублирующихся элементов справочников.

Главный плюс данного метода — сохранение ссылочной целостности и отсутствие необходимости повторного формирования и закрытия периодов, если структура баз была строго идентичной.

Оптимизация переноса при использовании внешнего программного кода

При написании собственных обработок переноса через COM/OLE соединение для сопоставления объектов одной конфигурации часто требуется быстро определять типы метаданных. Рассчитаем скорость: обращение к метаданным через OLE может сильно замедлять процесс. Проанализируем способ ускорения работы с типами через XMLТипЗнч:

XMLПредставлениеТипа = БазаУдал.XMLТипЗнч(ТекЭлементУдал).TypeName;

Использование этого метода позволяет ускорить определение типа загружаемого объекта в несколько раз по сравнению со стандартным обращением к ТекЭлементУдал.Метаданные().Имя.

Сравнительный анализ способов объединения

Разберем основные достоинства и недостатки каждого подхода:

← На главную