Разработка и модификация расчетных листков в программе «1С:Зарплата и кадры государственного учреждения 3.1» (ЗКГУ) — одна из наиболее частых задач, с которыми сталкиваются программисты и системные администраторы. Типовой функционал программы предоставляет широкие возможности настройки, однако специфические требования бухгалтерии госучреждений (например, детализация по статьям финансирования, вывод накопительного НДФЛ или печать двух листков на одной странице) часто требуют создания внешнего отчета или использования расширений. Рассмотрим подробно, как реализовать эти задачи, сохранив стабильность системы и удобство обновления.
Первым шагом при необходимости серьезной модификации отчета является его выгрузка из состава конфигурации. Проанализируем, как сделать это правильно. В конфигураторе необходимо найти объект Отчет.РасчетныйЛисток. Нажав правую кнопку мыши, мы можем выбрать пункт «Сохранить как внешний отчет». Однако здесь кроется главная техническая сложность: типовой отчет тесно связан с общими модулями конфигурации.
Рассмотрим основные зависимости, которые могут вызвать ошибки при запуске внешнего файла .erf:
ЗарплатаКадрыОтчеты, УчетПособийСоцСтрахования и ЗарплатаКадрыСоставОбъектов. Если в конфигурации произойдет обновление, структура этих модулей может измениться, что приведет к неработоспособности внешнего отчета.Выясним причину, почему иногда лучше использовать расширения вместо внешних отчетов. Расширение позволяет точечно переопределить макет или процедуру печати, не «отрывая» отчет от программной среды конфигурации. Если же требования клиента подразумевают наличие нескольких вариантов расчетного листка для разных подразделений, то внешний отчет будет более гибким решением.
Для государственных учреждений крайне важно разделение выплат по источникам (статьям) финансирования (ИФ). В типовом расчетном листке ИФ обычно выводится в группировках, что увеличивает высоту документа. Разберем, как вывести ИФ отдельной колонкой в строках начислений и удержаний.
Для этого нам потребуется модифицировать Схему компоновки данных. Проанализируем ситуацию: данные о финансировании хранятся в различных регистрах расчета (например, Начисления) и регистрах накопления. Чтобы вывести их в строку, выполним следующие шаги:
СтатьяФинансирования в выборку.СтатьяФинансирования.Важно помнить: добавление колонки увеличивает ширину отчета. Чтобы два расчетных листка по-прежнему умещались на одной странице А4, нам придется оптимизировать ширину других колонок или использовать альбомную ориентацию страницы.
Зачастую бухгалтеры просят выводить в расчетном листке информацию о налогах не только за текущий месяц, но и нарастающим итогом с начала года. Это помогает сотрудникам контролировать применение налоговых вычетов и общую сумму уплаченного налога.
Разберем по шагам, как добавить расчет накопительного НДФЛ во внешний отчет:
Шаг 1: Создание дополнительного набора данных. В СКД создадим новый запрос к регистру накопления РасчетыНалогоплательщиковСБюджетомПоНДФЛ. Нам необходимо суммировать налог по конкретному физическому лицу за период с 1 января текущего года по дату окончания месяца, за который формируется листок.
Пример логики запроса для получения накопительного итога:
ВЫБРАТЬ
СУММА(НДФЛ.Налог) КАК НалогСНачалаГода,
НДФЛ.ФизическоеЛицо КАК ФизическоеЛицо
ИЗ
РегистрНакопления.РасчетыНалогоплательщиковСБюджетомПоНДФЛ КАК НДФЛ
ГДЕ
НДФЛ.Период МЕЖДУ &НачалоГода И &КонецПериода
И НДФЛ.Активность = ИСТИНА
ГРУППИРОВАТЬ ПО
НДФЛ.ФизическоеЛицо
Шаг 2: Связи наборов данных. Настроим связь между основным набором данных (где определен сотрудник) и нашим новым набором данных по полю ФизическоеЛицо. Это позволит вывести итоговую сумму в соответствующий раздел макета.
Шаг 3: Вычеты. Аналогичным образом можно получить информацию о примененных вычетах, обратившись к регистру ПредоставленныеСтандартныеИСоциальныеВычетыНДФЛ.
Требование «два листка на страницу» является классическим, но при добавлении новых колонок (таких как статьи финансирования) оно становится трудновыполнимым из-за ограничений ширины листа. Рассмотрим подробнее, как программно управлять выводом на печать.
В модуле отчета (или в модуле объекта внешнего отчета) при формировании табличного документа необходимо использовать свойство Автомасштаб. Посмотрим на пример кода, который подготавливает документ к печати:
ТабличныйДокумент.Автомасштаб = Истина;
ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
// Если данных много, можно переключить на Ландшафт
// ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
Если требуется вывести именно два экземпляра одного и того же листка (один для сотрудника, другой для организации), в цикле вывода данных по сотрудникам необходимо дважды вызывать процедуру вывода области макета. Чтобы листки визуально разделялись, между ними можно добавить пустую строку или линию отреза, используя методы ВывестиГоризонтальныйРазделительСтраниц().
Проанализируем ситуацию с обновлениями. ЗКГУ 3.1 регулярно обновляется в связи с изменениями в законодательстве (новые формы НДФЛ, изменения в расчете пособий). Если вы внесли много изменений во внешний отчет, будьте готовы к тому, что после очередного патча 1С данные могут начать отображаться некорректно.
Рекомендации для стабильной работы:
Таким образом, мы выяснили, что создание модифицированного расчетного листка для ЗКГУ 3.1 требует комплексного подхода: от выгрузки структуры отчета до настройки сложных связей в СКД для получения накопительных данных. Следуя этим инструкциям, вы сможете удовлетворить даже самые специфические требования заказчика, сохранив при этом корректность учета.