Довольно часто у пользователей возникает потребность видеть дополнительную информацию в расчетных листках. Например, комментарий из ведомости на выплату зарплаты в разделе «Выплачено». Однако при попытке кастомизировать этот отчет разработчики часто сталкиваются с техническими сложностями: точки останова в конфигураторе не срабатывают, а внесенные изменения в схему компоновки данных (СКД) упорно игнорируются системой. В этой статье мы подробно разберем, как решить проблемы с отладкой, обойти механизмы кэширования платформы и вывести комментарий ведомости в расчетный листок.
Первая проблема, с которой сталкивается программист при попытке изучить алгоритмы расчетного листка, — отладчик игнорирует точки останова в общем модуле ЗарплатаКадрыОтчеты или модуле объекта отчета АнализНачисленийИУдержаний. Проанализируем основные причины этого поведения:
&Вместо, &Перед или &После). Точки останова в основной конфигурации в таком случае просто не сработают. Всегда проверяйте наличие расширений в базе и устанавливайте точки останова непосредственно в модулях расширения.Даже если вам удалось изменить схему компоновки или макет расчетного листка, изменения могут не отобразиться на экране. Дело в том, что для ускорения работы тяжелых отчетов система кэширует скомпилированные макеты компоновки данных в специальном регистре сведений МакетыКомпоновкиДанных. При повторном формировании отчета программа берет макет из кэша, игнорируя новые поля.
Также важно разделять два механизма формирования расчетного листка в программе:
Чтобы любые изменения в схеме или настройках отчета вступили в силу, нам необходимо очистить кэш макетов. Выполним следующие шаги:
МакетыКомпоновкиДанных.АнализНачисленийИУдержаний (или конкретно к расчетному листку).Если данные о выплатах уже выбираются запросом отчета через документы-основания, мы можем обойтись без изменения кода конфигурации. Добавим пользовательское поле-формулу непосредственно в режиме предприятия:
Выбор
Когда ТипЗначения([Документ основание]) = Тип("Документ.ВедомостьВБанк")
Тогда [Документ основание.Комментарий]
Когда ТипЗначения([Документ основание]) = Тип("Документ.ВедомостьВКассу")
Тогда [Документ основание.Комментарий]
Когда ТипЗначения([Документ основание]) = Тип("Документ.ВедомостьНаСчета")
Тогда [Документ основание.Комментарий]
Когда ТипЗначения([Документ основание]) = Тип("Документ.ВедомостьЧерезРаздатчика")
Тогда [Документ основание.Комментарий]
Иначе ""
Конец
Если требуется скорректировать визуальное отображение печатной формы, мы можем отредактировать ее макет без снятия конфигурации с поддержки:
РасчетныйЛистокНастраиваемый (или «Расчетный листок (настраиваемый)») и откроем его для редактирования.СтрокаРасшифровкаДокументОснование добавим новый параметр, например, [КомментарийВедомости].ДокументОснование.Комментарий) добавлено в состав выбранных полей группировки, чтобы система успешно заполнила этот параметр макета при выводе на печать.Для того чтобы избежать сложностей со сбросом кэша и не влиять на обновление конфигурации, мы рекомендуем сохранить типовой отчет «Расчетный листок» в качестве внешнего отчета. Для этого выгрузим схему компоновки, добавим левое соединение с таблицами ведомостей на уровне запроса для надежного получения комментариев, и зарегистрируем полученный файл в базе через механизм Дополнительные отчеты и обработки.