Как предотвратить некорректное изменение периода стимулирующей выплаты в среднем заработке при исправлении отпуска в 1С:ЗУП 3.1

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

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

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

Суть проблемы и причины её возникновения

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

Проанализируем причину такого поведения. Основная сложность заключается в работе механизма предварительных движений по регистру накопления ДанныеДляРасчетаСреднегоЗаработкаОбщий. Когда документ исправления создается в том же расчетном периоде, что и исправляемый документ, таблица Перерасчет начислений часто остается пустой. Алгоритмы 1С при формировании движений по среднему заработку начинают некорректно определять «первичный» документ в цепочке, из-за чего данные «улетают» в период регистрации исходного документа.

Решение 1: Программная модификация (для программистов)

Если ваша организация не может отказаться от использования «галочки» стимулирующей выплаты внутри отпуска, потребуется внести изменения в модуль объекта документа Отпуск. Выясним причину ошибки: типовая функция поиска первого документа в цепочке исправлений не всегда корректно учитывает специфику стимулирующих выплат, которые «привязаны» к документу-хозяину.

Рассмотрим предложенный вариант исправления. Нам необходимо подправить процедуру ДополнитьНачисленияВыплачиваемыеКОтпуску. Основная идея заключается в создании собственной функции для поиска корректного «предка» в цепочке документов именно для целей стимулирующей выплаты.

Ниже представлен пример кода, который необходимо внедрить в модуль объекта:


// В процедуре ДополнитьНачисленияВыплачиваемыеКОтпуску находим блок работы с исправлениями
Если ИсправлениеРасчетовБЗККлиентСервер.ЭтоИсправление(ПараметрыИсправленногоДокумента)
    И (ПредоставляетсяЕдиновременнаяВыплатаКОтпуску Или ЭтотОбъект.ПредоставитьМатериальнуюПомощьПриОтпуске) Тогда
            
    РеквизитыИсправленного = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ПараметрыИсправленногоДокумента.Ссылка,
        "ПредоставитьЕдиновременнуюВыплатуКОтпуску, ВидРасчетаЕдиновременнойВыплатыКОтпуску, ПредоставитьМатериальнуюПомощьПриОтпуске");
        
    // Вместо типового поиска используем модифицированную функцию
    ПервичныйДокумент = ПервыйДокументЦепочкиИсправленийСтимулирующейВыплаты(ПараметрыИсправленногоДокумента.Ссылка);
КонецЕсли;

Сама функция ПервыйДокументЦепочкиИсправленийСтимулирующейВыплаты должна выглядеть следующим образом:


Функция ПервыйДокументЦепочкиИсправленийСтимулирующейВыплаты(ИсходныйДокумент) Экспорт
    ЕстьНачислениеЕдиновременнойСтимВыплаты = Ложь;
    ИсправленныйДокумент = ИсходныйДокумент;
    ЦепочкаИсправлений = Новый Массив;
    
    Пока Истина Цикл
        ТекущийИсправленныйДокумент = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ИсправленныйДокумент, "ИсправленныйДокумент");
        
        Если ЗначениеЗаполнено(ТекущийИсправленныйДокумент) Тогда
            ЕстьНачислениеЕдиновременнойСтимВыплаты = ТекущийИсправленныйДокумент.ПредоставитьЕдиновременнуюВыплатуКОтпуску;
        КонецЕсли;
        
        Если ЗначениеЗаполнено(ТекущийИсправленныйДокумент) 
            И ЦепочкаИсправлений.Найти(ТекущийИсправленныйДокумент) = Неопределено
            И ЕстьНачислениеЕдиновременнойСтимВыплаты Тогда
            
            ЦепочкаИсправлений.Добавить(ТекущийИсправленныйДокумент);
            ИсправленныйДокумент = ТекущийИсправленныйДокумент;
        Иначе
            Прервать;
        КонецЕсли;
    КонецЦикла;
    
    Возврат ИсправленныйДокумент;
КонецФункции

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

Решение 2: Методическое (без изменения кода)

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

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

Решение 3: Организационное (правила работы в текущем периоде)

Посмотрим на проблему под другим углом. Почему возникают множественные исправления внутри одного и того же месяца? Согласно логике разработчиков 1С, если текущий период (июль) еще не закрыт, создание цепочки исправлений («исправление на исправление») является избыточным и потенциально опасным для учета НДФЛ и среднего заработка.

Проанализируем рекомендации экспертов:

Важные замечания по НДФЛ

Проанализируем предупреждение техподдержки 1С: «Нельзя июлем регистрировать документы, а после регистрировать июнь — ломается учет НДФЛ». Это связано с тем, что отпускные должны быть выплачены за 3 дня до начала отпуска. Если отпуск начинается 1 июля, выплата должна пройти в июне. Таким образом, доход для НДФЛ относится к июню. Любое последующее исправление этого документа в июле порождает сторно дохода июня и начисление дохода июля. При многократных повторениях этой процедуры в одном месяце, 6-НДФЛ может сформироваться некорректно.

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

← На главную