Как исправить задвоение премий в расчете среднего заработка после переноса остатков в ЗГУ 3 (ЗУП 3)?

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

При переходе с конфигураций предыдущего поколения (1С:Зарплата и кадры бюджетного учреждения 1.0 или 1С:Зарплата и управление персоналом 2.5) на современные редакции (ЗГУ 3 / ЗУП 3.1) с помощью типового механизма переноса данных пользователи нередко сталкиваются с некорректным расчетом среднего заработка. Распространенная ситуация: если в последнем месяце переноса (например, в декабре) сотруднику было начислено две разные премии (квартальная и годовая), в расчет среднего заработка за последующие месяцы обе премии попадают с общей суммарной стоимостью, что приводит к двукратному завышению базы начислений.

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

Причина возникновения ошибки при переносе данных

В типовых правилах выгрузки при переносе остатков выборка по начислениям формируется запросом к регистрам базы-источника. При наличии в одном расчетном месяце нескольких премий с разными базовыми периодами (например, 3 месяца и 12 месяцев) запрос объединяет суммы начислений по сотруднику и месяцу регистрации. В результате в базе-приемнике создаются две отдельные строки регистра, но в поле суммы каждой из них ошибочно записывается общий свернутый итог за месяц.

В конфигурации 1С:ЗГУ 3 (ЗУП 3.1) данные для расчета среднего заработка за прошлые периоды хранятся в документе Перенос данных с соответствующим маркером (обычно СЗ или ЗП_СЗ). Движения формируются по регистру накопления Данные о начислениях для расчета среднего заработка (общий).

Механизм расчета среднего заработка разделяет премии по категориям и базовым периодам (параметры БазовыйПериодКоличествоМесяцев, БазовыйПериодНачало). Если в регистре сумма уже задвоена, алгоритм расчета среднего берет ее как готовую базу, что приводит к грубым искажениям и переплатам сотрудникам.

Способ 1. Программная корректировка документов переноса через обработку

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

Разберем алгоритм исправления по шагам:

  1. Получаем правильные исходные данные из базы-источника (через COM-соединение V83.COMConnector или путем выгрузки таблицы соответствий: сотрудник, вид премии, базовый период, точная сумма).
  2. В базе 3.1 находим документы Перенос данных, содержащие движения по регистру накопления Данные о начислениях для расчета среднего заработка (общий) за проблемный период.
  3. Считываем набор записей регистра, находим задвоенные строки и перезаписываем корректные суммы, сохраняя правильную привязку к периодам.

Посмотрим на пример программной обработки набора записей регистра накопления:


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

Для Каждого Запись Из НаборЗаписей Цикл
    // Проверяем принадлежность к проблемному расчетному месяцу и типу начисления
    Если Запись.Период = Дата("20171201") И Запись.СтатьяКалькуляции = Справочники.СтатьиКалькуляции.ПремияКвартальная Тогда
        // Подставляем корректную сумму из таблицы соответствий или базы-источника
        Запись.Сумма = РеальнаяСуммаКвартальнойПремии;
    ИначеЕсли Запись.Период = Дата("20171201") И Запись.СтатьяКалькуляции = Справочники.СтатьиКалькуляции.ПремияГодовая Тогда
        Запись.Сумма = РеальнаяСуммаГодовойПремии;
    КонецЕсли;
КонецЦикла;

НаборЗаписей.Записать();

Способ 2. Исправление правил обмена и выборочная перезагрузка

Если эксплуатация базы только начинается, можно скорректировать правила конвертации данных и повторить перенос за проблемный месяц:

  1. Создаем копию базы данных для тестирования.
  2. В конфигурации «1С:Конвертация данных 2» открываем правила обмена ЗКБУ 1.0 → ЗГУ 3 (или ЗУП 2.5 → ЗУП 3.1).
  3. В правилах выгрузки данных (ПВД) или правилах конвертации объектов (ПКО), отвечающих за перенос среднего заработка по премиям, находим запрос выборки. В тексте запроса исключаем группировку сумм только по периоду регистрации и добавляем разрез по конкретным начислениям и их базовым периодам.
  4. Выполняем выгрузку остатков по среднему заработку за декабрь в тестовую базу.
  5. Проверяем расчет отпускных за январь. После успешной проверки заменяем документы переноса среднего заработка в рабочей базе.

Важные особенности учета

Обратите внимание: стандартная сервисная обработка Обновить данные для расчета среднего заработка в ЗГУ 3 / ЗУП 3.1 не поможет исправить исторические данные. Она пересчитывает движения только на основании проведенных документов начислений редакции 3. Данные до даты начала эксплуатации берутся исключительно из регистров документов Перенос данных.

Также типовая обработка Групповое изменение реквизитов не позволяет точечно скорректировать строки в табличных частях наборов записей с разделением сумм, поэтому точечная программная обработка движений является наиболее надежным и быстрым решением проблемы.

← На главную