Как правильно объединить две базы 1С:УПП и перенести остатки?

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

Слияние двух компаний, ведущих учет в разных информационных базах конфигурации «1С:Управление производственным предприятием» (УПП), — сложная техническая и методологическая задача. Обычно такую процедуру планируют на конец отчетного года, чтобы начать новый финансовый год в единой базе. В данной статье мы подробно разберем, как решить эту задачу, рассмотрим три различных метода слияния, а также проанализируем критически важные нюансы, такие как переход с партионного учета на РАУЗ при переносе остатков.

Главная проблема: Различие в архитектуре учета (Партионка vs РАУЗ)

Перед тем как приступать к переносу, необходимо выяснить, по каким правилам ведется учет затрат и материальных ценностей в обеих базах. Очень часто возникает ситуация, когда в базе-источнике используется классический партионный учет, а в базе-приемнике — РАУЗ (Режим учета затрат).

Давайте проанализируем, почему нельзя переносить остатки «напрямую» из партионной базы в базу с РАУЗ:

  1. В партионном учете данные хранятся в регистрах накопления семейства ПартииТоваровНаСкладах (бухгалтерский, налоговый и управленческий учет).
  2. В РАУЗ все движения по материальным ценностям и затратам аккумулируются в едином регистре накопления УчетЗатратРег с использованием сложной системы аналитик (ключей аналитики учета затрат, вида учета и распределения затрат).

Если мы попытаемся перенести остатки документов свертки напрямую, стандартные правила обмена просто не смогут корректно сопоставить и заполнить аналитики РАУЗ в базе-приемнике. Поэтому мы рекомендуем придерживаться следующего порядка действий:

  1. Переводим базу-источник на РАУЗ. Этот переход необходимо выполнить в базе-источнике тем же месяцем, в котором планируется делать свертку.
  2. Выполняем расчет прав и закрытие месяца в источнике уже по новой схеме учета затрат.
  3. Проводим свертку информационной базы. В результате мы получим корректные документы ВводНачальныхОстатковПоУчетуЗатрат, которые без труда перенесутся в приемник, так как структуры регистров в обеих базах станут идентичными.

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


РежимУчетаЗатрат = Константы.УчетЗатратРежимИспользования.Получить();
Если РежимУчетаЗатрат = Перечисления.РежимыУчетаЗатрат.ПартионныйУчет Тогда
    Сообщить("Внимание! В базе используется партионный учет. Перед слиянием рекомендуется осуществить переход на РАУЗ.");
ИначеЕсли РежимУчетаЗатрат = Перечисления.РежимыУчетаЗатрат.Свободный Тогда
    Сообщить("В базе используется РАУЗ (Режим учета затрат). Структура готова к интеграции.");
КонецЕсли;

---

Вариант 1. Свертка базы-источника и перенос документов «как есть»

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

Рассмотрим этот процесс по шагам:

  1. Выполняем резервное копирование обеих баз.
  2. В базе-источнике запускаем типовую обработку СверткаИнформационнойБазы (ее можно найти на диске ИТС или в каталоге шаблонов установленной конфигурации). Задаем дату свертки (например, 31.12.2023 23:59:59).
  3. Обработка автоматически создаст документы ввода остатков по всем регистрам и очистит документы прошлых периодов.
  4. Используя обработку ВыгрузкаЗагрузкаДанныхXML.epf, выгружаем из свернутой базы только документы ввода остатков и справочники.
  5. Загружаем полученный XML-файл в базу-приемник.

Важное примечание: Данный метод идеально работает только в том случае, если конфигурации источника и приемника полностью идентичны (совпадают релизы, отсутствуют уникальные нетиповые доработки в структуре метаданных).

---

Вариант 2. Слияние через механизм распределенных баз (РИБ) без создания начального образа

Малоизвестный, но крайне эффективный лайфхак для опытных разработчиков 1С. Метод позволяет объединить базы без использования сторонних обработок выгрузки, используя внутренний механизм платформы для синхронизации. При необходимости выделения части данных можно воспользоваться примером настройки плана обмена РИБ по конкретной организации.

Выясним, как настроить такой обмен:

  1. В обеих базах (источнике и приемнике) проверяем конфигурации — они должны быть приведены к абсолютному соответствию (удобно делать через Хранилище конфигурации).
  2. В свойствах баз указываем разные префиксы информационных баз. Это предотвратит конфликт автонумерации документов и справочников при слиянии.
  3. В базе-приемнике (которая станет «Центром») заходим в планы обмена и создаем узел для базы-источника. Нам не обязательно выгружать начальный образ (создавать огромный файл 1CD), как это делается при классическом создании периферийной базы.
  4. В базе-источнике мы также настраиваем узел обмена, указывая код центрального узла. Чтобы «подружить» базы, мы можем использовать следующий программный код в базе-источнике (запустив его в режиме «Внешняя обработка»), который принудительно назначит главный узел:

ПланыОбмена.УстановитьГлавныйУзел(ПланыОбмена.Полный.НайтиПоКоду("ЦН")); 
Сообщить("База успешно переведена в режим подчиненного узла РИБ.");

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

---

Вариант 3. Использование встроенных правил обмена «УПП-УПП»

В конфигурации 1С:УПП уже заложен мощный встроенный функционал для обмена данными между одноименными конфигурациями. Давайте разберем, где его найти и как применить для нашей задачи. Для этой задачи также можно использовать готовые правила конвертации для переноса документов и справочников между базами.

Посмотрим на структуру конфигурации УПП. В ветке метаданных найдем:

Алгоритм работы с правилами выглядит следующим образом:

  1. Открываем конфигурацию «Конвертация данных 2.1».
  2. Выгружаем встроенное правило обмена из общего макета ПравилаОбмена_УПП_УПП в XML-файл.
  3. Загружаем эти правила в «Конвертацию данных».
  4. Поскольку нам нужно перенести не просто документы текущего периода, а именно сформированные остатки, мы можем модифицировать правила обмена: настроить конвертацию объектов для документов ВводОстатков....
  5. Настраиваем правила сопоставления (поиска) для ключевых справочников. По умолчанию поиск идет по уникальному идентификатору (GUID). Поскольку базы велись независимо, GUID у одинаковых контрагентов или номенклатуры будут разными.

В правилах обмена (ПКО) обязательно переопределяем поля поиска:

Пример кода обработки "ПередОбработкой" в правилах конвертации свойств для поиска контрагентов по ИНН/КПП:


// В правилах конвертации в Конвертации Данных 2.1
Если Не ЗначениеЗаполнено(Источник.ИНН) Тогда
    // Если ИНН не заполнен, сопоставляем по наименованию
    СтрокаПоиска = Источник.Наименование;
КонецЕсли;

---

Важные методологические аспекты переноса отдельных блоков

При выполнении слияния баз УПП особое внимание следует уделить следующим сложным участкам учета:

1. Учет НДС
Перенос остатков по НДС требует ювелирной точности. Недостаточно просто перенести остатки по регистру НДС предъявленный или счетам 19 и 76.АВ. Все данные должны быть детализированы в разрезе первичных документов (счетов-фактур), иначе при последующей сдаче отчетности в объединенной базе не закроется книга покупок/продаж. Тщательно сверяйте аналитику расчетов по НДС до и после переноса.

2. Зарплата и кадры (ЗУП-блок в УПП)
Свертка базы на конец года удаляет историю начислений сотрудников. Однако для расчета среднего заработка (для отпусков и больничных) программе требуются данные за предыдущие 12 и 24 месяца соответственно. Если просто перенести остатки по взаиморасчетам (счет 70), расчетчики в новой базе не смогут начислять отпускные.
Решение: Либо переносить документы кадрового учета и расчета зарплаты за последние 1-2 года в полном объеме, либо воспользоваться специальными правилами переноса данных для расчета среднего заработка, которые заполнят соответствующие регистры расчета и накопления без переноса самих документов-регистраторов.

3. Основные средства (ОС)
При переносе остатков по основным средствам убедитесь, что переносятся не только балансовые остатки по счетам 01 и 02, но и все сопутствующие сведения в регистрах сведений (таких как ПараметрыАмортизацииОСБухгалтерскийУчет, СпособыОтраженияРасходовПоАмортизацииОСБухгалтерскийУчет, СостоянияОСОрганизаций). Без этих регистров объединенная база «забудет», как и куда начислять амортизацию со следующего месяца.

Резюме

Мы проанализировали основные сценарии слияния баз 1С:УПП. Наиболее сбалансированным решением по трудозатратам и надежности является предварительный перевод базы-источника на РАУЗ, последующая ее свертка типовыми средствами и перенос готовых документов остатков с использованием Конвертации данных 2.1 для тонкой настройки синхронизации справочников. Подобный подход убережет вас от появления дублей в НСИ и гарантирует сохранение корректного учета затрат в объединенной компании.

← На главную