При выполнении переноса данных из программы «1С:Зарплата и Управление Персоналом 2.5» в редакцию 3.1 специалисты часто сталкиваются с ситуацией, когда данные об отработанном времени для расчета среднего заработка формируются с явными ошибками. Рассмотрим подробнее, почему возникает эта проблема, в каких регистрах хранятся эти сведения и как правильно их исправить.
После завершения процедуры переноса при проверке регистра накопления Данные о времени для расчета среднего заработка (общий) в ЗУП 3.1 вы можете обнаружить завышенные показатели по сотрудникам, у которых в периоде расчета были отпуска или другие отклонения.
Проанализируем типичный пример проявления ошибки:
При этом сам оклад в исходной базе ЗУП 2.5 мог быть рассчитан абсолютно верно — с учетом вытеснения днями отпуска. Однако при переносе правил конвертации выгружаемые данные оказываются искаженными.
Выясним причину такого поведения системы. В программе ЗУП 3.1 вся информация о времени берется из регистра накопления Данные о времени для расчета среднего заработка (общий). В свою очередь, правила переноса из ЗУП 2.5 выбирают информацию из регистра расчета ОсновныеНачисленияРаботников (или РасчетСреднегоЗаработка), а именно из его виртуальной таблицы ФактическийПериодДействия.
Виртуальная таблица фактического периода формируется платформой 1С динамически на основе настроек вытеснения, периода действия и периода регистрации. Задвоение записей в этой виртуальной таблице происходит по следующим причинам:
В результате в базе ЗУП 2.5 сам результат начисления равен корректной сумме, но виртуальная таблица ФактическийПериодДействия содержит дублирующиеся пересекающиеся интервалы. Правила переноса данных обращаются именно к этой виртуальной таблице и суммируют все найденные отрезки времени.
Разберем варианты исправления ошибки в зависимости от того, на каком этапе вы находитесь.
Если процесс перехода еще не завершен окончательно, наиболее правильным решением будет устранение первичного источника задвоения в базе 2.5.
ОсновныеНачисленияРаботников. Метод записи заставит платформу 1С заново сформировать виртуальную таблицу фактического периода.Пример кода для программного пересчета набора записей регистра расчета за выбранный период:
ОтборРегистра = РегистрыРасчета.ОсновныеНачисленияРаботников.СоздатьНаборЗаписей();
ОтборРегистра.Отбор.ПериодРегистрации.Значение = ДатаРасчетногоПериода;
ОтборРегистра.Отбор.ПериодРегистрации.Использование = Истина;
ОтборРегистра.Прочитать();
// Запись набора без изменения данных обновляет виртуальные таблицы
ОтборРегистра.Записать(Истина);
После перезаписи наборов записей или перепроведения документов выполните перенос данных в ЗУП 3.1 повторно.
Если повторный перенос из старой базы невозможен или трудоемок, скорректируйте данные непосредственно в ЗУП 3.1:
ЗП_СЗО (данные о заработке и времени для расчета среднего заработка).Данные о времени для расчета среднего заработка (общий), приведя количество календарных и шестидневных дней к корректным показателям.Обновить данные для расчета среднего заработка (доступна в разделе Зарплата — Сервис).