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

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

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

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

Выясняем причину: техническая суть ошибки 30171994

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

Когда мы проводим документ Командировка с установленным флагом «Оплачивать в конце месяца» (в старых релизах), система должна зафиксировать окончание особого состояния строго в дату завершения командировки.

Однако в алгоритме разбиения периодов конфигурации существовала критическая программная ошибка с кодом 30171994. Если дата окончания длящегося события (будь то командировка или даже пособие по уходу за ребенком до 1,5 лет) приходилась ровно на 1-е число месяца, то механизм расчета интервалов давал сбой. Вместо того чтобы закрыть состояние командировки первым числом и вернуть сотруднику его стандартные плановые начисления (например, оклад) со 2-го числа, система ошибочно пролонгировала состояние «Командировка» на весь оставшийся месяц. В результате документ Начисление зарплаты и взносов дробил месяц на две некорректных записи: первая — с 01.02 по 01.02, вторая — с 02.02 по 28.02 (или 29.02), причем обе рассчитывались по среднему заработку.

Как решить проблему в программах старых версий (до релиза 3.1.13.120)

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

Способ №1: Разбиение исходной командировки на два документа

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

  1. Откроем исходный документ Командировка, зарегистрированный в январе.
  2. Изменим дату окончания в этом документе на последний день месяца — 31.01. Проведем документ.
  3. Создадим новый документ Командировка строго на один день следующего месяца — с 01.02 по 01.02.
  4. Проведем новый документ. Благодаря такому разделению, регистры ДанныеСостоянийСотрудников и ПлановыеНачисления сформируют корректные интервалы. Со 2 февраля у сотрудника автоматически возобновится его основное плановое начисление (оклад).

Способ №2: Принудительное заполнение документа «Табель»

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

  1. Создадим документ Табель за проблемный месяц (в нашем примере — за февраль).
  2. Найдем в табличной части нашего сотрудника. Система по умолчанию может заполнить весь февраль кодами «К» (Командировка).
  3. Вручную скорректируем записи в табеле: на 1-е число оставим код «К» (или выходной, если это суббота/воскресенье), а начиная со 2-го числа принудительно проставим рабочие дни с кодом «Я» (Явка) и соответствующим количеством часов согласно графику сотрудника.
  4. Проведем документ Табель.
  5. Пересчитаем сотрудника в документе Начисление зарплаты и взносов. Программа увидит явку в табеле и начислит оклад за отработанное время, проигнорировав некорректный интервал плановых начислений.

Способ №3: Ручная корректировка в документе начисления зарплаты

Самый быстрый способ «здесь и сейчас», если зарплату нужно выдать срочно, а разбираться с кадровыми документами нет времени.

  1. В документе Начисление зарплаты и взносов перейдем на вкладку «Начисления».
  2. Найдем ошибочную вторую строку с командировкой (за период со 2-го по последнее число месяца) и удалим ее.
  3. Нажмем кнопку «Добавить», выберем нашего сотрудника и укажем его плановое начисление (например, Оплата по окладу).
  4. В колонках периода укажем даты со 2-го по последнее число месяца.
  5. Рассчитаем сумму и показатели (отработанные дни и часы) вручную или воспользуемся кнопкой пересчета строки.

Официальное исправление ошибки разработчиками 1С

Описанная проблема была официально признана разработчиками фирмы «1С» под кодом ошибки 30171994. Она была полностью исправлена, начиная с версии конфигурации 3.1.13.120.

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

Эволюция механизма переходящих командировок в новых версиях ЗУП 3.1

Давайте проанализируем, как развивался этот функционал в программе далее. Начиная с релиза 3.1.25.36, разработчики кардинально переработали архитектуру учета и расчета переходящих командировок. Это было обусловлено в том числе масштабными изменениями в законодательстве по НДФЛ и расчету авансов.

Устаревший флаг «Длительные командировки оплачивать помесячно» в настройках состава начислений был полностью упразднен. Вместо него теперь на уровне системы по умолчанию применяется более гибкая логика.

В современном документе Командировка на вкладке «Главное» пользователям доступны три принципиально разных варианта расчета переходящего периода:

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

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

← На главную