Переход с устаревшей конфигурации «Зарплата и управление персоналом», редакция 2.5, на современную платформу ЗУП 3.1 — это сложный процесс, который часто сопровождается техническими нюансами. Одной из самых распространенных и сбивающих с толку проблем является некорректный расчет среднего заработка, а именно — аномальное завышение количества отработанных календарных дней. Представьте ситуацию: при расчете отпуска в феврале программа показывает 55 отработанных дней вместо максимально возможных 28 или 29. Это неизбежно приводит к занижению суммы среднего заработка и, как следствие, к неправильному начислению отпускных.
В этой статье мы подробно разберем причины возникновения этой ошибки, выясним, в каких регистрах «прячутся» дублирующиеся данные, и рассмотрим пошаговые алгоритмы исправления ситуации — от ручной корректировки документов до программной очистки регистров.
Давайте проанализируем внутреннюю архитектуру хранения данных для среднего заработка в ЗУП 3.1. В отличие от версии 2.5, где данные собирались динамически из учетных документов, в версии 3.1 используется механизм накопления данных в специализированных регистрах. При «кратком» переносе данных (перенос остатков и оборотов за предыдущие периоды) система фиксирует информацию о заработке и времени за прошлые годы (обычно за 2-3 года до начала ведения учета в новой базе).
Выясним причину задвоения: ошибка возникает из-за того, что помощник перехода в некоторых релизах записывает одну и ту же информацию одновременно в два разных места:
ДанныеОВремениДляРасчетаСреднегоОбщий — здесь хранятся основные сведения о времени.ДанныеОВремениДляРасчетаСреднегоКорректировка — этот регистр предназначен для внесения правок, если основные данные по каким-то причинам неверны.При формировании печатной формы расчета среднего или заполнении документа «Отпуск», программа суммирует показатели из обоих источников. Если в обоих регистрах стоят полные данные (например, по 28 дней), в сумме мы получаем те самые «магические» 56 или 55 дней. Это классический пример конфликта данных при миграции.
Все данные, которые попадают в вышеуказанные регистры при переходе, физически содержатся в технических документах типа ПереносДанных. Чтобы найти их, нам необходимо перейти в раздел «Администрирование» — «Переносы данных».
Рассмотрим подробнее документы с определенными кодами. Как правило, данные для среднего заработка записываются в документы с префиксом ЗП_СДР (Средний заработок). Внутри такого документа нас интересуют вкладки, соответствующие именам наших регистров. Если мы видим, что информация продублирована и на вкладке основного регистра, и на вкладке корректировки, это и есть корень проблемы.
Это самый «чистый» способ с точки зрения целостности базы данных, так как мы устраняем причину на уровне первичного документа. Рассмотрим этот процесс по шагам:
ПереносДанных.Если сотрудников много и документов переноса данных десятки, ручная правка становится неэффективной. В этом случае программисты используют внешнюю обработку для очистки регистра сведений. Посмотрим на логику работы такой обработки.
Важно: Перед выполнением любых операций с регистрами обязательно создайте резервную копию базы данных!
Рассмотрим пример программного кода, который может быть использован в обработке для удаления записей из регистра корректировок:
// Пример очистки регистра сведений через набор записей
НаборЗаписей = РегистрыСведений.ДанныеОВремениДляРасчетаСреднегоКорректировка.СоздатьНаборЗаписей();
// Если нужно очистить по конкретному сотруднику:
// НаборЗаписей.Отбор.Сотрудник.Установить(ВыбранныйСотрудник);
НаборЗаписей.Записать(); // Запись пустого набора удаляет данные из регистра по фильтру
После выполнения такой операции регистр ДанныеОВремениДляРасчетаСреднегоКорректировка станет пустым, и система начнет брать данные только из основного регистра накопления. Как показывает практика, в 99% случаев после этого расчет среднего становится корректным.
Разберем еще один важный момент, упомянутый в обсуждении. После того как дни (знаменатель) встали в норму, может оказаться, что сама сумма среднего заработка (числитель) все равно отличается от данных в старой базе ЗУП 2.5. Выясним, почему так происходит.
Аналогично регистрам времени, существуют регистры для денежных сумм:
ДанныеОНачисленияхДляРасчетаСреднегоЗаработкаОбщийДанныеОНачисленияхДляРасчетаСреднегоЗаработкаКорректировкаЕсли вы очистили время, но суммы кажутся завышенными, проверьте эти регистры. Однако, как заметил автор исходной темы, часто разница в сумме обусловлена не ошибкой переноса, а тем, что в ЗУП 3.1 по-другому учитываются премии или были доначисления, которые в старой базе не попали в расчет. Проанализируйте отчет «Входящие данные для расчета среднего заработка», чтобы убедиться в правильности каждой цифры.
Многие пользователи пытаются зайти в регистр напрямую через «Все функции» (Функции для технического специалиста) и удалить записи там. Проблема в том, что регистр сведений ДанныеОВремениДляРасчетаСреднегоКорректировка часто заблокирован для прямого редактирования, либо его записи жестко связаны с регистратором (документом ПереносДанных). Именно поэтому правильным подходом считается либо корректировка документа-регистратора, либо использование программного метода через СоздатьНаборЗаписей().
Ситуация с удвоением дней — это не поломка программы, а следствие избыточного копирования данных при миграции. Для исправления ситуации нам необходимо:
Использование этих рекомендаций позволит вам быстро вернуть расчеты в корректное русло и избежать претензий со стороны контролирующих органов и сотрудников из-за неправильно начисленных отпускных.