Пример печатной формы в Word для УТ 11.4, ERP. КА 2.4, подложка и колонтитулы
Разработка - Инструментарий разработчика
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
В качестве примера рассматривается печать в 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
Вступайте в нашу телеграмм-группу Инфостарт