печать по шаблону Word акт выполненных работ УТ 11 - не копируются настройки полей

1. pa240775 24 20.08.21 05:58 Сейчас в теме
Пришла задача сделать печать договора по шаблону WORD. Конфигурация УТ 11.1. Конечно же первым делом ищем аналогичный функционал в конфигурации. Находим печать Акта выполненных работ. Копипастим, подправляем, обнаруживаем что размеры полей не соответствуют шаблону. Открываем УТ 11.4Ю, видим код со времен 11.1 не изменился.

Вот процедура в УТ 11.4:
// Выводит печатную форму акта выполненных работ в word.
//
// Параметры:
// ОписаниеКоманды - Структура - структура с описанием команды.
//
// Возвращаемое значение:
// Неопределено - ничего не возвращается.
//
Функция ПечатьАктВыполненныхРаботMicrosoftWord(ОписаниеКоманды) Экспорт

Состояние(НСтр("ru = 'Выполняется формирование печатных форм'"));

ИмяМакета = "ПФ_DOC_Акт";
ТипМакета = "doc";

МакетИДанныеОбъекта = УправлениеПечатьюВызовСервера.МакетыИДанныеОбъектовДляПечати("Документ.АктВыполненныхРабот",
ИмяМакета,
ОписаниеКоманды.ОбъектыПечати);

ДвоичныеДанныеМакетов = МакетИДанныеОбъекта.Макеты.ДвоичныеДанныеМакетов;

Секции = МакетИДанныеОбъекта.Макеты.ОписаниеСекций;

Для Каждого ДокументСсылка Из ОписаниеКоманды.ОбъектыПечати Цикл

ДанныеОбъекта = МакетИДанныеОбъекта.Данные[ДокументСсылка][ИмяМакета];

Попытка

ПечатнаяФорма = УправлениеПечатьюКлиент.ИнициализироватьПечатнуюФорму(ТипМакета);
Макет = УправлениеПечатьюКлиент.ИнициализироватьМакетОфисногоДокумента(
ДвоичныеДанныеМакетов[ИмяМакета], ТипМакета);

Внимательно смотрим описание процедуры УправлениеПечатьюКлиент.ИнициализироватьПечатнуюФорму

<Структура> ИнициализироватьПечатнуюФорму(ТипДокумента, НастройкиСтраницыМакета = Неопределено, Макет = Неопределено)

Устарела. Следует использовать УправлениеПечатью.ИнициализироватьПечатнуюФорму.
Создает соединение с выходной печатной формой.
Необходимо вызвать перед любыми действиями над формой.
Функция не работает в любых других браузерах кроме IE.
Перед выполнением функции в веб-клиенте необходимо подключить расширение для работы с 1С:Предприятием.

Описание возвращаемого значения: - новая печатная форма.

Параметры:
•ТипДокумента Строка(Обязательный) тип печатной формы "DOC" или "ODT";

•НастройкиСтраницыМакета Соответствие(Необязательный) параметры из структуры, возвращаемой функцией ИнициализироватьМакет
(параметр устарел, его следует пропускать и использовать параметр Макет);

•Макет Структура(Необязательный) результат функции ИнициализироватьМакет

даже в справке указано что функции нужен параметр макет.

Меняем местами вызов функций, во вторую передаем результат первой:

Секции = МакетИДанныеОбъекта.Макеты.ОписаниеСекций;

Для Каждого ДокументСсылка Из ОписаниеКоманды.ОбъектыПечати Цикл

ДанныеОбъекта = МакетИДанныеОбъекта.Данные[ДокументСсылка][ИмяМакета];

Попытка

Макет = УправлениеПечатьюКлиент.ИнициализироватьМакетОфисногоДокумента(
ДвоичныеДанныеМакетов[ИмяМакета], ТипМакета);
ПечатнаяФорма = УправлениеПечатьюКлиент.ИнициализироватьПечатнуюФорму(ТипМакета,,Макет);

вот так все работает, настройки копируются в форму из макета.

я всегда "топлю" за типовой код. Но и в нем встречаются баги. И все же продолжаю за него топить, так как исправить баг существенно быстрее, чем написать все с нуля и наделать еще больше багов и непонятного кода.
По теме из базы знаний
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот