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

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

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

В этой статье мы подробно разберем, как решить эти задачи с помощью программных доработок и стандартных настроек системы.

Причина возникновения проблемы с периодами

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

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

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

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

Рассмотрим по шагам, как это реализовать:

  1. Создадим новое расширение конфигурации.
  2. Найдем общий модуль ЗарплатаКадрыОтчеты.
  3. Нас интересует процедура ВывестиТелоРасчетногоЛистка. Именно она отвечает за заполнение строк с начислениями и удержаниями.
  4. Добавим эту процедуру в расширение в режиме "Вместо" или "После" (в зависимости от версии и сложности изменений).

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

Пример логики (схематично):


// В цикле обхода данных начислений
Если СтрокаДанных.ВидРасчета = ПланыВидовРасчета.Начисления.НайтиПоНаименованию("Премия ежемесячная") Тогда
    // Заменяем стандартный период отображения на базовый период
    ПериодДляВывода = Формат(СтрокаДанных.БазовыйПериодНачало, "ДФ=dd.MM.yyyy") + " - " + Формат(СтрокаДанных.БазовыйПериодОкончание, "ДФ=dd.MM.yyyy");
    // Передаем измененное значение в область макета
КонецЕсли;

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

Решение 2: Переименование "Аванса" без программирования

Второй популярный запрос — изменение названия выплаты за первую половину месяца. Статья 136 ТК РФ обязывает работодателя выплачивать зарплату не реже чем каждые полмесяца, и термин "аванс" в кодексе отсутствует. Чтобы в расчетном листке вместо "Выплата аванса" красовалось "Выплата ЗП за 1-ю половину месяца", можно использовать простой административный прием.

Разберем алгоритм действий:

  1. Перейдем в раздел "Настройка" — "Способы выплаты зарплаты".
  2. Найдем элемент "Аванс".
  3. Изменим его наименование на "Заработная плата за 1-ю половину месяца".
  4. Проверим настройки в справочнике "Виды выплат" (если используется синхронизация с бухгалтерией).

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

Решение 3: Использование стандартных настроек расчетного листка

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

Рассмотрим, как ее включить:

  1. Откройте отчет "Расчетный листок".
  2. Нажмите кнопку "Настройки...".
  3. Переключите вид настроек на "Расширенный".
  4. На закладке "Дополнительные настройки" установите флаг "Выводить показатели расчета".

В этом случае в листке под суммой премии появится расшифровка: например, Результат = РасчетнаяБаза * Процент. Там же будет указана сумма самой базы. Часто этого достаточно, чтобы сотрудник понял: "Ага, база взята за июнь, значит, это премия за июнь", даже если в колонке периода стоит июль.

Методологические риски изменения периодов

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

Поэтому лучшей практикой считается добавление дополнительного поля (например, через пользовательские поля СКД) с названием "За период", не меняя при этом основной период регистрации начисления. Это позволит сохранить целостность учета и удовлетворить требования "Марьи Ивановны" из бухгалтерии.

Заключение

Мы рассмотрели несколько способов доработки расчетного листка. Программный метод через ОбщийМодуль.ЗарплатаКадрыОтчеты в расширении дает максимальный результат, но требует поддержки кода. Настройка показателей расчета и переименование способов выплаты — это быстрые и безопасные способы, которые не мешают обновлению конфигурации. Выбирайте вариант, исходя из критичности требований вашего бизнеса.

← На главную