При переходе с ведения кадрового учета из программы «1С:Бухгалтерия 8» (БП) в специализированную систему «1С:Зарплата и управление персоналом 8» (ЗУП) многие специалисты сталкиваются с неприятной особенностью: стандартная синхронизация настроена на передачу данных из ЗУП в БП, но не наоборот. В результате справочники сотрудников и физических лиц, уже заведенные в бухгалтерии, не попадают в новую базу ЗУП «автоматически».
В этой статье мы подробно разберем несколько проверенных способов решения этой задачи: от использования встроенных помощников до технических приемов с программным кодом, которые помогут избежать ручного ввода данных.
Прежде чем приступать к переносу, проанализируем ситуацию. В экосистеме 1С программа ЗУП считается ведущей (мастер-системой) для кадрового учета и расчета зарплаты, а БП — ведомой. Стандартные правила обмена предполагают, что кадры создаются в ЗУП и транслируются в БП для формирования проводок. Поэтому стандартная «Синхронизация данных» игнорирует справочник Сотрудники при выгрузке из БП.
Рассмотрим способы, которые позволяют обойти это ограничение.
Это наиболее корректный и «штатный» метод, который позволяет перенести не только ФИО, но и кадровые сведения, данные о доходах и налогах. Выполним следующие шаги:
XML.Важный нюанс: Как отмечают пользователи, иногда этот мастер может выдавать ошибки, если в БП уже настроена синхронизация с этой базой ЗУП. В таком случае стоит попробовать выполнить перенос на «чистой» базе или временно разорвать связь синхронизации.
Если нам нужно перенести только справочник Физические лица, чтобы не забивать их вручную, мы можем использовать «хитрость» с механизмом регистрации изменений. Стандартный обмен выгружает только те объекты, которые используются в документах обмена. Выясним, как это использовать:
Создадим в 1С:Бухгалтерия 3.0 временный документ, который входит в состав обмена, например, Ведомость на выплату зарплаты или Отражение зарплаты в бухучете. В табличную часть документа добавим всех нужных нам физических лиц. После этого:
Физические лица.Этот метод хорош тем, что не требует программирования и сложных настроек правил обмена.
Если в БП велся полноценный учет, мы можем использовать данные, которые уже подготовлены для контролирующих органов. ЗУП умеет импортировать данные из файлов XML, сформированных для сдачи отчетности.
2-НДФЛ для сотрудников за последние несколько лет в формате XML.Для программистов 1С самым быстрым способом может оказаться написание небольшой обработки, которая напрямую подключится из одной базы в другую. Рассмотрим пример кода, который можно адаптировать под задачу. Выберем подход, при котором мы запускаем обработку в ЗУП (приемник), подключаемся к БП (источник) и переносим данные.
// Пример подключения к базе БП из ЗУП
COMConnector = Новый COMОбъект("V83.COMConnector");
СтрокаПодключения = "File=""C:\Bases\BP_Base"";Usr=""Администратор"";Pwd=""123"";";
Попытка
БазаИсточник = COMConnector.Connect(СтрокаПодключения);
Исключение
Сообщить("Ошибка подключения: " + ОписаниеОшибки());
Возврат;
КонецПопытки;
// Выбираем физических лиц из Бухгалтерии
ЗапросБП = БазаИсточник.NewObject("Запрос");
ЗапросБП.Текст =
"ВЫБРАТЬ
| ФизическиеЛица.Наименование КАК ФИО,
| ФизическиеЛица.ДатаРождения КАК ДатаРождения,
| ФизическиеЛица.ИНН КАК ИНН,
| ФизическиеЛица.СтраховойНомерПФР КАК СНИЛС
|ИЗ
| Справочник.ФизическиеЛица КАК ФизическиеЛица";
Выборка = ЗапросБП.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
// Проверяем, нет ли уже такого физлица в ЗУП (по СНИЛС или ФИО+ДатаРождения)
ФизЛицоОбъект = Справочники.ФизическиеЛица.НайтиПоНаименованию(Выборка.ФИО);
Если ФизЛицоОбъект.Пустая() Тогда
НовоеФизЛицо = Справочники.ФизическиеЛица.СоздатьЭлемент();
НовоеФизЛицо.Наименование = Выборка.ФИО;
НовоеФизЛицо.ДатаРождения = Выборка.ДатаРождения;
НовоеФизЛицо.ИНН = Выборка.ИНН;
НовоеФизЛицо.СтраховойНомерПФР = Выборка.СНИЛС;
Попытка
НовоеФизЛицо.Записать();
Сообщить("Перенесен: " + Выборка.ФИО);
Исключение
Сообщить("Ошибка записи: " + Выборка.ФИО);
КонецПопытки;
КонецЕсли;
КонецЦикла;
Этот код является упрощенным примером. Проанализируем его: мы используем объект V83.COMConnector для создания моста между базами. Важно помнить, что при таком переносе нужно также учитывать регистры сведений (например, паспортные данные), которые хранятся отдельно от справочника. Для прямого обмена между базами без программирования можно использовать инструмент для синхронного переноса объектов между базами 1С.
Существуют готовые универсальные обработки (например, «Универсальная выгрузка/загрузка данных в формате JSON»), которые позволяют гибко выбирать объекты для переноса. Посмотрим на алгоритм работы с ними:
Физические лица и, если необходимо, связанные регистры сведений (ФИОФизическихЛиц, ПаспортныеДанныеФизЛиц).JSON.Предупреждение: При использовании сторонних обработок или КД (Конвертации данных) будьте осторожны с идентификаторами GUID. Если вы перенесете объекты с новыми GUID, а потом включите стандартную синхронизацию, программа может не сопоставить их и создать дубли. Рекомендуется сопоставлять данные по полям СНИЛС или ИНН.
Мы рассмотрели различные подходы к переносу сотрудников. Подведем итог:
После завершения переноса обязательно зайдите в настройки БП (раздел Зарплата и кадры — Настройки зарплаты) и установите переключатель в положение В внешней программе. Это отключит кадровый учет в бухгалтерии и позволит системе корректно принимать данные из ЗУП через синхронизацию.