На практике программистам и системным администраторам нередко поступает задача: слить две типовые базы 1С:Бухгалтерия 3.0 в одну. Например, есть два разных ООО с одинаковой системой налогообложения, которые исторически велись в разных информационных базах, а теперь руководство хочет вести учет в одной базе с двумя организациями. Главная сложность в таком процессе — пересекающиеся справочники (контрагенты, номенклатура, статьи затрат). Перенос "в лоб" по внутренним идентификаторам (GUID) неминуемо приведет к задвоению нормативно-справочной информации.
Рассмотрим подробнее актуальные механизмы слияния баз, проанализируем возможные подводные камни и разберем по шагам весь процесс от подготовки до финальной очистки данных.
Часто возникает вопрос: переносить всю историю документов за прошлые годы или только остатки? Переносить обороты со слиянием аналитики за 5–7 лет — задача бессмысленная и беспощадная. Это многократно увеличивает время загрузки, раздувает объем итоговой базы и повышает риск возникновения битых ссылок.
Разберем оптимальный алгоритм подготовки:
Проанализируем три основных варианта, которые можно использовать для решения нашей задачи.
Вариант 1: Конвертация данных 2.0 (КД 2)
Это классический и самый гибкий путь для программиста. Так как конфигурации баз идентичны, правила обмена (ПКО и ПВД) создаются в Конвертация Данных 2 автоматически. Нам останется лишь подправить алгоритмы поиска.
Что нужно сделать в КД 2:
УникальныйИдентификатор и установим поиск по реквизитам. Для контрагентов — по ИНН и КПП, для номенклатуры — по Артикул и Наименование, для договоров — по владельцу, номеру и дате.СтатьиЗатрат, ПрочиеДоходыИРасходы, СпособыОтраженияЗарплатыВБухучете. Для них лучше прописать поиск по наименованию или коду.Для изменения префиксов документов присоединяемой базы можно использовать обработчик После загрузки объекта в ПКО. Посмотрим на пример кода, который меняет старый префикс на новый:
// Обработчик "После загрузки объекта" в КД 2
Если ЗначениеЗаполнено(Объект.Номер) Тогда
// Допустим, старый префикс "БП", меняем на "ФЛ"
ТекущийНомер = Объект.Номер;
Объект.Номер = "ФЛ" + Сред(ТекущийНомер, 3);
КонецЕсли;
Вариант 2: Доработанная выгрузка-загрузка XML
Типовая обработка ВыгрузкаЗагрузкаДанныхXML8х.epf переносит данные строго по внутренним идентификаторам. Это нам не подходит. Однако в сообществе 1С существует множество доработанных версий этой обработки с режимом "Поиск по реквизитам (без учета УИД)". Этот вариант позволяет выполнить слияние без написания правил обмена вообще, объекты корректно схлопнутся по кодам и наименованиям.
Вариант 3: Универсальный формат обмена (EnterpriseData)
Стандартная синхронизация через "Другую программу". Несмотря на мифы о том, что она ищет только по GUID, при первой синхронизации (когда объекты еще не сопоставлены в регистрах) поиск идет по ключевым полям, зашитым в модуле менеджера обмена (например, контрагенты отлично сопоставляются по ИНН). Но использовать этот метод для разового масштабного слияния исторических баз сложно из-за недостатка контроля над правилами.
При переносе документов их движения (подчиненные регистры) перенесутся автоматически. Но в 1С:Бухгалтерии есть критически важные независимые регистры сведений, которые не тянутся по ссылкам. Их необходимо перенести отдельно (написав правила в КД 2 или выгрузив обработкой XML).
Рассмотрим список регистров, о которых нельзя забывать:
ФИОФизическихЛиц, ГражданствоФизическихЛиц, ДокументыФизическихЛиц, ФизическиеЛицаДокументов, ТекущиеКадровыеДанныеСотрудников.УчетнаяПолитика, УчетнаяПолитикаПоНДФЛ, НастройкиУчетаНалогаНаПрибыль, НастройкиУчетаНДС, НастройкиУчетаСтраховыхВзносов, НастройкиУчетаЗарплаты, НастройкиСистемыНалогообложения.СведенияОФайлах, ДвоичныеДанныеФайлов, СтатусыДокументов.ИсторияРегистрацийВНалоговомОргане, ИсторияРегистрацийВОрганеПФР.ОтветственныеЛицаОрганизаций, ПараметрыНДСПоДоговорам, СпособыОтраженияРасходовПоАмортизации.Важное предупреждение: настройки 1С-ЭДО, ДиректБанка (обмен с банками), а также справочник Пользователи переносить автоматически крайне не рекомендуется! Привязки сертификатов жестко зависят от идентификаторов информационной базы. Безопаснее перенастроить маршруты ЭДО и профили пользователей в объединенной базе вручную.
Даже при самых идеальных правилах конвертации после слияния могут образоваться задвоенные элементы (например, контрагент был заведен с опечаткой в ИНН или без него). Многие опасаются ручного "обезьяньего труда", но в современных релизах платформы этот процесс отлично автоматизирован.
Используем встроенный типовой инструмент платформы:
Контрагенты) и зададим правило поиска (например, совпадение по ИНН или похожему наименованию).Подводя итоги, выясним, что слияние баз — это комплексная задача, успех которой на 80% зависит от подготовки. Выполните предварительную свертку, корректно настройте поля поиска в Конвертации Данных (или используйте выгрузку XML по реквизитам), не забудьте про независимые настройки учетной политики и используйте типовой поиск дублей для финальной "уборки". При таком подходе процесс пройдет с минимальными трудозатратами.