Одной из наиболее распространенных проблем в ведении учета в программе 1С:Зарплата и управление персоналом 8 является возникновение дублей в справочнике Физические лица. Ситуация часто осложняется тем, что один из «физиков» может быть задействован в документах Перенос данных, которые формируются при переходе из старых систем (например, ЗУП 2.5), а второй — в текущих кадровых и расчетных документах. Простое удаление объекта в такой ситуации недопустимо, так как это приведет к нарушению ссылочной целостности и «расползанию» налоговой отчетности.
В данной статье мы разберем по шагам, как грамотно устранить дублирование, проанализируем доступные инструменты и выясним причины, по которым стандартная замена значений может потребовать дополнительных действий.
Прежде чем приступать к исправлению, проанализируем структуру данных. В 1С:ЗУП 3.1 Физические лица и Сотрудники — это два разных справочника. Физическое лицо — это человек как объект гражданского права (с паспортом, ИНН и СНИЛС), а Сотрудник — это позиция в штатном расписании, привязанная к конкретному физлицу. У одного физлица может быть несколько карточек сотрудников (например, основное место работы и внутреннее совместительство). Наша задача — сделать так, чтобы все карточки сотрудников ссылались на одно правильное физлицо.
Любые действия по объединению или удалению данных в 1С должны начинаться с создания архивной копии базы. Поскольку операции затрагивают регистры накопления и сведения (включая НДФЛ и страховые взносы), ошибка может стоить целостности учета за несколько лет. Сделаем копию через конфигуратор или средствами СУБД перед началом любых манипуляций.
В конфигурации ЗУП 3.1 существует специализированный сервис, который работает «умнее» обычной обработки удаления дублей. Рассмотрим подробнее, как его найти и использовать:
Все функции или Функции для технического специалиста — Обработки — ОбъединениеЛичныхКарточекФизическихЛиц).Перенос данных.Если по каким-то причинам специализированная обработка не помогла (например, ссылки застряли в специфических узлах обмена), воспользуемся универсальным платформенным механизмом. Разберем этот вариант:
Физические лица.Документы типа Перенос данных являются «техническими», они напрямую делают записи в регистры накопления, минуя логику проведения обычных документов. Если дубль физического лица сидит именно там, ручная правка текста документа в режиме «только чтение» не поможет — нужно менять ссылку в самих движениях регистра. Типовые обработки (из Шагов 2 и 3) справляются с этим автоматически. Однако, если у вас установлена Дата запрета редактирования, которая захватывает период переноса данных, обработка может не сработать. Выясним причину ошибки: система не сможет переписать записи регистра в закрытом периоде. На время операции дату запрета необходимо снять или временно разрешить редактирование для администратора.
Проанализируем ситуацию со страховыми номерами. 1С:ЗУП жестко контролирует уникальность СНИЛС. Часто дубль возникает именно потому, что в одной карточке СНИЛС был не заполнен. После объединения необходимо проверить регистр сведений Страховые номера сотрудников. Убедимся, что после склейки не осталось «висящих» записей на удаленного «физика», иначе при формировании отчетности (ЕФС-1, РСВ) возникнут критические ошибки проверки.
Это самый критичный этап. После того как мы «схлопнули» двух физических лиц в одного, доходы этого человека за все периоды объединились. Рассмотрим, к чему это может привести:
Рекомендуем сформировать отчеты Анализ НДФЛ по месяцам и Проверка расчета страховых взносов. Если суммы «поползли», воспользуйтесь документом Перерасчет НДФЛ или Перерасчет страховых взносов за соответствующий налоговый период.
Если настроен обмен данными, помните, что объекты сопоставляются по уникальному идентификатору (GUID). При удалении физического лица в ЗУП, которое уже было передано в БП, в бухгалтерии оно может остаться «сиротой» или создаться заново как дубль при следующем обмене.
Проанализируем алгоритм действий для сохранения синхронности:
Если вам необходимо программно проверить, где именно задействован дубль, можно воспользоваться простым кодом в консоли запросов или внешней обработке, чтобы понять масштаб бедствия:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Данные.Ссылка КАК СсылкаНаОбъект
|ИЗ
| РегистрНакопления.ЗарплатаКВыплате КАК Данные
|ГДЕ
| Данные.ФизическоеЛицо = &Дубль";
Запрос.УстановитьПараметр("Дубль", СсылкаНаДубль);
Результат = Запрос.Выполнить();
Такой подход позволит вам точечно увидеть, в каких ведомостях или начислениях «застрял» старый объект, если типовая обработка по какой-то причине его пропустила.
Резюмируем: наиболее безопасным и современным способом решения проблемы является использование обработки Объединение личных карточек. Она учитывает специфику кадрового учета и минимизирует риски потери данных в кадровой истории. После завершения всех процедур обязательно выполните Тестирование и исправление базы (раздел Администрирование) для пересчета итогов в регистрах накопления.