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