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

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

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

Анализ причины проблемы: почему программа включает допотпуск в резерв?

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

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

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

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

Рассмотрим пошаговый алгоритм реализации:

  1. Создадим новое расширение конфигурации.
  2. Добавим в расширение общий модуль РезервОтпусковПереопределяемый.
  3. Создадим в расширении процедуру-перехватчик с аннотацией &После для процедуры ДополнитьТаблицуОстатковОтпусков.

Ниже приведем пример кода, который позволит программно "вычистить" ненужные виды отпусков из таблицы перед тем, как программа начнет рассчитывать суммы обязательств:


&После("ДополнитьТаблицуОстатковОтпусков")
Процедура Расш_ДополнитьТаблицуОстатковОтпусков(ТаблицаОстатков, ПараметрыРасчета)
    
    // Определяем вид отпуска, который нужно исключить из расчета резервов.
    // Рекомендуется искать по ссылке или через уникальный идентификатор, 
    // но для примера используем поиск по наименованию.
    ВидОтпускаИсключение = Справочники.ВидыОтпусков.НайтиПоНаименованию("Дополнительный отпуск за выслугу лет");
    
    Если ЗначениеЗаполнено(ВидОтпускаИсключение) Тогда
        
        // Обходим таблицу остатков с конца, чтобы корректно удалить строки.
        Индекс = ТаблицаОстатков.Количество() - 1;
        Пока Индекс >= 0 Цикл
            СтрокаТаблицы = ТаблицаОстатков[Индекс];
            
            // Если вид отпуска совпадает с исключаемым — удаляем строку.
            Если СтрокаТаблицы.ВидОтпуска = ВидОтпускаИсключение Тогда
                ТаблицаОстатков.Удалить(Индекс);
            КонецЕсли;
            
            Индекс = Индекс - 1;
        КонецЦикла;
        
    КонецЕсли;

КонецПроцедуры

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

Решение №2: Внешняя обработка заполнения табличной части

Если внесение изменений в код через расширение по каким-то причинам невозможно (например, политика безопасности), проанализируем вариант с использованием внешних печатных форм и обработок. Вы можете создать дополнительную обработку для заполнения объекта.

Этот метод удобен тем, что не требует изменения конфигурации. Пользователь заполняет документ типовым способом, а затем выбирает в меню "Заполнение" -> "Исключить доп. отпуска за выслугу лет". Обработка просто очистит колонку Остаток отпуска и пересчитает итоговые суммы в строках документа.

Методический подход: Разделение учета в БУ и НУ

Выясним важный момент: согласно ПБУ 08/2010, организация обязана признавать оценочное обязательство в бухгалтерском учете, если у нее есть неизбежная обязанность по выплате. Если доп. отпуск прописан в ЛНА, то в БУ резерв по нему должен быть. Проблема автора сообщения чаще всего заключается именно в налоговом учете (НУ), где такие расходы запрещены.

Рассмотрим, как настроить систему без программирования для корректного отражения в учете:

  1. Перейдем в настройки начисления, которым оплачивается данный отпуск.
  2. На вкладке "Налоги, взносы, бухучет" создадим или выберем специальный Способ отражения.
  3. В самом способе отражения (который синхронизируется с 1С:Бухгалтерией) укажите статью затрат с видом расходов "Не учитываемые в целях налогообложения".

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

Опасности "простого" решения: Отключение признака "Ежегодный"

Рассмотрим ситуацию, когда пользователи пытаются решить проблему, сняв флаг "Отпуск является ежегодным" в справочнике Виды отпусков. Проанализируем последствия:

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

Резюме

Проанализировав проблему, мы выяснили, что наиболее технологичным решением является использование расширения конфигурации с переопределением процедуры в модуле РезервОтпусковПереопределяемый. Это позволяет сохранить автоматизацию кадрового учета и добиться корректных данных в документе Резервы отпусков. Если же ваша цель — только соответствие налоговому законодательству, используйте методику разделения через Способы отражения в бухучете, сохраняя расчет обязательств в бухгалтерском учете согласно ПБУ 08/2010.

← На главную