Как реализовать внешнюю печатную форму в 1С:ЗУП 3 на основе сложного отчета СКД?

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

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

Метод 1: Программное использование процессора компоновки

Вместо того чтобы вручную переписывать все запросы из отчета, мы можем программно использовать уже готовую Схему компоновки данных. Это позволяет сохранить всю заложенную бизнес-логику, просто передав необходимые параметры (например, ссылку на документ).

Для реализации этого подхода выполним следующие шаги:

  1. Загрузим Схему компоновки данных из макета отчета.
  2. Инициализируем Процессор компоновки данных и передадим ему параметры через Настройки компоновки данных.
  3. Выведем результат в Табличный документ, используя Процессор вывода в табличный документ.

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

Метод 2: Выгрузка данных в таблицу значений

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

Посмотрим на примерный алгоритм работы:


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

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

ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(Схема, Настройки);

ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ДанныеТаблицы = Новый ТаблицаЗначений;
ПроцессорВывода.УстановитьОбъект(ДанныеТаблицы);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);

После того как данные оказались в Таблице значений, вы можете легко обработать их привычными средствами встроенного языка 1С, дополнить нужными сведениями, удалить лишние строки или изменить колонки перед тем, как выводить их в печатную форму.

Метод 3: Оптимизация и создание облегченной схемы

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

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

Это не только упростит поддержку кода в будущем, но и значительно ускорит работу печатной формы, так как системе не придется выполнять лишние запросы к базе данных.

Важные рекомендации при работе с БСП

При создании ВПФ в ЗУП 3 помните о требованиях Библиотеки стандартных подсистем:

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

← На главную