При реорганизации предприятий, слиянии подразделений или переходе на новые информационные базы бухгалтеры часто сталкиваются с необходимостью ручного переноса данных о заработной плате сотрудников за предыдущие периоды. В программе 1С:Зарплата и Управление Персоналом, редакция 3.1 (1С:ЗУП 3.1) для этих целей традиционно используется специализированный документ Перенос данных.
Однако на практике возникает крайне неприятная ситуация: при оформлении очередного отпуска перенесенные суммы начислений успешно учитываются в расчете среднего заработка, а вот отработанное время (дни и часы) в табличной части расчета среднего остается нулевым. Из-за этого средний заработок рассчитывается некорректно, существенно завышая или занижая итоговую сумму отпускных.
В этой статье мы подробно разберем, почему возникает эта проблема, какие скрытые механизмы платформы 1С влияют на считывание данных о времени и как пошагово исправить ситуацию, чтобы программа видела каждый отработанный день.
Прежде чем переходить к исправлению ошибок, проанализируем, как именно конфигурация 1С:ЗУП 3.1 собирает информацию для расчета среднего заработка. В отличие от старых версий (например, ЗУП 2.5), где расчет производился напрямую по записям основных начислений, в редакции 3.1 реализован регистровый принцип.
При проведении документов начисления зарплаты или при ручном вводе через Перенос данных программа делает записи в специализированные регистры накопления:
Данные о начислениях для расчета среднего (общий) — здесь аккумулируются все суммы, которые формируют базу для расчета отпускных, командировок и других аналогичных событий.Данные о времени для расчета среднего (общий) — именно этот регистр отвечает за хранение информации об отработанных днях, часах и календарных днях за каждый месяц расчетного периода.Если при заполнении документа Перенос данных записи в первый регистр выполнены корректно, а во второй — с ошибками (даже самыми неочевидными), мы получим ситуацию, когда «деньги есть, а времени нет». Рассмотрим основные технические причины этой проблемы и способы их решения.
Это самый распространенный «подводный камень» при ручном заполнении или программном переносе данных. В регистре накопления Данные о времени для расчета среднего (общий) ключевым полем является Период.
Для корректной работы алгоритмов 1С дата в поле Период должна отвечать двум строгим правилам:
01.01.2023, а не 31.01.2023). Если указать конец месяца, программа проигнорирует запись при расчете среднего.Если при переносе данных или копировании строк в поле записалось время создания документа или конец суток (например, 01.01.2023 18:24:12 или 01.01.2023 23:59:59), то при проведении документа Начисление отпуска встроенный запрос системы просто не увидит эти записи. Суммы при этом могут подтягиваться, так как алгоритмы работы с регистром начислений менее чувствительны к секундам, а вот время будет потеряно.
Решение: Проверьте каждую строчку в документе Перенос данных по регистру времени. Убедитесь, что даты имеют вид ДД.ММ.ГГГГ 00:00:00 и указывают на первый день месяца.
Для расчета среднего заработка для отпусков (согласно Постановлению Правительства РФ № 922) ключевым показателем является количество календарных дней в неполных месяцах или нормативный коэффициент 29.3 для полностью отработанных месяцев.
Программа 1С:ЗУП 3.1 вычисляет эти показатели, основываясь исключительно на ресурсе Отработано дней календарных в регистре накопления данных о времени. Очень часто при ручном заполнении пользователи переносят только рабочие дни по пятидневке (например, 21 день) и рабочие часы (168 часов), оставляя колонку календарных дней пустой или заполняя ее нулевым значением.
Если колонка Отработано дней календарных не заполнена, система считает, что сотрудник в этом месяце не имел учитываемого времени для расчета отпуска, и в форме расчета среднего заработка вы увидите нули.
Решение: При заполнении регистра накопления для каждого месяца обязательно заполняйте ресурс Отработано дней календарных. Если месяц отработан сотрудником полностью, укажите реальное количество календарных дней в этом месяце (30, 31 или 28/29 для февраля). Если месяц отработан частично, рассчитайте и укажите количество календарных дней, приходящихся на отработанное время.
В регистре Данные о времени для расчета среднего (общий) присутствует обязательный реквизит Порядок расчета. Он указывает системе, для каких именно целей должны использоваться эти данные о времени.
Существует два основных порядка расчета:
Если это поле оставить пустым или по ошибке выбрать значение для расчета пособий соцстраха, то при расчете отпуска программа отфильтрует эти записи и не включит их в расчетную таблицу времени.
Решение: Убедитесь, что в каждой строке перенесенных данных о времени в колонке Порядок расчета выбрано предопределенное значение, соответствующее Постановлению № 922.
Архитектура 1С:ЗУП 3.1 включает механизмы вытеснения и ручных корректировок. Помимо основного регистра накопления, в системе существуют регистры сведений, которые могут перекрывать или обнулять введенные вами данные:
Сведения о времени для расчета среднего (общий)Данные о времени для расчета общего среднего заработка (корректировка)Если по сотруднику ранее вводились ручные исправления времени непосредственно внутри документов (например, бухгалтер вручную правил дни в форме расчета среднего прямо в документе отпуска), эти исправления записываются в данные регистры сведений с «минусовыми» или корректирующими значениями. При проведении нового расчета система объединяет данные регистра накопления и регистров сведений, что может привести к полному обнулению времени.
Решение: Проанализируйте движения по этим регистрам сведений с помощью встроенного отчета или консоли запросов. При обнаружении некорректных корректировочных записей по проблемным сотрудникам — очистите или скорректируйте их.
Если сотрудников много, ручное исправление дат и времени в документе Перенос данных может занять колоссальное количество времени. В такой ситуации рационально воспользоваться групповой обработкой или написать простую обработку на встроенном языке 1С, которая приведет все записи к нужному формату.
Рассмотрим пример кода, который нормализует время периода и проставляет корректный порядок расчета для регистра накопления данных о времени:
// Выбираем все проведенные документы "Перенос данных" за нужный период
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПереносДанных.Ссылка КАК Ссылка
|ИЗ
| Документ.ПереносДанных КАК ПереносДанных
|ГДЕ
| ПереносДанных.Проведен = ИСТИНА";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ДокументОбъект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
Модифицирован = Ложь;
// Получаем движения по регистру данных о времени
ДвиженияВремени = ДокументОбъект.Движения.ДанныеОВремениДляРасчетаСреднегоОбщий;
ДвиженияВремени.Прочитать();
Для Каждого СтрокаДвижения Из ДвиженияВремени Цикл
// 1. Принудительно устанавливаем время на 00:00:00 первого числа месяца
НоваяДата = НачалоМесяца(СтрокаДвижения.Период);
Если СтрокаДвижения.Период <> НоваяДата Тогда
СтрокаДвижения.Период = НоваяДата;
Модифицирован = Истина;
КонецЕсли;
// 2. Проверяем и заполняем порядок расчета по Постановлению 922
Если СтрокаДвижения.ПорядокРасчета <> Перечисления.ПорядокРасчетаСреднегоЗаработка.Постановление922 Тогда
СтрокаДвижения.ПорядокРасчета = Перечисления.ПорядокРасчетаСреднегоЗаработка.Постановление922;
Модифицирован = Истина;
КонецЕсли;
КонецЦикла;
// Если были изменения, записываем движения и сам документ
Если Модифицирован Тогда
ДвиженияВремени.Записать();
ДокументОбъект.Записать(РежимЗаписиДокумента.Запись);
Сообщить("Успешно обработан документ: " + ДокументОбъект.Ссылка);
КонецЕсли;
КонецЦикла;
Применение подобной автоматизации гарантирует, что все технические реквизиты записей примут строго регламентированный вид, и алгоритмы расчета среднего заработка смогут беспрепятственно прочитать данные.
Для того чтобы избежать проблем с расчетом среднего заработка у сотрудников при переносе данных, всегда проверяйте заполнение регистров по следующему чеклисту:
01.05.2023). Время должно быть равно 00:00:00.Постановление 922.Отработано дней календарных заполнена физическим количеством дней.Настройки — Расчет зарплаты отключите опцию Сведения для расчета общего среднего заработка принимать к учету для расчета пособий (и наоборот), если она активирована, так как данный функционал часто вызывает конфликты при чтении ручных записей регистров.Соблюдение этих правил обеспечит стабильную работу программы и избавит бухгалтера от необходимости ручной корректировки отпускных и командировочных начислений.