В процессе работы с программой 1С:Зарплата и управление персоналом 3.1 бухгалтеры часто сталкиваются с тем, что стандартная форма расчетного листка не всегда наглядно отражает суть начислений. Типичная ситуация: премия рассчитывается по итогам работы за прошлый месяц (например, июнь), но в расчетном листке за июль в поле "Период" отображается текущий месяц. Это вызывает вопросы у сотрудников, которым сложно сопоставить сумму премии с результатами своей работы. Кроме того, актуальным остается вопрос переименования "Аванса" в "Выплату за первую половину месяца" для соответствия нормам ТК РФ.
В этой статье мы подробно разберем, как решить эти задачи с помощью программных доработок и стандартных настроек системы.
Для начала проанализируем ситуацию с точки зрения архитектуры 1С. В программе существуют два понятия: период регистрации и период действия (или базовый период). Стандартный расчетный листок ориентируется на период регистрации — это месяц, в котором начисление было проведено в учете. Если премия за июнь начисляется июльским документом, программа считает ее "июльским" доходом.
Сотрудникам же важнее видеть базовый период — то время, за которое эта премия была заработана. Чтобы изменить это поведение, нам потребуется вмешательство в логику формирования отчета.
Самый гибкий способ — использование расширения конфигурации. Это позволит нам не снимать основную конфигурацию с поддержки. Нам необходимо переопределить процедуру, отвечающую за вывод данных в табличный документ расчетного листка.
Рассмотрим по шагам, как это реализовать:
ЗарплатаКадрыОтчеты.ВывестиТелоРасчетногоЛистка. Именно она отвечает за заполнение строк с начислениями и удержаниями.Внутри процедуры необходимо найти фрагмент кода, где заполняется структура данных для вывода строки. Нам нужно подменить стандартный период на БазовыйПериодНачало и БазовыйПериодОкончание для определенных видов расчета.
Пример логики (схематично):
// В цикле обхода данных начислений
Если СтрокаДанных.ВидРасчета = ПланыВидовРасчета.Начисления.НайтиПоНаименованию("Премия ежемесячная") Тогда
// Заменяем стандартный период отображения на базовый период
ПериодДляВывода = Формат(СтрокаДанных.БазовыйПериодНачало, "ДФ=dd.MM.yyyy") + " - " + Формат(СтрокаДанных.БазовыйПериодОкончание, "ДФ=dd.MM.yyyy");
// Передаем измененное значение в область макета
КонецЕсли;
Важно помнить, что в ERP и последних версиях ЗУП 3.1 расчетный листок строится на базе СКД (Системы компоновки данных). Это значит, что данные собираются во временные таблицы, и иногда проще изменить текст самого запроса в схеме компоновки, добавив туда условие для формирования поля периода.
Второй популярный запрос — изменение названия выплаты за первую половину месяца. Статья 136 ТК РФ обязывает работодателя выплачивать зарплату не реже чем каждые полмесяца, и термин "аванс" в кодексе отсутствует. Чтобы в расчетном листке вместо "Выплата аванса" красовалось "Выплата ЗП за 1-ю половину месяца", можно использовать простой административный прием.
Разберем алгоритм действий:
Поскольку расчетный листок подтягивает наименование из метаданных объектов расчетов и выплат, после этого изменения в разделе "Выплачено" листка будет отображаться новое, юридически корректное название.
Если вы не хотите менять код, попробуем выяснить причину недовольства сотрудников. Обычно они не могут понять, как рассчитана премия. В 1С:ЗУП 3.1 есть штатная опция, которая частично решает проблему прозрачности расчетов.
Рассмотрим, как ее включить:
В этом случае в листке под суммой премии появится расшифровка: например, Результат = РасчетнаяБаза * Процент. Там же будет указана сумма самой базы. Часто этого достаточно, чтобы сотрудник понял: "Ага, база взята за июнь, значит, это премия за июнь", даже если в колонке периода стоит июль.
Проанализируем ситуацию с точки зрения рисков. Бухгалтер должен понимать, что расчетный листок — это не просто бумажка для сотрудника, а юридически значимый документ. Изменение периода начисления с июля на июнь в печатной форме может привести к следующим последствиям:
Поэтому лучшей практикой считается добавление дополнительного поля (например, через пользовательские поля СКД) с названием "За период", не меняя при этом основной период регистрации начисления. Это позволит сохранить целостность учета и удовлетворить требования "Марьи Ивановны" из бухгалтерии.
Мы рассмотрели несколько способов доработки расчетного листка. Программный метод через ОбщийМодуль.ЗарплатаКадрыОтчеты в расширении дает максимальный результат, но требует поддержки кода. Настройка показателей расчета и переименование способов выплаты — это быстрые и безопасные способы, которые не мешают обновлению конфигурации. Выбирайте вариант, исходя из критичности требований вашего бизнеса.