Как перенести и объединить данные из нескольких баз 1С:ЗУП 3.1 в единую базу 1С:ЗУП КОРП?

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

Переход с обычного версии 1С:ЗУП 3.1 на КОРП-версию для одной организации выполняется стандартным обновлением конфигурации через файл .cf. Однако при объединении нескольких филиалов, каждый из которых ранее велся в собственной информационной базе, возникают сложности. В штатном функционале программы отсутствует готовый универсальный инструмент переноса из ЗУП 3.1 в ЗУП 3.1. Рассмотрим, как правильно спланировать и реализовать процесс объединения баз, избежав дублирования данных и ошибок в расчете заработной платы.

Особенности и архитектура объединения баз

Главная цель перехода на 1С:ЗУП КОРП при наличии филиальной структуры — сбор всех данных в единую базу данных с головной организацией и обособленными подразделениями. Проанализируем основные риски и подводные камни, с которыми можно столкнуться при объединении:

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

Выбор стратегии: перенос документов или перенос на дату среза

Переносить всю историю документов за предыдущие годы из всех баз в одну не рекомендуется из-за высокой трудоемкости и риска испортить учет. Оптимальным решением является перенос данных на дату среза (например, на 1 января нового года).

При переходе на дату среза прошлые базы сохраняются для просмотра исторической первички, а в новую единую базу КОРП переносится минимально необходимый набор сведений:

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

Реализация переноса через Конвертацию Данных (КД)

Выясним, как настроить правила обмена для корректного переноса сведений. Так как конфигурации источника и приемника имеют одинаковые структуры данных, большую часть правил в Конвертации Данных 2.0 можно сгенерировать автоматически, после чего внести необходимые корректировки.

Главное правило при настройке правил конвертации объектов (ПКО) — отключить поиск по уникальному идентификатору (GUID) и наладить поиск по уникальным бизнес-ключам:

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

Загрузка данных программным путем через COM-соединение

Альтернативный вариант переноса — написание внешней обработки, которая подключается к базам филиалов через COM-соединение (объект V83.COMConnector) и программно заполняет специализированные документы в целевой базе 1С:ЗУП КОРП.

Посмотрим на пример кода подключения и выборки физических лиц из базы-источника с последующим созданием или обновлением физического лица в целевой базе:


// Подключение к базе-источнику филиала
v83_Connector = Новый COMОбъект("V83.COMConnector");
СтрокаПодключения = "Srvr=""ServerName"";Ref=""ZUP_Filial1"";Usr=""Admin"";Pwd=""Password"";";

Попытка
    БазаИсточник = v83_Connector.Connect(СтрокаПодключения);
Исключение
    Сообщить("Ошибка подключения к базе филиала: " + ОписаниеОшибки());
    Возврат;
КонецПопытки;

// Запрос к базе-источнику для получения физлиц
ЗапросИсточник = БазаИсточник.NewObject("Запрос");
ЗапросИсточник.Текст = 
    "ВЫБРАТЬ
    |	ФизЛица.Наименование КАК ФИО,
    |	ФизЛица.ДатаРождения КАК ДатаРождения,
    |	ФизЛица.СтраховойНомерПФР КАК СНИЛС,
    |	ФизЛица.ИНН КАК ИНН
    |ИЗ
    |	Справочник.ФизическиеЛица КАК ФизЛица";

Выборка = ЗапросИсточник.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл
    // Поиск существующего физлица в базе КОРП по СНИЛС
    НайденноеФизЛицо = Справочники.ФизическиеЛица.НайтиПоРеквизиту("СтраховойНомерПФР", Выборка.СНИЛС);
    
    Если НЕ ЗначениеЗаполнено(НайденноеФизЛицо) И ЗначениеЗаполнено(Выборка.ИНН) Тогда
        НайденноеФизЛицо = Справочники.ФизическиеЛица.НайтиПоРеквизиту("ИНН", Выборка.ИНН);
    КонецЕсли;
    
    Если НЕ ЗначениеЗаполнено(НайденноеФизЛицо) Тогда
        ОбъектФизЛицо = Справочники.ФизическиеЛица.СоздатьЭлемент();
        ОбъектФизЛицо.Наименование = Выборка.ФИО;
        ОбъектФизЛицо.ДатаРождения = Выборка.ДатаРождения;
        ОбъектФизЛицо.СтраховойНомерПФР = Выборка.СНИЛС;
        ОбъектФизЛицо.ИНН = Выборка.ИНН;
        ОбъектФизЛицо.Записать();
    КонецЕсли;
КонецЦикла;

Аналогично через COM-соединение или обработку выгрузки создаются документы НачальнаяШтатнаяРасстановка и документы ПереносДанных для заполнения регистров расчета среднего заработка:

Предварительная настройка 1С:ЗУП КОРП

Перед загрузкой подготовленных данных в целевую базу 1С:ЗУП 3.1 КОРП обязательно выполним следующие настройки:

  1. В настройках состава предприятий включаем флаг работы с филиалами (обособленными подразделениями). Это даст возможность привязать филиалы к Головной организации и корректно разграничить налоговый учет по ИФНС и КПП.
  2. Проверяем и создаем необходимые ПроизводственныеКалендари, если филиалы расположены в регионах с местными праздничными днями.
  3. Настраиваем ограничения прав доступа на уровне записей (RLS) по группам физических лиц и подразделениям до массовой загрузки данных, чтобы пользователи филиалов сразу получили доступ только к своим сотрудникам.
← На главную