Как сформировать внешнюю печатную форму на базе типового отчета в ЗУП 3.1?

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

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

Подход 1: Программная настройка структуры отчета

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

Рассмотрим пример реализации:


// Получаем настройки из компоновщика отчета
Настройки = ОтчетТ7.КомпоновщикНастроек.Настройки;
Настройки.Порядок.Элементы.Очистить;

// Добавляем новую сортировку
НовыйПорядок = Настройки.Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных"));
НовыйПорядок.Поле = Новый ПолеКомпоновкиДанных("ДатаНачала");

// Пересобираем структуру группировок
Настройки.Структура.Очистить;
ГруппировкаОрганизация = Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
// ... дальнейшее добавление элементов группировки ...

При таком подходе важно помнить, что вы фактически подменяете настройки отчета перед его выводом в ТабличныйДокумент. Однако этот метод требует тщательной отладки структуры СКД.

Подход 2: Использование предопределенных вариантов отчетов

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

  1. Откройте типовой отчет в пользовательском режиме.
  2. Настройте нужные вам отборы, сортировки и группировки.
  3. Сохраните вариант отчета (например, «Т7_СортировкаПоДате»).
  4. В модуле объекта внешней печатной формы используйте метод ЗагрузитьНастройки.

Пример программной загрузки варианта:


// Загрузка заранее созданного варианта
Настройки = СхемаКомпоновкиДанных.ВариантыНастроек.Найти("Т7_СортировкаПоДате").Настройки;
КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);

Интеграция с документом

Чтобы отчет заполнялся данными именно того документа, из которого вы вызываете печать, необходимо передать ссылку на объект в параметры данных СКД. В процедуре Печать(МассивОбъектов, ПараметрыПечати), которую использует БСП (Библиотека стандартных подсистем), необходимо:

Важные советы для разработчика

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

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

Особенности ЗУП 2.5: помните, что в устаревших конфигурациях на обычных формах (ЗУП 2.5) механизмы СКД и БСП работают иначе. Там часто эффективнее просто скопировать типовой код печати в модуль внешней обработки и внести правки напрямую в запрос, нежели пытаться адаптировать сложные механизмы компоновки.

← На главную