При переходе с редакции 2.5 на 3.1 конфигурации «Зарплата и управление персоналом» пользователи часто сталкиваются с аномальным поведением программы при расчете отпусков или командировок. Типичный симптом: в графе «Отработано дней (календ.)» отображаются нереальные числа, например, 55 или 58 дней для февраля. Это напрямую влияет на итоговую сумму, занижая средний заработок сотрудника. Разберем подробно причины возникновения этой ошибки и способы ее устранения.
Для начала проанализируем, как система ЗУП 3.1 собирает данные для расчета среднего заработка. В отличие от старых редакций, здесь информация аккумулируется в нескольких источниках одновременно. Рассмотрим основные регистры:
Данные о времени для расчета среднего (общий) — сюда записываются сведения, формируемые «естественным» путем при проведении документов начисления зарплаты и табелей непосредственно в текущей базе 3.1.Данные о времени для расчета среднего (корректировка) — этот регистр предназначен для хранения данных, перенесенных из предыдущих программ (ЗУП 2.5), или для внесения ручных правок пользователем.Выясним причину проблемы: при формировании печатной формы или расчете документа программа выполняет запрос, который суммирует показатели из обоих этих регистров за один и тот же период. Если один и тот же месяц представлен и в регистре накопления, и в регистре сведений, мы получаем «задвоение» или «удвоение» дней.
Проанализируем ситуацию, когда в феврале вместо 28 дней программа видит 55. Это происходит из-за наложения периодов при разных типах переноса данных:
Данные о времени для расчета среднего (общий). При этом в регистре сведений Данные о времени для расчета среднего (корректировка) уже лежат данные, созданные обработкой переноса.Перенос данных, записи в независимом регистре сведений могут остаться «сиротами», продолжая влиять на расчет.Посмотрим на самый эффективный способ решения проблемы, если количество ошибочных записей велико. Поскольку регистр Данные о времени для расчета среднего (корректировка) независимый, его можно очистить программно. Рассмотрим логику работы такой обработки:
// Пример логики для очистки регистра программным способом
НаборЗаписей = РегистрыСведений.ДанныеОВремениДляРасчетаСреднегоКорректировка.СоздатьНаборЗаписей();
// Если нужно очистить по конкретному сотруднику или периоду, устанавливаем отбор
// НаборЗаписей.Отбор.Сотрудник.Установить(ВыбранныйСотрудник);
НаборЗаписей.Записать(); // Пустой набор записей стирает данные в регистре
После очистки этого регистра система перестанет суммировать «старые» перенесенные данные с «новыми» расчетными данными из регистра накопления. Дни в расчете среднего придут в норму.
Если мы не хотим прибегать к написанию кода или внешним обработкам, воспользуемся встроенным инструментом. Разберем по шагам:
Регистр сведений "Данные о времени для расчета среднего заработка (корректировка)".Рассмотрим математическую сторону вопроса. Формула расчета среднего заработка для отпуска выглядит следующим образом:
Средний заработок = Начисления за расчетный период / (Количество отработанных месяцев * 29.3 + Отработанные дни в неполных месяцах)
Когда у нас в знаменателе вместо положенных 28 дней стояло 55, делитель был искусственно завышен. Следовательно, итоговое значение среднего заработка за один день было значительно ниже реального. После того как мы очистили регистр и привели количество дней к фактическому значению, знаменатель уменьшился, а итоговая сумма среднего заработка выросла. Это абсолютно корректно и подтверждает правильность проведенных манипуляций.
Чтобы избежать подобных проблем в будущем, рекомендуем придерживаться следующего алгоритма действий при переходе с 2.5 на 3.1:
ЗП_СЗО или ГР_СЗО. Именно они отвечают за наполнение регистров среднего заработка.Данные о времени для расчета среднего (общий) и регистру сведений Данные о времени для расчета среднего (корректировка). Сравните их в Excel. Если за одни и те же месяцы данные есть в обоих регистрах — это 100% причина задвоения.корректировка и не перепроводить старые документы начислений. Если же вы делаете полный перенос — будьте готовы к ручной очистке корректировочных регистров за те периоды, которые вы решили пересчитать в новой базе.Таким образом, мы выяснили, что проблема «лишних дней» в среднем заработке — это результат наложения данных из двух разных механизмов хранения 1С:Предприятия. Своевременная очистка независимого регистра сведений позволяет быстро вернуть расчеты в корректное русло.