Подключаемая печатная форма "Акт взаимозачета (Microsoft Word)", дополненная номерами Счетов-фактур для документа "Взаимозачет задолженности" в УТ 11.2


Стоит задача — в УТ 11.2 в документе «Взаимозачет задолженности» добавить к выходной форме на MS Word, номера и даты счетов-фактур, соответствующих документам Поступления / Реализации товара (и прочих). Решение этой задачи в прилагаемом файле внешней печатной формы.

Вроде бы простая задача — добавить описание связанных с документами Поступления/Реализации товара в «Акте взаимозачета» счетов-фактур, но все усложняется тем, что эта печатная форма строится хоть и в 1С, но выводится совсем не в табличный документ, а в отдельный файл MS Word. Возникает мысль проследить процедуру печати. На удивление, она оказалась пустой (в Модуле менеджера документа «Взаимозачет задолженности»):

Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

КонецПроцедуры

Вместо нее используется абсолютная отсылка нас к общему модулю через обработчик печати:

// Акт взаимозачета (Microsoft Word)
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Обработчик = "УправлениеПечатьюУТКлиент.ПечатьАктаВзаимозачетаЗадолженностиMicrosoftWord";
КомандаПечати.МенеджерПечати = "";
КомандаПечати.Идентификатор = "АктВзаимозачетаMicrosoftWord";
КомандаПечати.Представление = НСтр("ru = 'Акт взаимозачета (Microsoft Word)'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.ТребуетсяРасширениеРаботыСФайлами = Истина;

Как обычно, не все так просто, и в процессе выполнения нас гоняют по нескольким общим модулям, затем зачем-то снова возвращаемся в Модуль менеджера документа, и так еще пару раз. В итоге, я выудил непосредственно саму процедуру печати, которая занимается «постройкой» документа MS Word с нашими данными, и вроде бы можно уже дать глазам отдохнуть и убрать пальцы с клавиш F10 и F11, но тут Табло нам подсказывает, что в эту процедуру мы попадаем уже без ссылочных данных, и все переменные имеют строковый тип. Возникает логичный вопрос: а как нам получить связанные Счета-фактуры, если мы не имеем ссылок на документы? Самым простым решением, на мой взгляд, является контакация номеров С-Ф к строковым представлениям документов по номеру строки в исходных табличных частях, отталкиваясь от их имени: «Дебиторская задолженность» или «Кредиторская задолженность». Сработало! Теперь мы имеем целиком рабочий код печати в отдельный документ MS Word, даже не зная устройства этого макета! Далее делаем два совершенно обыденных для любого программиста действия: COPY — PASTE в «болванку» доп. печатной формы, регистрируем в базе… И понимаем, что печать не работает, так как в коде используется отсылка к клиентским общим модулям! Меняем описание доп. печатной формы с

НоваяКоманда=ТаблицаКоманд.Добавить();
НоваяКоманда.Использование="ВызовСерверногоМетода";

на

НоваяКоманда=ТаблицаКоманд.Добавить();
НоваяКоманда.Использование="ВызовКлиентскогоМетода";

также перемещаем весь исполняемый код в форму обработки, снабдив его директивой

&НаКлиенте

Всё! 🙂

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *