Как добавить комментарий из ведомости в расчетный листок в 1С:ЗУП 3.1 / 1С:ЗКГУ 3.0

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

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

Почему не срабатывает отладчик при формировании расчетного листка

Первая проблема, с которой сталкивается программист при попытке изучить алгоритмы расчетного листка, — отладчик игнорирует точки останова в общем модуле ЗарплатаКадрыОтчеты или модуле объекта отчета АнализНачисленийИУдержаний. Проанализируем основные причины этого поведения:

  1. Влияние расширений конфигурации. Если в базе установлены активные расширения, выполняемый код может быть полностью перехвачен ими (например, через аннотации &Вместо, &Перед или &После). Точки останова в основной конфигурации в таком случае просто не сработают. Всегда проверяйте наличие расширений в базе и устанавливайте точки останова непосредственно в модулях расширения.
  2. Выполнение в фоновом задании. Формирование сложных отчетов в современных конфигурациях «1С» часто уводится в фоновые задания на сервере. Чтобы отладить такой код, убедитесь, что в меню конфигуратора Отладка -> Подключение -> Автоматическое подключение установлены флажки для серверных процедур и фоновых заданий.
  3. Использование замера производительности. Если стандартные точки останова не помогают локализовать нужный фрагмент кода, используйте встроенный инструмент платформы. Включите Замер производительности перед формированием отчета, сформируйте расчетный листок и выключите замер. Платформа покажет весь стек вызовов и точные строки кода, которые выполнялись в этот момент.

Архитектурные препятствия: Кэширование макетов

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

Также важно разделять два механизма формирования расчетного листка в программе:

Способ 1. Очистка кэша макетов компоновки (Обязательный шаг)

Чтобы любые изменения в схеме или настройках отчета вступили в силу, нам необходимо очистить кэш макетов. Выполним следующие шаги:

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

Способ 2. Добавление пользовательского поля через настройки СКД

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

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

Выбор 
    Когда ТипЗначения([Документ основание]) = Тип("Документ.ВедомостьВБанк") 
        Тогда [Документ основание.Комментарий]
    Когда ТипЗначения([Документ основание]) = Тип("Документ.ВедомостьВКассу") 
        Тогда [Документ основание.Комментарий]
    Когда ТипЗначения([Документ основание]) = Тип("Документ.ВедомостьНаСчета") 
        Тогда [Документ основание.Комментарий]
    Когда ТипЗначения([Документ основание]) = Тип("Документ.ВедомостьЧерезРаздатчика") 
        Тогда [Документ основание.Комментарий]
    Иначе ""
Конец
  1. Перейдем на вкладку Структура, найдем группировку, отвечающую за вывод документов-оснований в разделе «Выплачено», и добавим созданное пользовательское поле в список выводимых полей.

Способ 3. Изменение макета печатной формы

Если требуется скорректировать визуальное отображение печатной формы, мы можем отредактировать ее макет без снятия конфигурации с поддержки:

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

Альтернативный вариант: Использование внешнего отчета

Для того чтобы избежать сложностей со сбросом кэша и не влиять на обновление конфигурации, мы рекомендуем сохранить типовой отчет «Расчетный листок» в качестве внешнего отчета. Для этого выгрузим схему компоновки, добавим левое соединение с таблицами ведомостей на уровне запроса для надежного получения комментариев, и зарегистрируем полученный файл в базе через механизм Дополнительные отчеты и обработки.

← На главную