Почему в среднем заработке удваивается количество календарных дней после перехода на ЗУП 3.1

Программист 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом
← На главную

Переход с устаревшей конфигурации «Зарплата и управление персоналом», редакция 2.5, на современную платформу ЗУП 3.1 — это сложный процесс, который часто сопровождается техническими нюансами. Одной из самых распространенных и сбивающих с толку проблем является некорректный расчет среднего заработка, а именно — аномальное завышение количества отработанных календарных дней. Представьте ситуацию: при расчете отпуска в феврале программа показывает 55 отработанных дней вместо максимально возможных 28 или 29. Это неизбежно приводит к занижению суммы среднего заработка и, как следствие, к неправильному начислению отпускных.

В этой статье мы подробно разберем причины возникновения этой ошибки, выясним, в каких регистрах «прячутся» дублирующиеся данные, и рассмотрим пошаговые алгоритмы исправления ситуации — от ручной корректировки документов до программной очистки регистров.

Разберем причину возникновения проблемы

Давайте проанализируем внутреннюю архитектуру хранения данных для среднего заработка в ЗУП 3.1. В отличие от версии 2.5, где данные собирались динамически из учетных документов, в версии 3.1 используется механизм накопления данных в специализированных регистрах. При «кратком» переносе данных (перенос остатков и оборотов за предыдущие периоды) система фиксирует информацию о заработке и времени за прошлые годы (обычно за 2-3 года до начала ведения учета в новой базе).

Выясним причину задвоения: ошибка возникает из-за того, что помощник перехода в некоторых релизах записывает одну и ту же информацию одновременно в два разных места:

  1. Регистр накопления ДанныеОВремениДляРасчетаСреднегоОбщий — здесь хранятся основные сведения о времени.
  2. Регистр сведений ДанныеОВремениДляРасчетаСреднегоКорректировка — этот регистр предназначен для внесения правок, если основные данные по каким-то причинам неверны.

При формировании печатной формы расчета среднего или заполнении документа «Отпуск», программа суммирует показатели из обоих источников. Если в обоих регистрах стоят полные данные (например, по 28 дней), в сумме мы получаем те самые «магические» 56 или 55 дней. Это классический пример конфликта данных при миграции.

Проанализируем структуру документов переноса

Все данные, которые попадают в вышеуказанные регистры при переходе, физически содержатся в технических документах типа ПереносДанных. Чтобы найти их, нам необходимо перейти в раздел «Администрирование» — «Переносы данных».

Рассмотрим подробнее документы с определенными кодами. Как правило, данные для среднего заработка записываются в документы с префиксом ЗП_СДР (Средний заработок). Внутри такого документа нас интересуют вкладки, соответствующие именам наших регистров. Если мы видим, что информация продублирована и на вкладке основного регистра, и на вкладке корректировки, это и есть корень проблемы.

Вариант 1: Исправление через редактирование документов Перенос данных

Это самый «чистый» способ с точки зрения целостности базы данных, так как мы устраняем причину на уровне первичного документа. Рассмотрим этот процесс по шагам:

  1. Перейдем в список документов ПереносДанных.
  2. Найдем документы с номером, начинающимся на ЗП_СДР, за соответствующий период.
  3. Откроем документ и перейдем на вкладку «Данные о времени для расчета среднего (корректировка)».
  4. Проанализируем записи: если они полностью дублируют записи на вкладке «Данные о времени для расчета среднего (общий)», то записи в «корректировке» следует удалить или обнулить.
  5. После сохранения документа необходимо пересчитать средний заработок в документе «Отпуск». Дни должны прийти в норму.

Вариант 2: Программная очистка регистра корректировок

Если сотрудников много и документов переноса данных десятки, ручная правка становится неэффективной. В этом случае программисты используют внешнюю обработку для очистки регистра сведений. Посмотрим на логику работы такой обработки.

Важно: Перед выполнением любых операций с регистрами обязательно создайте резервную копию базы данных!

Рассмотрим пример программного кода, который может быть использован в обработке для удаления записей из регистра корректировок:


// Пример очистки регистра сведений через набор записей
НаборЗаписей = РегистрыСведений.ДанныеОВремениДляРасчетаСреднегоКорректировка.СоздатьНаборЗаписей();
// Если нужно очистить по конкретному сотруднику:
// НаборЗаписей.Отбор.Сотрудник.Установить(ВыбранныйСотрудник);
НаборЗаписей.Записать(); // Запись пустого набора удаляет данные из регистра по фильтру

После выполнения такой операции регистр ДанныеОВремениДляРасчетаСреднегоКорректировка станет пустым, и система начнет брать данные только из основного регистра накопления. Как показывает практика, в 99% случаев после этого расчет среднего становится корректным.

Нюанс с суммами начислений

Разберем еще один важный момент, упомянутый в обсуждении. После того как дни (знаменатель) встали в норму, может оказаться, что сама сумма среднего заработка (числитель) все равно отличается от данных в старой базе ЗУП 2.5. Выясним, почему так происходит.

Аналогично регистрам времени, существуют регистры для денежных сумм:

Если вы очистили время, но суммы кажутся завышенными, проверьте эти регистры. Однако, как заметил автор исходной темы, часто разница в сумме обусловлена не ошибкой переноса, а тем, что в ЗУП 3.1 по-другому учитываются премии или были доначисления, которые в старой базе не попали в расчет. Проанализируйте отчет «Входящие данные для расчета среднего заработка», чтобы убедиться в правильности каждой цифры.

Почему нельзя просто удалить записи вручную в интерфейсе?

Многие пользователи пытаются зайти в регистр напрямую через «Все функции» (Функции для технического специалиста) и удалить записи там. Проблема в том, что регистр сведений ДанныеОВремениДляРасчетаСреднегоКорректировка часто заблокирован для прямого редактирования, либо его записи жестко связаны с регистратором (документом ПереносДанных). Именно поэтому правильным подходом считается либо корректировка документа-регистратора, либо использование программного метода через СоздатьНаборЗаписей().

Подведем итоги

Ситуация с удвоением дней — это не поломка программы, а следствие избыточного копирования данных при миграции. Для исправления ситуации нам необходимо:

  1. Убедиться, что проблема именно в регистре «Данные о времени для расчета среднего (корректировка)».
  2. Выбрать метод исправления: либо точечно в документах ЗП_СДР, либо массово через скрипт.
  3. Проверить результат с помощью типового отчета по среднему заработку.
  4. Обратить внимание на календарные дни в неполных месяцах (расчет через коэффициент 29.3), так как после очистки регистра данные должны пересчитаться по формуле пропорционально отработанному времени.

Использование этих рекомендаций позволит вам быстро вернуть расчеты в корректное русло и избежать претензий со стороны контролирующих органов и сотрудников из-за неправильно начисленных отпускных.

← На главную