Как добавить ИНН сотрудника в расчетный листок в 1С:ЗУП 3.1?

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

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

Понимание механизма формирования расчетного листка

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

Способ 1: Редактирование макета печатной формы в пользовательском режиме

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

  1. Перейдем в раздел Администрирование, далее выберем пункт Печатные формы, отчеты и обработки и откроем гиперссылку Макеты печатных форм.
  2. В открывшемся списке нам необходимо найти макет с наименованием Расчетный листок (настраиваемый). Обратите внимание, что редактировать нужно именно настраиваемую версию, так как именно она позволяет гибко управлять параметрами вывода.
  3. Нажмем кнопку Изменить. Программа откроет табличный документ (MXL-редактор).
  4. В ячейку, где должен отображаться ИНН (например, рядом с ФИО сотрудника или в шапке), вставим параметр в квадратных скобках: [ФизическоеЛицоИНН]. Очень важно соблюдать синтаксис, чтобы программа смогла сопоставить это поле с данными из информационной базы.
  5. Сохраним изменения в макете. После этого макет в списке будет подсвечен синим цветом, что означает наличие пользовательских правок.

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

Способ 2: Настройка дополнительных полей в отчете

После изменения макета выполним следующие действия в самом отчете «Расчетный листок»:

  1. Откроем отчет и перейдем в меню Настройки, затем переключим вид в режим Расширенный.
  2. На вкладке Поля и сортировки (или Дополнительные поля) добавим новое поле. Пройдем по пути: Сотрудник -> Физическое лицо -> ИНН.
  3. Установим размещение поля — В отдельной колонке. Несмотря на то, что макет у нас фиксированный, это действие заставляет систему подтянуть данные ИНН в выборку запроса СКД.

Способ 3: Очистка регистра «Макеты компоновки данных» (Решение проблемы кэширования)

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

Разберем процесс очистки кэша:

  1. Нажмем на кнопку Сервис и настройки (три горизонтальные полоски или точка в правом верхнем углу окна 1С).
  2. Выберем пункт Функции для технического специалиста (если этот пункт не отображается, его нужно включить в настройках параметров системы).
  3. В поиске введем название регистра: Макеты компоновки данных.
  4. В открывшемся списке найдем записи, которые относятся к отчету РасчетныйЛисток или АнализНачисленийИУдержаний (так как листок строится на его базе).
  5. Удалим эти записи. Важно: это абсолютно безопасно. При следующем формировании отчета система увидит, что готового макета в кэше нет, проанализирует ваши новые настройки и создаст актуальный макет заново.

Способ 4: Программное изменение через расширение конфигурации

Если пользовательские методы не помогают (например, если поле ИНН не пробрасывается в структуру данных из-за особенностей кода формирования), придется прибегнуть к помощи программиста и использовать расширение. Рассмотрим пример логики, которую необходимо реализовать:

Нам нужно перехватить запрос в модуле менеджера отчета РасчетныйЛисток. В процедуре, отвечающей за подготовку данных, мы должны добавить поле в запрос:


// Пример добавления поля ИНН в запрос через расширение
&Вместо("ТекстЗапросаДляФормированияДанных")
Функция Мой_ТекстЗапросаДляФормированияДанных()
    Текст = ПродолжитьВызов();
    Текст = СтрЗаменить(Текст, "Сотрудник.ФизическоеЛицо КАК ФизическоеЛицо,", 
                               "Сотрудник.ФизическоеЛицо КАК ФизическоеЛицо, 
                               | Сотрудник.ФизическоеЛицо.ИНН КАК ФизическоеЛицоИНН,");
    Возврат Текст;
КонецФункции

После добавления поля в запрос через СтрЗаменить или через полное переопределение текста запроса в расширении, параметр ФизическоеЛицоИНН станет доступен для вывода в любой ячейке макета.

Альтернатива: Внешний отчет «Расчетный листок»

Проанализируем ситуацию: если требования ОТИЗ включают не только ИНН, но и СНИЛС, стаж, остатки отпусков или специфические группировки, то изменение типового макета может стать слишком трудозатратным. В таком случае эффективнее использовать внешний отчет.

Преимущества внешнего отчета:

Для создания такого отчета достаточно выгрузить типовой отчет РасчетныйЛисток из конфигуратора во внешний файл .erf, внести правки в запрос и макет, а затем загрузить обратно как дополнительную обработку.

Заключение

Мы рассмотрели несколько путей решения задачи. Самым быстрым и безопасным является сочетание редактирования Настраиваемого макета и очистки регистра макетов компоновки данных. Если же вы столкнулись с тем, что программа упорно игнорирует ваши настройки, обязательно проверьте наличие записей в регистре кэша — в 90% случаев проблема кроется именно там. Использование расширений — это крайняя мера, необходимая только для очень специфических доработок бизнес-логики формирования данных.

← На главную