Как перенести сотрудников и физических лиц из 1С:Бухгалтерия 3.0 в 1С:Зарплата и управление персоналом 3.1?

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

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

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

Методологическая основа: Почему данные не переносятся сами?

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

Рассмотрим способы, которые позволяют обойти это ограничение.

Способ 1. Использование помощника «Перенос данных из прежних программ»

Это наиболее корректный и «штатный» метод, который позволяет перенести не только ФИО, но и кадровые сведения, данные о доходах и налогах. Выполним следующие шаги:

  1. Откроем программу 1С:ЗУП 3.1.
  2. Перейдем в раздел Администрирование, далее выберем пункт Перенос данных из прежних программ.
  3. В открывшемся окне выберем вариант Перенос данных из приложения 1С:Бухгалтерия предприятия 8 (редакция 3.0).
  4. Программа предложит два варианта подключения:
    • Прямое подключение к информационной базе (если базы находятся на одном сервере или в одной сети).
    • Перенос через файл (если прямого доступа нет). В этом случае программа предложит скачать специальную обработку, которую нужно запустить в БП, чтобы выгрузить данные в файл XML.
  5. После выбора состава данных (рекомендуется переносить все актуальные сведения) запустим процесс загрузки.

Важный нюанс: Как отмечают пользователи, иногда этот мастер может выдавать ошибки, если в БП уже настроена синхронизация с этой базой ЗУП. В таком случае стоит попробовать выполнить перенос на «чистой» базе или временно разорвать связь синхронизации.

Способ 2. Принудительная регистрация через временные документы

Если нам нужно перенести только справочник Физические лица, чтобы не забивать их вручную, мы можем использовать «хитрость» с механизмом регистрации изменений. Стандартный обмен выгружает только те объекты, которые используются в документах обмена. Выясним, как это использовать:

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

  1. Запустим синхронизацию.
  2. Механизм обмена увидит, что в документе задействованы новые объекты справочника Физические лица.
  3. Эти объекты будут зарегистрированы к выгрузке и попадут в ЗУП.
  4. После успешного переноса временный документ в БП можно удалить или пометить на удаление.

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

Способ 3. Перенос данных через внешние файлы отчетности (2-НДФЛ)

Если в БП велся полноценный учет, мы можем использовать данные, которые уже подготовлены для контролирующих органов. ЗУП умеет импортировать данные из файлов XML, сформированных для сдачи отчетности.

  1. В БП выгрузим справки 2-НДФЛ для сотрудников за последние несколько лет в формате XML.
  2. В ЗУП при начальной настройке (или через помощник выгрузки) выберем Загрузка данных из файлов отчетности.
  3. Укажем наши файлы. При загрузке программа автоматически создаст карточки физических лиц и наполнит регистры сведений данными о доходах, что крайне полезно для последующего расчета больничных.

Способ 4. Программный перенос через COM-соединение

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


// Пример подключения к базе БП из ЗУП
COMConnector = Новый COMОбъект("V83.COMConnector");
СтрокаПодключения = "File=""C:\Bases\BP_Base"";Usr=""Администратор"";Pwd=""123"";";

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

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

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

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

Этот код является упрощенным примером. Проанализируем его: мы используем объект V83.COMConnector для создания моста между базами. Важно помнить, что при таком переносе нужно также учитывать регистры сведений (например, паспортные данные), которые хранятся отдельно от справочника. Для прямого обмена между базами без программирования можно использовать инструмент для синхронного переноса объектов между базами 1С.

Способ 5. Универсальная выгрузка/загрузка JSON

Существуют готовые универсальные обработки (например, «Универсальная выгрузка/загрузка данных в формате JSON»), которые позволяют гибко выбирать объекты для переноса. Посмотрим на алгоритм работы с ними:

  1. Запускаем обработку в БП.
  2. Выбираем справочник Физические лица и, если необходимо, связанные регистры сведений (ФИОФизическихЛиц, ПаспортныеДанныеФизЛиц).
  3. Выгружаем данные в файл JSON.
  4. Запускаем эту же обработку в ЗУП и загружаем файл.

Предупреждение: При использовании сторонних обработок или КД (Конвертации данных) будьте осторожны с идентификаторами GUID. Если вы перенесете объекты с новыми GUID, а потом включите стандартную синхронизацию, программа может не сопоставить их и создать дубли. Рекомендуется сопоставлять данные по полям СНИЛС или ИНН.

Итоги и рекомендации

Мы рассмотрели различные подходы к переносу сотрудников. Подведем итог:

После завершения переноса обязательно зайдите в настройки БП (раздел Зарплата и кадры — Настройки зарплаты) и установите переключатель в положение В внешней программе. Это отключит кадровый учет в бухгалтерии и позволит системе корректно принимать данные из ЗУП через синхронизацию.

← На главную