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