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

Публикация № 579811

Печать - Печатные формы документов

УТ11.2 взаиморасчеты взаимозачет задолженности акт взаиморасчетов MS Word внешняя печатная форма Управление торговлей 11

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

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

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

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

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

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

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

на

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

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

&НаКлиенте

Всё! :)

0

Скачать файлы

Наименование Файл Версия Размер
Акт взаимозачетов С-Ф MS Word (УТ11.2)
.epf 8,77Kb
23.01.17
9
.epf 1.1 8,77Kb 9 Скачать

См. также

Специальные предложения

Избранное Подписка Сортировка: Древо
В этой теме еще нет сообщений.
Оставьте свое сообщение