Почему после переноса из ЗУП 2.5 в ЗУП 3.1 искажаются данные о времени для расчета среднего заработка?

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

При выполнении переноса данных из программы «1С:Зарплата и Управление Персоналом 2.5» в редакцию 3.1 специалисты часто сталкиваются с ситуацией, когда данные об отработанном времени для расчета среднего заработка формируются с явными ошибками. Рассмотрим подробнее, почему возникает эта проблема, в каких регистрах хранятся эти сведения и как правильно их исправить.

Симптомы и проявление проблемы в ЗУП 3.1

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

Проанализируем типичный пример проявления ошибки:

  1. Фактически отработанные дни по пятидневке: 15 дней / 120 часов (верно).
  2. Дней по календарю / шестидневке: 35 или 44 дня вместо корректных значений (завышено более чем в два раза).

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

Причина ошибки: рассинхронизация виртуальных таблиц в ЗУП 2.5

Выясним причину такого поведения системы. В программе ЗУП 3.1 вся информация о времени берется из регистра накопления Данные о времени для расчета среднего заработка (общий). В свою очередь, правила переноса из ЗУП 2.5 выбирают информацию из регистра расчета ОсновныеНачисленияРаботников (или РасчетСреднегоЗаработка), а именно из его виртуальной таблицы ФактическийПериодДействия.

Виртуальная таблица фактического периода формируется платформой 1С динамически на основе настроек вытеснения, периода действия и периода регистрации. Задвоение записей в этой виртуальной таблице происходит по следующим причинам:

  1. Ввод документов задним числом: Если отпуска, больничные или командировки вводились после расчета заработной платы без последующего пересчета записей регистра.
  2. Изменение настроек приоритета видов расчета: Если настройки вытеснения менялись уже после того, как были проведены документы начислений.
  3. Сбой в индексах или таблицах итогов: Коррупция виртуальных срезов при интенсивной работе или аварийном завершении работы СУБД.

В результате в базе ЗУП 2.5 сам результат начисления равен корректной сумме, но виртуальная таблица ФактическийПериодДействия содержит дублирующиеся пересекающиеся интервалы. Правила переноса данных обращаются именно к этой виртуальной таблице и суммируют все найденные отрезки времени.

Способы решения проблемы

Разберем варианты исправления ошибки в зависимости от того, на каком этапе вы находитесь.

Вариант 1. Исправление данных в исходной базе ЗУП 2.5 (до переноса)

Если процесс перехода еще не завершен окончательно, наиболее правильным решением будет устранение первичного источника задвоения в базе 2.5.

  1. Перепроведение документов: Выявите документы-источники отклонений за расчетный период (12 месяцев) по проблемным сотрудникам и перепроведите их вместе с документами начисления зарплаты.
  2. Перезапись наборов записей регистра расчета: Чтобы не снимать проведения с закрытых периодов, можно программно перезаписать наборы записей регистра расчета ОсновныеНачисленияРаботников. Метод записи заставит платформу 1С заново сформировать виртуальную таблицу фактического периода.

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


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

// Запись набора без изменения данных обновляет виртуальные таблицы
ОтборРегистра.Записать(Истина);

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

Вариант 2. Корректировка перенесенных данных в ЗУП 3.1

Если повторный перенос из старой базы невозможен или трудоемок, скорректируйте данные непосредственно в ЗУП 3.1:

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