Пример печатной формы в Word для УТ 11.4, ERP. КА 2.4, подложка и колонтитулы




Пример внешней печатной формы с выводом в MS Word для УТ 11.4, КА 2, ERP 2.4, печатная форма печатается из документа «Заказ клиента».

Для примера разобрано програмнное заполнение верхнего и нижнего колонтитулов, а также печать в качестве подложки — логотипа организации (печать картинки на заднем фоне, при этом у логотипа уменьшена яркость и он повернут на 45 градусов).

В качестве примера рассматривается печать в Word из заказа клиента.

Шаблон в формате *.doc хранится как двоичные данные в макете, при этом внутри шаблона необходимые для заполнения поля указывается в знак решетки: #Организация#, #Контрагент# и т.п. Это сделано и в основном теле документа, и в колонтитулах.

В сведениях о внешней обработке указывается, что это "ВызовКлиентскогоМетода":

строкаКоманды = тзКоманд.Добавить();
строкаКоманды.Идентификатор = Идентификатор;
строкаКоманды.Представление = Наименование;
строкаКоманды.ПоказыватьОповещение = Истина;
строкаКоманды.Использование = "ВызовКлиентскогоМетода";
строкаКоманды.ПоказыватьОповещение = "Истина";

 

Далее, непосредственно в модуле формы в процедуре Печать получаем макет (на клиенте), и обращаемся к нему:

Процедура Печать(ИдентификаторКоманды, ОбъектыНазначения) Экспорт

Для Каждого ОбъектНазначения Из ОбъектыНазначения Цикл
MSWord  = ПолучитьИзВременногоХранилища(МакетСервер("ЗаказКлиентаМакет"));
ИмяВрем = ПолучитьИмяВременногоФайла(".doc");
MSWord.Записать(ИмяВрем);

// выводим данные
Попытка
//получаем объект - документ. Это OLE объект, с ним можно работать используя все методы, которые существуют в VBA
//Документ = ПолучитьCOMОбъект(ИмяВрем);
COMОбъект = Новый COMОбъект("Word.Application");
//COMОбъект.Documents.Add();
COMОбъект.WordBasic.DisableAutoMacros(1);
COMОбъект.Documents.Open(ИмяВрем);


Документ = COMОбъект.ActiveDocument;


......

 

Все заполнение документа происходит на клиенте (предварительно необходимо получить нужные данные).

 

Ну и отдельно, заполнение колонтитулов:

&НаКлиенте
Процедура ВыполнитьЗаменуКолонтитула(СтруктураДанных, Документ, ЭтоВерхнийКолонититул = Ложь)

Для Каждого КлючЗначение Из СтруктураДанных Цикл
ТекстЧтоЗаменять = "#" + КлючЗначение.Ключ + "#";
ТекстНаЧтоЗаменять = КлючЗначение.Значение;

Если ЭтоВерхнийКолонититул ТОгда
Документ.Sections(1).Headers(1).Range.Find.Execute(ТекстЧтоЗаменять, Ложь, Истина, Ложь, , , Истина, , Ложь, ТекстНаЧтоЗаменять, 2);
Иначе
Документ.Sections(1).Footers(1).Range.Find.Execute(ТекстЧтоЗаменять, Ложь, Истина, Ложь, , , Истина, , Ложь, ТекстНаЧтоЗаменять, 2);
КонецЕсли;
КонецЦикла;

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

 

и вставка подложки:

&НаКлиенте
Процедура ВставитьРисунокКакПодложку(COMОбъект,АдресВхранилищеРисунок, Расширение)

ИмяФайла = ПолучитьИмяВременногоФайла(Расширение);
ПолучитьФайл(АдресВхранилищеРисунок, ИмяФайла, Ложь);

Документ = COMОбъект.ActiveDocument;
Рис = Документ.Sections(1).Headers(1).Shapes.AddPicture(ИмяФайла,Ложь,Истина);

Рис.PictureFormat.Brightness = 0.85; //уменьшаем яркость и контрастность
Рис.PictureFormat.Contrast = 0.25;
Рис.WrapFormat.AllowOverlap = True;
Рис.WrapFormat.Type = 3;
Рис.LockAspectRatio = True;

Рис.Left = -999995;
Рис.RelativeHorizontalPosition = 1;
Рис.RelativeVerticalPosition = 1;
Рис.Top = -999995;
Рис.Rotation = 315; //поворачиваем под углом

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

 

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

 

Тестировалось на платформе 8.3.13.1690 на УТ 11.4.7.114 и ERP 2.4.7.141

5 Comments

  1. Terve!R

    Жаль примера печати в скриншотах нет.

    Reply
  2. DarkPinch222

    (1) Последний скришот показывает как выглядит сформированный Word, с подложкой.

    Reply
  3. Terve!R

    (2) а где подложка? Вроде только колонтитул вижу…

    Reply
  4. DarkPinch222

    (3)на скриншоте — надпись «Москва», с красной звездой — это подложка, выполнена с понижением контрастности, и под углом 45 градусов. Эта картинка берется из логотипа организации

    Reply
  5. Terve!R

    (4) и где эта надпись на скриншоте? Контрастность видимо совсем на нуле, раз подложки совсем не видно.

    Reply

Leave a Comment

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