Перейти к содержимому

API pw_Исполнитель

Обработка pw_Исполнитель — движок формирования печатных форм. Принимает макет (из справочника, XML, JSON, *.epf или *.pdwx), получает данные по списку ссылок и возвращает готовый ТабличныйДокумент или набор DOCX-файлов.

Исполнитель зависит только от pw_Ядро. Никаких вызовов к общим модулям или другим обработкам.


Исполнитель = Обработки.pw_Исполнитель.Создать();

Инициализация ядра выполняется автоматически в ПриСозданииОбъекта.


ПеременнаяТипНазначение
ПараметрыКомандыСтруктура, НеопределеноПараметры команды печати БСП (МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм и др.). Заполняется до вызова Печать(), если исполнитель вызывается из обработчика ПриПечати.
ФункцииФиксированнаяСтруктураСписок функций макета. Обновляется после Загрузить() и перед Печать(). Ключ — имя функции, значение — алгоритм.

Универсальный загрузчик. Автоматически определяет формат по типу и содержимому значения.

Тип ЗначениеДелегирует в
СправочникСсылка.pw_Макеты, СправочникОбъект.pw_МакетыЗагрузитьИзМакета
Строка с XML-содержимымЗагрузитьИзXML
Строка с JSON-содержимымЗагрузитьИзJSON
Строка — адрес временного хранилища (*.epf)ЗагрузитьИзОбработки
Исполнитель.Загрузить(СсылкаНаМакет); // из справочника
Исполнитель.Загрузить(СтрокаXML); // из XML
Исполнитель.Загрузить(АдресВоХранилище); // из *.epf

Загружает из объекта или ссылки справочника pw_Макеты.

Параметры:

ПараметрТип
ЗначениеСправочникСсылка.pw_Макеты, СправочникОбъект.pw_Макеты

Вызывает исключение, если справочник pw_Макеты не найден в конфигурации или передан некорректный тип.


Загружает из строки XML в формате XDTO-схемы PrintWizard (namespace http://printwizard.ru/export/vX.X, корневой тип Template).


Загружает из строки JSON в формате pw_СериализаторКлиентСервер — внутренний формат (Макет) или экспортный (МакетНаЭкспорт).


Загружает из структуры схемы (десериализованный объект внутреннего или экспортного формата).

ПараметрТип
СхемаМакетаСтруктура — формат Макет или МакетНаЭкспорт из pw_СериализаторКлиентСервер

ЗагрузитьИзОбработки(АдресХранилища, ИмяМакета = "")

Заголовок раздела «ЗагрузитьИзОбработки(АдресХранилища, ИмяМакета = "")»

Загружает макет из внешней *.epf обработки. Поддерживает оба формата:

  • до версии 2025.2: код инициализации в модуле объекта;
  • начиная с 2025.2: XML в текстовом макете pw_[Идентификатор].
ПараметрТипОписание
АдресХранилищаСтрокаАдрес временного хранилища с двоичными данными *.epf
ИмяМакетаСтрокаИдентификатор макета. Если не указан — загружается первый из таблицы команд

Возможные исключения:

  • некорректный адрес временного хранилища;
  • ошибка подключения внешней обработки;
  • файл не содержит макетов PrintWizard;
  • не определены команды для печати;
  • ошибка при получении макета.

Загружает макет из файла *.pdwx (ZIP-архив с XML или JSON).

ПараметрТипОписание
АдресХранилищаСтрокаАдрес временного хранилища с двоичными данными *.pdwx
ПарольСтрокаПароль к архиву, если установлен

Возвращает Истина, если макет успешно загружен. Проверять перед вызовом Печать().

Если НЕ Исполнитель.Подготовлен() Тогда
// обработать ошибку загрузки
КонецЕсли;

Печать(Значение, Параметры = Неопределено, Отказ = Ложь) → Структура

Заголовок раздела «Печать(Значение, Параметры = Неопределено, Отказ = Ложь) → Структура»

Выполняет полный цикл: подготовка параметров → выполнение запросов → формирование наборов данных → рендеринг макета.

Параметры:

ПараметрТипОписание
ЗначениеЛюбаяСсылка, Массив, ФиксированныйМассивСсылка или массив ссылок на объекты печати
ПараметрыСтруктура, НеопределеноВходящие параметры для события ПередИнициализацией
ОтказБулевоВыходной параметр; Истина, если событие ПередИнициализацией установило отказ

Возвращаемое значение — Структура:

КлючТипОписание
ВыполненоБулевоИстина, если печать прошла без ошибок
ДокументыТабличныйДокумент / Соответствие / НеопределеноДля XLS-макетов — ТабличныйДокумент; для DOCX — Соответствие<ИмяФайла, ДвоичныеДанные>
ОтказБулевоПризнак отказа от инициализации
ТекстОтказаСтрокаКомментарий, установленный при отказе
ЕстьОшибкиБулевоПризнак наличия ошибок в журнале
Исполнитель = Обработки.pw_Исполнитель.Создать();
Исполнитель.Загрузить(СсылкаНаМакет);
Отказ = Ложь;
Результат = Исполнитель.Печать(МассивОбъектов,, Отказ);
Если НЕ Результат.Выполнено Тогда
// см. ТекстОшибок()
КонецЕсли;

Возвращает текст всех ошибок журнала, разделённых переносом строки.

ПараметрТипОписание
РасширенныйБулевоЕсли Истина, включает подробный стек ошибки

Возвращает Истина, если журнал содержит хотя бы одну запись уровня «Ошибка».


Функции — именованные алгоритмы, описанные в макете. Вызываются из событий и из прикладного кода.

Возвращает структуру-шаблон для передачи параметров в функцию. Ключи соответствуют именам параметров функции в порядке объявления.

ПараметрТипОписание
КлючИмяСтрокаКлюч или имя функции

ВыполнитьФункцию(КлючИмя, П1..П10) → Произвольный

Заголовок раздела «ВыполнитьФункцию(КлючИмя, П1..П10) → Произвольный»

Выполняет функцию макета и возвращает её результат.

ПараметрТипОписание
КлючИмяСтрокаКлюч или имя функции
П1..П10ПроизвольныйПозиционные параметры или структура из ПараметрыФункции первым аргументом

Если П1 — это структура с маркером Типы_ПараметрыАлгоритма, она интерпретируется как именованные параметры. Иначе значения сопоставляются с параметрами по позиции.

// Позиционный вызов
Итог = Исполнитель.ВыполнитьФункцию("РассчитатьСумму", 10, 500);
// Именованный вызов
Пар = Исполнитель.ПараметрыФункции("РассчитатьСумму");
Пар.Количество = 10;
Пар.Цена = 500;
Итог = Исполнитель.ВыполнитьФункцию("РассчитатьСумму", Пар);

Методы для ручного управления выводом внутри событий макета (ПередВыводомОбласти, ПослеВыводаОбласти и др.).

ОбластьМакета(ИмяОбласти, Заполнить = Ложь) → ТабличныйДокумент, Неопределено

Заголовок раздела «ОбластьМакета(ИмяОбласти, Заполнить = Ложь) → ТабличныйДокумент, Неопределено»

Возвращает новый независимый экземпляр шаблона области из текущего макета. Повторный вызов — новый экземпляр. Возвращает Неопределено, если область не найдена.

ПараметрТипОписание
ИмяОбластиСтрокаИмя области в макете
ЗаполнитьБулевоЕсли Истина, сразу заполняет параметры из текущего контекста данных

ЗаполнитьПараметрыОбласти(Область, ТолькоПустые = Ложь)

Заголовок раздела «ЗаполнитьПараметрыОбласти(Область, ТолькоПустые = Ложь)»

Заполняет параметры области значениями из текущего контекста. Применяет полный механизм: резолвинг полей набора, алгоритмы, форматирование, QR-коды, суммы прописью.

ПараметрТипОписание
ОбластьТабличныйДокументШаблон для заполнения
ТолькоПустыеБулевоЕсли Истина, заполняет только параметры без значения (ручные значения сохраняются)

ВывестиОбласть(Область, ПроверитьВывод = Ложь)

Заголовок раздела «ВывестиОбласть(Область, ПроверитьВывод = Ложь)»

Выводит заполненную область в текущий табличный документ. Не вызывает события ПередВыводомОбласти / ПослеВыводаОбласти.

ПараметрТипОписание
ОбластьТабличныйДокументЗаполненная область
ПроверитьВыводБулевоЕсли Истина и область не помещается на текущей странице, вставляет разрыв страницы
// Пример внутри события ПередВыводомОбласти
Область = ЭтотМакет.ОбластьМакета("Заголовок", Истина);
Область.Параметры.Дата = ТекущаяДатаСеанса();
ЭтотМакет.ВывестиОбласть(Область, Истина);

Обёртки над платформенным API ТабличногоДокумента, доступные из событий макета.

ОбъединитьЯчейки(ТабличныйДокумент, АдресПерваяСтрока, ПерваяКолонка, ПоследняяСтрока, ПоследняяКолонка)

Заголовок раздела «ОбъединитьЯчейки(ТабличныйДокумент, АдресПерваяСтрока, ПерваяКолонка, ПоследняяСтрока, ПоследняяКолонка)»

Объединяет ячейки в переданном табличном документе. Параметры адресации соответствуют ТабличныйДокумент.Область(...).


СгруппироватьСтроки(ТабличныйДокумент, ПерваяСтрока, ПоследняяСтрока, ИмяГруппы, РасположениеЗаголовка)

Заголовок раздела «СгруппироватьСтроки(ТабличныйДокумент, ПерваяСтрока, ПоследняяСтрока, ИмяГруппы, РасположениеЗаголовка)»

Группирует строки. Если РасположениеЗаголовка не передан — используется Начало.


СгруппироватьКолонки(ТабличныйДокумент, ПерваяКолонка, ПоследняяКолонка, ИмяГруппы, РасположениеЗаголовка)

Заголовок раздела «СгруппироватьКолонки(ТабличныйДокумент, ПерваяКолонка, ПоследняяКолонка, ИмяГруппы, РасположениеЗаголовка)»

Группирует колонки. Если РасположениеЗаголовка не передан — используется Начало.


// 1. Создание и загрузка макета
Исполнитель = Обработки.pw_Исполнитель.Создать();
Исполнитель.Загрузить(СсылкаНаМакет);
Если НЕ Исполнитель.Подготовлен() Тогда
ВызватьИсключение "Не удалось загрузить макет PrintWizard";
КонецЕсли;
// 2. Передача контекста команды (при вызове из обработчика ПриПечати БСП)
Исполнитель.ПараметрыКоманды = ПараметрыКоманды;
// 3. Запуск печати
Отказ = Ложь;
Результат = Исполнитель.Печать(МассивОбъектов,, Отказ);
Если Отказ Тогда
Возврат; // событие ПередИнициализацией установило Отказ
КонецЕсли;
Если НЕ Результат.Выполнено Тогда
ОбщегоНазначения.СообщитьПользователю(
НСтр("ru='Ошибка при формировании формы:'") + Символы.ПС
+ Исполнитель.ТекстОшибок());
Возврат;
КонецЕсли;
// 4. Получение результата
Если ЭтотОбъект.IsOfficeOpenXML Тогда
// Соответствие<ИмяФайла, ДвоичныеДанные>
Для Каждого Элемент Из Результат.Документы Цикл
// сохранить Элемент.Значение как Элемент.Ключ + ".docx"
КонецЦикла;
Иначе
ТабДок = Результат.Документы; // ТабличныйДокумент
КонецЕсли;