Как добавить сумму прописью в типовой отчет «Справка о заработной плате» в ЗУП 3.1?

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

В процессе работы с программным продуктом 1С:Зарплата и Управление Персоналом 3.1 (особенно в локализации для Казахстана) часто возникает необходимость кастомизации типовых печатных форм. Одной из наиболее востребованных задач является добавление итоговой суммы прописью в «Справку о заработной плате». Несмотря на то что отчет является типовым, найти его в конфигураторе и правильно модифицировать бывает непросто. В этой статье мы разберем по шагам, как найти нужный объект, добавить параметр и программно вывести сумму текстом.

Поиск отчета в конфигураторе: почему это сложно?

Первая проблема, с которой сталкиваются специалисты, — это несоответствие названия отчета в пользовательском интерфейсе и в дереве объектов метаданных. Пользователь видит название «Справка о заработной плате», однако глобальный поиск в конфигураторе по этому имени часто не дает результатов. Проанализируем причину этой ситуации.

В современных конфигурациях на базе БСП многие отчеты строятся на системе компоновки данных (СКД) и могут являться лишь вариантами одного более сложного отчета. Как выяснилось в ходе обсуждения, в казахстанской версии ЗУП 3.1 данные для справки аккумулируются в объекте РегистрНалоговогоУчетаПоИПНиСН. Макет печатной формы, который нам требуется изменить, обычно называется ПФ_MXL_Справка или аналогично внутри этого объекта.

Рассмотрим способ быстрого поиска: если вы не можете найти отчет по названию, попробуйте выполнить Глобальный поиск (Ctrl+Shift+F) по уникальному тексту из макета, который вы видите на экране в пользовательском режиме (например, по фразе «Сумма заработка» или специфической шапке документа). Это гарантированно приведет вас к нужному макету ТабличныйДокумент.

Метод 1: Использование механизма расширений (рекомендуемый)

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

  1. Создадим новое расширение или откроем существующее.
  2. Добавим в расширение объект Отчет.РегистрНалоговогоУчетаПоИПНиСН (или тот, который вы определили как базовый для справки).
  3. Найдем макет ПФ_MXL_Справка и также добавим его в расширение.
  4. В макете под итоговой таблицей добавим новую строку. Объединим ячейки и в свойствах выберем тип «Параметр». Назовем его, например, СуммаПрописью.

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

Пример кода в расширении для заполнения суммы прописью:


&После("СформироватьПечатнуюФорму")
Процедура Расш1_СформироватьПечатнуюФорму(ПараметрыПечати, ТабличныйДокумент)
    // Получаем итоговую сумму из данных отчета
    ИтоговаяСумма = ПараметрыПечати.ИтогоЗаработка; 
    
    // Формируем строку прописью для Казахстана (тенге)
    СуммаТекстом = ЧислоПрописью(ИтоговаяСумма, "L = ru_KZ; SN = true; FN = true; DP = true", "тенге, тенге, тенге, м, тиын, тиын, тиын, ж, 2");
    
    // Находим область макета, где мы добавили параметр
    // И заполняем его
    ТабличныйДокумент.Параметры.СуммаПрописью = СуммаТекстом;
КонецПроцедуры

Метод 2: Модификация через Систему компоновки данных (СКД)

Если отчет полностью построен на СКД без использования жестко заданных макетов ТабличныйДокумент, мы можем добавить сумму прописью через Вычисляемые поля. Это более «чистый» способ, не требующий написания большого объема кода.

Рассмотрим порядок действий:

  1. Откроем схему компоновки данных отчета.
  2. Перейдем на вкладку «Вычисляемые поля».
  3. Добавим новое поле с заголовком «Сумма прописью».
  4. В колонке «Выражение» пропишем вызов стандартной функции. Важно учитывать локализацию.

Пример выражения для поля СКД:

ЧислоПрописью(СуммаЗаработка, "Л=ru_RU", "тенге, тенге, тенге, м, тиын, тиын, тиын, ж, 2")

После добавления поля его необходимо включить в настройки отчета на вкладке «Настройки» — «Выбранные поля» или добавить в отдельную группировку в подвале отчета.

Особенности функции ЧислоПрописью для Казахстана

Поскольку мы работаем в версии для Казахстана, крайне важно правильно настроить параметры валюты. Рассмотрим структуру строки формата:

  1. "L = ru_KZ" — устанавливает правила языка (русский, Казахстан).
  2. "тенге, тенге, тенге, м" — названия целой части в разных падежах и мужской род ("м").
  3. "тиын, тиын, тиын, ж" — названия дробной части и женский род ("ж").
  4. "2" — количество знаков после запятой.

Выясним причину, почему это важно: если просто использовать ЧислоПрописью(Сумма), система подставит валюту из региональных настроек сервера, что может привести к выводу «рублей» вместо «тенге» в многопользовательской среде или при облачном использовании.

Использование внешнего отчета

Если вы решили пойти по пути создания внешнего отчета, алгоритм будет следующим:

  1. В конфигураторе выделите нужный отчет и выберите пункт «Сохранить как внешнюю обработку/отчет».
  2. Откройте полученный файл .erf.
  3. Внесите изменения в макет и программный код модуля объекта.
  4. Подключите отчет через раздел Администрирование — Печатные формы, отчеты и обработки — Дополнительные отчеты и обработки.

Этот способ безопасен, так как не меняет типовую конфигурацию, но требует от пользователя привыкания к новому месту расположения отчета.

Резюмируем: для добавления суммы прописью в справку о зарплате в ЗУП 3.1 лучше всего использовать расширение. Это позволит вам программно вычислить итог, преобразовать его с помощью функции ЧислоПрописью с учетом специфики тенге и вывести в заранее подготовленный параметр макета ПФ_MXL_Справка, который находится внутри объекта РегистрНалоговогоУчетаПоИПНиСН.

← На главную