При расчете заработной платы в программе 1С:Зарплата и управление персоналом 3.1 (ЗУП) расчетчики иногда сталкиваются с крайне неприятной ситуацией. Сотрудник отправляется в длительную командировку, которая начинается в конце одного месяца (например, 27 января) и завершается строго первого числа следующего месяца (например, 1 февраля). При проведении расчета за февраль программа ведет себя некорректно: вместо того чтобы начислить оплату по среднему заработку только за один день (1 февраля), а за оставшуюся часть месяца рассчитать обычный оклад, система полностью заполняет февраль командировочными начислениями.
В этой статье мы подробно разберем, почему возникает эта проблема, проанализируем движения по внутренним регистрам программы, рассмотрим временные обходные пути для старых релизов и изучим, как этот механизм эволюционировал в современных версиях 1С:ЗУП 3.1.
Для того чтобы понять, откуда берется это некорректное поведение, нам необходимо заглянуть под капот программы и проанализировать работу ее регистров. В 1С:ЗУП 3.1 за фиксацию состояний сотрудников и их плановых начислений отвечают несколько ключевых регистров сведений:
РегистрСведений.ДанныеСостоянийСотрудников — хранит информацию о том, в каком состоянии находится работник в конкретный период (работа, командировка, болезнь, отпуск и т.д.).РегистрСведений.ПлановыеНачисления (а также его интервальная версия) — определяет, какие начисления должны рассчитываться сотруднику и в какие интервалы времени.Когда мы проводим документ Командировка с установленным флагом «Оплачивать в конце месяца» (в старых релизах), система должна зафиксировать окончание особого состояния строго в дату завершения командировки.
Однако в алгоритме разбиения периодов конфигурации существовала критическая программная ошибка с кодом 30171994. Если дата окончания длящегося события (будь то командировка или даже пособие по уходу за ребенком до 1,5 лет) приходилась ровно на 1-е число месяца, то механизм расчета интервалов давал сбой. Вместо того чтобы закрыть состояние командировки первым числом и вернуть сотруднику его стандартные плановые начисления (например, оклад) со 2-го числа, система ошибочно пролонгировала состояние «Командировка» на весь оставшийся месяц. В результате документ Начисление зарплаты и взносов дробил месяц на две некорректных записи: первая — с 01.02 по 01.02, вторая — с 02.02 по 28.02 (или 29.02), причем обе рассчитывались по среднему заработку.
Если на вашем предприятии используется релиз 1С:ЗУП ниже 3.1.13.120 и у вас нет возможности оперативно обновить конфигурацию, рассмотрим три проверенных временных обходных пути, которые помогут начислить зарплату сотруднику корректно.
Этот метод является наиболее экологичным с точки зрения регистров системы, так как он принудительно заставляет программу правильно закрыть периоды на стыке месяцев.
Командировка, зарегистрированный в январе.Командировка строго на один день следующего месяца — с 01.02 по 01.02.ДанныеСостоянийСотрудников и ПлановыеНачисления сформируют корректные интервалы. Со 2 февраля у сотрудника автоматически возобновится его основное плановое начисление (оклад).Если вы ведете учет рабочего времени с помощью документов Табель, то данный способ позволит оперативно перекрыть ошибочное состояние в расчете зарплаты без изменения кадровых приказов.
Табель за проблемный месяц (в нашем примере — за февраль).Табель.Начисление зарплаты и взносов. Программа увидит явку в табеле и начислит оклад за отработанное время, проигнорировав некорректный интервал плановых начислений.Самый быстрый способ «здесь и сейчас», если зарплату нужно выдать срочно, а разбираться с кадровыми документами нет времени.
Начисление зарплаты и взносов перейдем на вкладку «Начисления».Оплата по окладу).Описанная проблема была официально признана разработчиками фирмы «1С» под кодом ошибки 30171994. Она была полностью исправлена, начиная с версии конфигурации 3.1.13.120.
Если вы регулярно сталкиваетесь с подобными переходящими событиями, самым правильным решением будет обновление вашей конфигурации до актуального релиза. После обновления программный код проведения документов будет корректно отрабатывать завершение вытесняющих состояний, приходящихся на первое число месяца.
Давайте проанализируем, как развивался этот функционал в программе далее. Начиная с релиза 3.1.25.36, разработчики кардинально переработали архитектуру учета и расчета переходящих командировок. Это было обусловлено в том числе масштабными изменениями в законодательстве по НДФЛ и расчету авансов.
Устаревший флаг «Длительные командировки оплачивать помесячно» в настройках состава начислений был полностью упразднен. Вместо него теперь на уровне системы по умолчанию применяется более гибкая логика.
В современном документе Командировка на вкладке «Главное» пользователям доступны три принципиально разных варианта расчета переходящего периода:
Командировка рассчитывается и оплачивается только та часть, которая приходится на текущий (первый) месяц. На оставшуюся часть переходящего периода сотруднику автоматически назначается временное плановое начисление. Оплата за оставшиеся дни в последующих месяцах будет рассчитываться автоматически при начислении аванса (за первую половину месяца) и зарплаты (за весь месяц) по среднему заработку, зафиксированному в исходном документе.Командировка выступает как чисто кадровый регистратор. Расчет в нем не производится вообще. Все начисления по среднему заработку за все месяцы командировки будут выполняться непосредственно в документах начисления аванса и зарплаты соответствующих месяцев.Благодаря этой новой архитектуре, когда на переходящие периоды сотрудникам назначаются четко контролируемые временные плановые начисления, старые ошибки с некорректным «растягиванием» вытесняющих состояний на весь последующий месяц были устранены на уровне самой логики конфигурации 1С:ЗУП.