В типовой конфигурации 1С:Зарплата и управление персоналом 3.1 расчетный листок формируется согласно требованиям статьи 136 ТК РФ. Однако часто возникают ситуации, когда внутренние стандарты компании или требования отдела труда и заработной платы (ОТИЗ) предполагают вывод дополнительных данных, таких как ИНН или СНИЛС сотрудника. Проблема заключается в том, что расчетный листок в ЗУП 3.1 — это не просто отчет на базе Системы компоновки данных (СКД), а сложный механизм, использующий предопределенные макеты. Давайте подробно разберем, как обойти эти ограничения и добавить нужные поля.
Перед тем как приступать к правкам, проанализируем ситуацию. В программе существует два основных способа вывода расчетного листка: стандартный и настраиваемый. Большинство пользователей пытаются изменить настройки через обычную форму отчета, но не видят результата. Это происходит потому, что программа использует ОбщийМакет.ПФ_MXL_РасчетныйЛистокНастраиваемый, который имеет жесткую структуру. Для внесения изменений нам потребуется задействовать механизм редактирования макетов печатных форм и, в некоторых случаях, работу с системными регистрами для сброса кэша.
Это наиболее предпочтительный метод, так как он не требует внесения изменений в конфигурацию и не мешает последующим обновлениям программы. Рассмотрим по шагам, как добавить ИНН сотрудника через пользовательский интерфейс:
[ФизическоеЛицоИНН]. Очень важно соблюдать синтаксис, чтобы программа смогла сопоставить это поле с данными из информационной базы.Однако простого изменения макета часто недостаточно. Программа должна «понимать», что в этот параметр нужно передать конкретное значение из справочника ФизическиеЛица. Для этого нам нужно убедиться, что поле ИНН выбрано в настройках самого отчета.
После изменения макета выполним следующие действия в самом отчете «Расчетный листок»:
Сотрудник -> Физическое лицо -> ИНН.ИНН в выборку запроса СКД.Выясним причину, по которой даже после выполнения всех настроек отчет может продолжать выводиться в старом виде. В ЗУП 3.1 реализован механизм оптимизации: для ускорения формирования тяжелых отчетов система кэширует скомпилированные макеты компоновки в специальном регистре. Пока запись в этом регистре существует, программа будет игнорировать ваши правки в макете и настройках СКД.
Разберем процесс очистки кэша:
РасчетныйЛисток или АнализНачисленийИУдержаний (так как листок строится на его базе).Если пользовательские методы не помогают (например, если поле ИНН не пробрасывается в структуру данных из-за особенностей кода формирования), придется прибегнуть к помощи программиста и использовать расширение. Рассмотрим пример логики, которую необходимо реализовать:
Нам нужно перехватить запрос в модуле менеджера отчета РасчетныйЛисток. В процедуре, отвечающей за подготовку данных, мы должны добавить поле в запрос:
// Пример добавления поля ИНН в запрос через расширение
&Вместо("ТекстЗапросаДляФормированияДанных")
Функция Мой_ТекстЗапросаДляФормированияДанных()
Текст = ПродолжитьВызов();
Текст = СтрЗаменить(Текст, "Сотрудник.ФизическоеЛицо КАК ФизическоеЛицо,",
"Сотрудник.ФизическоеЛицо КАК ФизическоеЛицо,
| Сотрудник.ФизическоеЛицо.ИНН КАК ФизическоеЛицоИНН,");
Возврат Текст;
КонецФункции
После добавления поля в запрос через СтрЗаменить или через полное переопределение текста запроса в расширении, параметр ФизическоеЛицоИНН станет доступен для вывода в любой ячейке макета.
Проанализируем ситуацию: если требования ОТИЗ включают не только ИНН, но и СНИЛС, стаж, остатки отпусков или специфические группировки, то изменение типового макета может стать слишком трудозатратным. В таком случае эффективнее использовать внешний отчет.
Преимущества внешнего отчета:
ПФ_MXL_РасчетныйЛистокНастраиваемый.Для создания такого отчета достаточно выгрузить типовой отчет РасчетныйЛисток из конфигуратора во внешний файл .erf, внести правки в запрос и макет, а затем загрузить обратно как дополнительную обработку.
Мы рассмотрели несколько путей решения задачи. Самым быстрым и безопасным является сочетание редактирования Настраиваемого макета и очистки регистра макетов компоновки данных. Если же вы столкнулись с тем, что программа упорно игнорирует ваши настройки, обязательно проверьте наличие записей в регистре кэша — в 90% случаев проблема кроется именно там. Использование расширений — это крайняя мера, необходимая только для очень специфических доработок бизнес-логики формирования данных.