Каталог решений - Печать с использованием шаблонов Word при помощи модуля из БСП

Печать с использованием шаблонов Word при помощи модуля из БСП

Печать с использованием шаблонов Word при помощи модуля из БСП

В наличии

Вывод на печать документов с использованием шаблонов Word.

Категория:

Описание

Задача: Вывод на печать документов с использованием шаблонов Word. Методика вывода на печать должна быть максимально близкой к методике вывода в табличный документ.

Шаблон: В качестве шаблона может использоваться любой документ Word (doc, docx, dot и т.д.)

Область: Для определения областей документа используется конструкция вида:

{v8 Область.Наименование} 
{/v8 Область.Наименование}

Вложенность областей НЕ поддерживается. Горизонтальное присоединение областей НЕ поддерживается.
Параметры: для описания параметров используется конструкция {v8 НаименованиеПараметра} 

 

Ограничения применения:

 

  1. Алгоритмы рассчитаны на использование только MSWord (без OO Writer).
  2. В работе НЕ использовался более универсальный модуль УправлениеПечатьюКлиент для того что бы можно было использовать вывод в MS-Word из старых конфигураций (построенных без использования БСП) с переносом в них минимального количества модулей БСП
  3. Во время формирования документа используется буфер обмена. Т.е. во время вывода на печать:
    1. Будет затерта информация пользователя в буфере обмена.
    2. Нельзя использовать буфер обмена.


Вывод документа:
На вход процедуры подаются:
ДвоичныеДанныеМакета — макет типа двоичные данные, содержащий файл-шаблон.
ДанныеДляПечати — структура или другой тип данных, поддерживаемый процедурой ЗаполнитьЗначенияСвойств

 

Процедура Печать_MS_Word(ДвоичныеДанныеМакета, ДанныеДляПечати) Экспорт
	Макет = УправлениеПечатьюMSWordКлиент.ПолучитьМакетMSWord(ДвоичныеДанныеМакета, ПолучитьИмяВременногоФайла("docx"));
	Документ = УправлениеПечатьюMSWordКлиент.ИнициализироватьПечатнуюФормуMSWord(Макет);
	
	ПрисоединитьОбласть_MS_Word(Макет, Документ, "Документ", ДанныеДляПечати);
	
	УправлениеПечатьюMSWordКлиент.ПоказатьДокументMSWord(Документ);
	УправлениеПечатьюMSWordКлиент.ЗакрытьСоединение(Макет, Истина);

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

Присоединение области:

Процедура ПрисоединитьОбласть_MS_Word(Макет, Документ, ИмяОбласти, ДанныеДляПечати, ВывестиСтрокуТаблицы = Ложь) Экспорт
	Область = УправлениеПечатьюMSWordКлиент.ПолучитьОбластьМакетаMSWord(Макет, ИмяОбласти);
	Если Область = Неопределено тогда
		Сообщить("При выводе на печать не найдена область """ + ИмяОбласти + """");
		Возврат;
	КонецЕсли;
	
	Область_ = УправлениеПечатьюMSWordКлиент.ПрисоединитьОбласть(Документ, Область, , ВывестиСтрокуТаблицы); 
	Параметры = ПараметрыОбласти_MS_Word(Область_);
	ЗаполнитьЗначенияСвойств(Параметры, ДанныеДляПечати);
	УправлениеПечатьюMSWordКлиент.ЗаполнитьПараметры(Область_, Параметры);
КонецПроцедуры

В БСП заполнение параметров области может производиться только из структуры. При этом получить структуру, содержащую перечень параметров, невозможно. Для этих целей можно использовать  следующую процедуру:

Функция ПараметрыОбласти_MS_Word(Область)
	Параметры = Новый Структура;
	
	Текст = Область.Document.Content.Text;
	Пока Найти(Текст, "{v8 ") > 0 И  Найти(Текст, "}") > 0 цикл
		Начало = Найти(Текст, "{v8 ") + 4;
		Конец = Найти(Текст, "}");
		ИмяПараметра = Сред(Текст, Начало, Конец-Начало);
		Текст = СтрЗаменить(Текст, "{v8 " + ИмяПараметра + "}", "");
		
		Параметры.Вставить(ИмяПараметра, Неопределено);
	КонецЦикла;
	Возврат Параметры;
КонецФункции

Для работы процедур необходимы модули СтроковыеФункцииКлиентСервер и УправлениеПечатьюMSWordКлиентиз БСП. В случае необходимости модули могут быть скопированы в отдельное решение с удалением из них строк, связанных с регистрированием исключений в журнале ошибок.

has been added to your cart:
Оформление заказа