В процессе работы с программным продуктом 1С:Зарплата и Управление Персоналом 3.1 (особенно в локализации для Казахстана) часто возникает необходимость кастомизации типовых печатных форм. Одной из наиболее востребованных задач является добавление итоговой суммы прописью в «Справку о заработной плате». Несмотря на то что отчет является типовым, найти его в конфигураторе и правильно модифицировать бывает непросто. В этой статье мы разберем по шагам, как найти нужный объект, добавить параметр и программно вывести сумму текстом.
Первая проблема, с которой сталкиваются специалисты, — это несоответствие названия отчета в пользовательском интерфейсе и в дереве объектов метаданных. Пользователь видит название «Справка о заработной плате», однако глобальный поиск в конфигураторе по этому имени часто не дает результатов. Проанализируем причину этой ситуации.
В современных конфигурациях на базе БСП многие отчеты строятся на системе компоновки данных (СКД) и могут являться лишь вариантами одного более сложного отчета. Как выяснилось в ходе обсуждения, в казахстанской версии ЗУП 3.1 данные для справки аккумулируются в объекте РегистрНалоговогоУчетаПоИПНиСН. Макет печатной формы, который нам требуется изменить, обычно называется ПФ_MXL_Справка или аналогично внутри этого объекта.
Рассмотрим способ быстрого поиска: если вы не можете найти отчет по названию, попробуйте выполнить Глобальный поиск (Ctrl+Shift+F) по уникальному тексту из макета, который вы видите на экране в пользовательском режиме (например, по фразе «Сумма заработка» или специфической шапке документа). Это гарантированно приведет вас к нужному макету ТабличныйДокумент.
Создание внешнего отчета — рабочий вариант, но он неудобен тем, что пользователям придется открывать его через отдельное меню. Мы рекомендуем использовать расширение конфигурации, чтобы сохранить типовой интерфейс программы. Разберем этот процесс подробно.
Отчет.РегистрНалоговогоУчетаПоИПНиСН (или тот, который вы определили как базовый для справки).ПФ_MXL_Справка и также добавим его в расширение.СуммаПрописью.Теперь нам необходимо заполнить этот параметр данными. Для этого нужно перехватить процедуру формирования печатной формы в модуле менеджера или модуле объекта. Проанализируем ситуацию: нам нужно найти место в коде, где заполняются параметры макета перед выводом в табличный документ.
Пример кода в расширении для заполнения суммы прописью:
&После("СформироватьПечатнуюФорму")
Процедура Расш1_СформироватьПечатнуюФорму(ПараметрыПечати, ТабличныйДокумент)
// Получаем итоговую сумму из данных отчета
ИтоговаяСумма = ПараметрыПечати.ИтогоЗаработка;
// Формируем строку прописью для Казахстана (тенге)
СуммаТекстом = ЧислоПрописью(ИтоговаяСумма, "L = ru_KZ; SN = true; FN = true; DP = true", "тенге, тенге, тенге, м, тиын, тиын, тиын, ж, 2");
// Находим область макета, где мы добавили параметр
// И заполняем его
ТабличныйДокумент.Параметры.СуммаПрописью = СуммаТекстом;
КонецПроцедуры
Если отчет полностью построен на СКД без использования жестко заданных макетов ТабличныйДокумент, мы можем добавить сумму прописью через Вычисляемые поля. Это более «чистый» способ, не требующий написания большого объема кода.
Рассмотрим порядок действий:
Пример выражения для поля СКД:
ЧислоПрописью(СуммаЗаработка, "Л=ru_RU", "тенге, тенге, тенге, м, тиын, тиын, тиын, ж, 2")
После добавления поля его необходимо включить в настройки отчета на вкладке «Настройки» — «Выбранные поля» или добавить в отдельную группировку в подвале отчета.
Поскольку мы работаем в версии для Казахстана, крайне важно правильно настроить параметры валюты. Рассмотрим структуру строки формата:
Выясним причину, почему это важно: если просто использовать ЧислоПрописью(Сумма), система подставит валюту из региональных настроек сервера, что может привести к выводу «рублей» вместо «тенге» в многопользовательской среде или при облачном использовании.
Если вы решили пойти по пути создания внешнего отчета, алгоритм будет следующим:
.erf.Этот способ безопасен, так как не меняет типовую конфигурацию, но требует от пользователя привыкания к новому месту расположения отчета.
Резюмируем: для добавления суммы прописью в справку о зарплате в ЗУП 3.1 лучше всего использовать расширение. Это позволит вам программно вычислить итог, преобразовать его с помощью функции ЧислоПрописью с учетом специфики тенге и вывести в заранее подготовленный параметр макета ПФ_MXL_Справка, который находится внутри объекта РегистрНалоговогоУчетаПоИПНиСН.