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