Почему при переносе данных в 1С:ЗУП 3.1 начисления попадают в расчет среднего заработка, а время — нет?

Бухгалтер 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом Бухгалтерский учет
← На главную

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

Однако на практике возникает крайне неприятная ситуация: при оформлении очередного отпуска перенесенные суммы начислений успешно учитываются в расчете среднего заработка, а вот отработанное время (дни и часы) в табличной части расчета среднего остается нулевым. Из-за этого средний заработок рассчитывается некорректно, существенно завышая или занижая итоговую сумму отпускных.

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

Архитектура учета времени для среднего заработка в 1С:ЗУП 3.1

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

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

  1. Данные о начислениях для расчета среднего (общий) — здесь аккумулируются все суммы, которые формируют базу для расчета отпускных, командировок и других аналогичных событий.
  2. Данные о времени для расчета среднего (общий) — именно этот регистр отвечает за хранение информации об отработанных днях, часах и календарных днях за каждый месяц расчетного периода.

Если при заполнении документа Перенос данных записи в первый регистр выполнены корректно, а во второй — с ошибками (даже самыми неочевидными), мы получим ситуацию, когда «деньги есть, а времени нет». Рассмотрим основные технические причины этой проблемы и способы их решения.

Причина 1. Неверный формат даты и критическая важность времени (00:00:00)

Это самый распространенный «подводный камень» при ручном заполнении или программном переносе данных. В регистре накопления Данные о времени для расчета среднего (общий) ключевым полем является Период.

Для корректной работы алгоритмов 1С дата в поле Период должна отвечать двум строгим правилам:

  1. Она должна быть установлена строго на первое число расчетного месяца (например, 01.01.2023, а не 31.01.2023). Если указать конец месяца, программа проигнорирует запись при расчете среднего.
  2. Время этой даты должно быть строго равно 00:00:00.

Если при переносе данных или копировании строк в поле записалось время создания документа или конец суток (например, 01.01.2023 18:24:12 или 01.01.2023 23:59:59), то при проведении документа Начисление отпуска встроенный запрос системы просто не увидит эти записи. Суммы при этом могут подтягиваться, так как алгоритмы работы с регистром начислений менее чувствительны к секундам, а вот время будет потеряно.

Решение: Проверьте каждую строчку в документе Перенос данных по регистру времени. Убедитесь, что даты имеют вид ДД.ММ.ГГГГ 00:00:00 и указывают на первый день месяца.

Причина 2. Пустой ресурс «Отработано дней календарных»

Для расчета среднего заработка для отпусков (согласно Постановлению Правительства РФ № 922) ключевым показателем является количество календарных дней в неполных месяцах или нормативный коэффициент 29.3 для полностью отработанных месяцев.

Программа 1С:ЗУП 3.1 вычисляет эти показатели, основываясь исключительно на ресурсе Отработано дней календарных в регистре накопления данных о времени. Очень часто при ручном заполнении пользователи переносят только рабочие дни по пятидневке (например, 21 день) и рабочие часы (168 часов), оставляя колонку календарных дней пустой или заполняя ее нулевым значением.

Если колонка Отработано дней календарных не заполнена, система считает, что сотрудник в этом месяце не имел учитываемого времени для расчета отпуска, и в форме расчета среднего заработка вы увидите нули.

Решение: При заполнении регистра накопления для каждого месяца обязательно заполняйте ресурс Отработано дней календарных. Если месяц отработан сотрудником полностью, укажите реальное количество календарных дней в этом месяце (30, 31 или 28/29 для февраля). Если месяц отработан частично, рассчитайте и укажите количество календарных дней, приходящихся на отработанное время.

Причина 3. Неверное заполнение реквизита «Порядок расчета»

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

Существует два основных порядка расчета:

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

Решение: Убедитесь, что в каждой строке перенесенных данных о времени в колонке Порядок расчета выбрано предопределенное значение, соответствующее Постановлению № 922.

Причина 4. Влияние регистров сведений и корректировок времени

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

Если по сотруднику ранее вводились ручные исправления времени непосредственно внутри документов (например, бухгалтер вручную правил дни в форме расчета среднего прямо в документе отпуска), эти исправления записываются в данные регистры сведений с «минусовыми» или корректирующими значениями. При проведении нового расчета система объединяет данные регистра накопления и регистров сведений, что может привести к полному обнулению времени.

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

Практический пример: как быстро исправить ошибки программно

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

Рассмотрим пример кода, который нормализует время периода и проставляет корректный порядок расчета для регистра накопления данных о времени:


// Выбираем все проведенные документы "Перенос данных" за нужный период
Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	ПереносДанных.Ссылка КАК Ссылка
    |ИЗ
    |	Документ.ПереносДанных КАК ПереносДанных
    |ГДЕ
    |	ПереносДанных.Проведен = ИСТИНА";

РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    ДокументОбъект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
    Модифицирован = Ложь;
    
    // Получаем движения по регистру данных о времени
    ДвиженияВремени = ДокументОбъект.Движения.ДанныеОВремениДляРасчетаСреднегоОбщий;
    ДвиженияВремени.Прочитать();
    
    Для Каждого СтрокаДвижения Из ДвиженияВремени Цикл
        // 1. Принудительно устанавливаем время на 00:00:00 первого числа месяца
        НоваяДата = НачалоМесяца(СтрокаДвижения.Период);
        Если СтрокаДвижения.Период <> НоваяДата Тогда
            СтрокаДвижения.Период = НоваяДата;
            Модифицирован = Истина;
        КонецЕсли;
        
        // 2. Проверяем и заполняем порядок расчета по Постановлению 922
        Если СтрокаДвижения.ПорядокРасчета <> Перечисления.ПорядокРасчетаСреднегоЗаработка.Постановление922 Тогда
            СтрокаДвижения.ПорядокРасчета = Перечисления.ПорядокРасчетаСреднегоЗаработка.Постановление922;
            Модифицирован = Истина;
        КонецЕсли;
    КонецЦикла;
    
    // Если были изменения, записываем движения и сам документ
    Если Модифицирован Тогда
        ДвиженияВремени.Записать();
        ДокументОбъект.Записать(РежимЗаписиДокумента.Запись);
        Сообщить("Успешно обработан документ: " + ДокументОбъект.Ссылка);
    КонецЕсли;
КонецЦикла;

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

Резюме и чеклист для проверки

Для того чтобы избежать проблем с расчетом среднего заработка у сотрудников при переносе данных, всегда проверяйте заполнение регистров по следующему чеклисту:

  1. Период записи: Строго первое число соответствующего месяца (например, 01.05.2023). Время должно быть равно 00:00:00.
  2. Порядок расчета: Указано предопределенное значение Постановление 922.
  3. Ресурсы времени: Колонка Отработано дней календарных заполнена физическим количеством дней.
  4. Производственный календарь: Проверьте, заполнен ли производственный календарь в базе за переносимые прошлые периоды (без этого программа не сможет рассчитать норму времени).
  5. Настройки программы: В меню Настройки — Расчет зарплаты отключите опцию Сведения для расчета общего среднего заработка принимать к учету для расчета пособий (и наоборот), если она активирована, так как данный функционал часто вызывает конфликты при чтении ручных записей регистров.

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

← На главную