Печать макета MS Word в любом документе с помощью БСП

23.02.21

Разработка - БСП (Библиотека стандартных подсистем)

В данной статье рассмотрим типовой функционал вывода на печать макетов печатных форм MS Word (*.docx) для любого документа конфигурации, основанной на библиотеке стандартных подсистем. Вариант клиент-серверный.

 

Введение

Привет всем! В данной статье предлагаю разобрать методику вывода макетов печатных форм в формате MS Word (*.docx) с применением самых актуальных методов библиотеки стандартных подсистем (БСП). Данная методика позволит вам создавать печатные формы MS Word (*.docx) для любых документов в конфигурациях, основанных на БСП. Актуальная версия БСП на момент написания статьи - это версия 3.1.4.159 - середина февраля 2021 года.

Хочу так же отметить, что методика является так же и клиент-серверной. Возможно выводить макеты печатных форм MS Word (*.docx) на клиентах серверной базы, а это немаловажный момент.

 

Первоначальная подготовка и настройка документа конфигурации для подсистемы печати.

Итак, в данном разделе быстро пробежимся по алгоритму подключения документа конфигурации к подсистеме печати библиотеки стандартных подсистем по-шагово. Прошу обратить на него внимание, он будет чуток посложнее, чем в предыдущей статье:

 

Шаг 1. Регистрация документа в общем модуле - УправлениеПечатьюПереопределяемый:

Создаем документ - ДокументWord. Добавляем запись о нашем документе в процедуру

ПриОпределенииОбъектовСКомандамиПечати(СписокОбъектов) Экспорт. Выглядит это так:

 
 Регистрация документа в общем модуле УправлениеПечатьюПереопределяемый

 

Процедура ПриОпределенииОбъектовСКомандамиПечати(СписокОбъектов) Экспорт
	
	// _Демо начало примера
	СписокОбъектов.Добавить(Справочники._ДемоКонтактныеЛицаПартнеров);
	СписокОбъектов.Добавить(Справочники._ДемоКонтрагенты);
	СписокОбъектов.Добавить(Справочники._ДемоОрганизации);
	СписокОбъектов.Добавить(Справочники._ДемоПартнеры);
	СписокОбъектов.Добавить(Справочники._ДемоФизическиеЛица);
	СписокОбъектов.Добавить(Документы._ДемоОприходованиеТоваров);
	СписокОбъектов.Добавить(Документы._ДемоПеремещениеТоваров);
	СписокОбъектов.Добавить(Документы._ДемоРеализацияТоваров);
	СписокОбъектов.Добавить(Документы._ДемоСписаниеТоваров);
	СписокОбъектов.Добавить(Документы._ДемоСчетНаОплатуПокупателю);
	СписокОбъектов.Добавить(Документы._ДемоРасходныйКассовыйОрдер);
	
	СписокОбъектов.Добавить(Документы.ДокументWord); // это наш документ

	// _Демо конец примера
	
КонецПроцедуры

 

Шаг 2. Добавление события выполнения печати в ФормуДокумента (в данной статье будем ставить кнопку печати только в "ФормеДокумента"):

 
 Добавление события выполнения печати в ФормуДокумента

 


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
КонецПроцедуры

// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаКлиенте 
Процедура Подключаемый_ВыполнитьКоманду(Команда)
	ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Объект);
КонецПроцедуры 

&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат)
	ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Объект, Результат);
КонецПроцедуры 

&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
	ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры  
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды

 

Шаг 3. Добавляем команду печати и ее обработку, а так же функцию "ПолучитьДанныеПечати" в модуль менеджера документа:

 
 Добавляем команду печати, процедуру печати и функция "ПолучитьДанныеПечати" в модуль менеджера

 

Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
		
	// В формате Microsoft Word.
	КомандаПечати = КомандыПечати.Добавить();
	КомандаПечати.Идентификатор = "ТестовыйДокументВорд";  // ид
	КомандаПечати.Представление = НСтр("ru = 'Документ пример Ворд'");
	КомандаПечати.Картинка = БиблиотекаКартинок.ФорматWord2007; // картинка на кнопку
	КомандаПечати.ПроверкаПроведенияПередПечатью = Истина; // проверка проведения

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


Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
		
	ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "ТестовыйДокументВорд");
	
        // ****** **** ****
		
КонецПроцедуры


Функция ПолучитьДанныеПечати(Знач Согласия, Знач МассивИменМакетов) Экспорт
	
	ДанныеПоВсемОбъектам = Новый Соответствие;
	
	// **** **** ****
	
	Возврат ДанныеПечати;
	
КонецФункции

 

Шаг 4. Подготовим шаблон документа MS Word и загрузим его в макет с типом бинарные данные.

Здесь я приведу небольшой код шаблона документа MS Word, который разбит по областям с параметрами. Макет назовем "ТестовыйПечатныйМакетРу". Выглядит он вот так:

 
 Шаблон макета MS WORD

 

{v8 Область.НомерДата}
{v8 ДатаСогласия}
{/v8 Область.НомерДата}

{v8 Область.Преамбула}
{v8 ФИО}, именуемый в дальнейшем «Субъект персональных данных», разрешает {v8 ОрганизацияВДательномПадеже}, в лице ответственного за обработку персональных данных {v8 ОтветственныйЗаОбработкуПерсональныхДанныхВРодительномПадеже}, далее «Оператор», обработку персональных данных, приведенных в пункте 2 настоящего согласия на следующих условиях:
{/v8 Область.Преамбула}

 

Так, мы создали стандартную подготовку любого документа конфигурации для подсистемы печати (немного подробнее можно прочитать в предыдущей моей статье - вот здесь), теперь перейдем к описанию процедур и функций, позволяющих получить макет MS Word (*.docx), заполнить его и вывести на печать готовую печатную форму.

 

Получение макета MS Word, его заполнение и вывод на печать.

В данном разделе мы доработаем нашу процедуру 

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

 

Код процедуры вот такой:

 
 Формирует печатные формы.

 

Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
	
		
	ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "ТестовыйДокументВорд");
	Если ПечатнаяФорма <> Неопределено Тогда
		ИмяМакета = "ТестовыйДокументВорд";
		МакетИДанныеОбъекта = УправлениеПечатьюВызовСервера.МакетыИДанныеОбъектовДляПечати("Документ.Документ2", ИмяМакета, МассивОбъектов);
		
		ОфисныеДокументы = Новый Соответствие;
		
		Шаблон = НСтр("ru = 'Заголовок документа  (№[Номер] получено [Дата])'");
		
		ЗначенияРеквизитовДокументов = ОбщегоНазначения.ЗначенияРеквизитовОбъектов(МассивОбъектов, "Номер,Дата,Ссылка");
		
		Для Каждого Ссылка Из МассивОбъектов Цикл
			ЗначенияРеквизитовДокумента = ЗначенияРеквизитовДокументов[Ссылка];
			
			
			ЗначенияРеквизитовДокумента.Дата = Формат(ЗначенияРеквизитовДокумента.Дата, "ДЛФ=D");
			
			// используем стандартную подсистему - префиксация объектов
			Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПрефиксацияОбъектов") Тогда
				МодульПрефиксацияОбъектовКлиентСервер = ОбщегоНазначения.ОбщийМодуль("ПрефиксацияОбъектовКлиентСервер");
				ЗначенияРеквизитовДокумента.Номер = МодульПрефиксацияОбъектовКлиентСервер.НомерНаПечать(ЗначенияРеквизитовДокумента.Номер);
			КонецЕсли;
			
			
			ИмяДокумента = СтроковыеФункцииКлиентСервер.ВставитьПараметрыВСтроку(Шаблон, ЗначенияРеквизитовДокументов[Ссылка]);
			
			АдресХранилищаОфисныйДокумент = НапечататьСогласиеНаОбработкуПерсональныхДанныхСубъекта(Ссылка, МакетИДанныеОбъекта, ИмяМакета);
			
			ОфисныеДокументы.Вставить(АдресХранилищаОфисныйДокумент, ИмяДокумента);
		КонецЦикла;
		
		ПечатнаяФорма.СинонимМакета    = НСтр("ru = 'Тестовый документ Ворд (документ MS Word)'");
		ПечатнаяФорма.ОфисныеДокументы = ОфисныеДокументы;
	КонецЕсли;
		
КонецПроцедуры

Далее, дорабатываем функцию:

 
 Подготавливает данные объекта к выводу на печать.

 

Функция ПолучитьДанныеПечати(Знач Согласия, Знач МассивИменМакетов) Экспорт
	
	ДанныеПоВсемОбъектам = Новый Соответствие;
	
	СоответствиеПоСогласиям = СоответствиеДанныхДляПечатиСогласий(Согласия);
	
	Для Каждого ОбъектСсылка Из Согласия Цикл
		ДанныеОбъектаПоМакетам = Новый Соответствие;
		Для Каждого ИмяМакета Из МассивИменМакетов Цикл
			ДанныеОбъектаПоМакетам.Вставить(ИмяМакета, СоответствиеПоСогласиям[ОбъектСсылка]);
		КонецЦикла;
		ДанныеПоВсемОбъектам.Вставить(ОбъектСсылка, ДанныеОбъектаПоМакетам);
	КонецЦикла;
	
	ОписаниеОбластей = Новый Соответствие;
	ДвоичныеДанныеМакетов = Новый Соответствие;
	
	Для Каждого ИмяМакета Из МассивИменМакетов Цикл
		Если ИмяМакета = "ТестовыйДокументВорд" Тогда
			ДвоичныеДанныеМакетов.Вставить(ИмяМакета, УправлениеПечатью.МакетПечатнойФормы("Документ.Документ2.ТестовыйПечатныйМакетРу"));
		КонецЕсли;
		ОписаниеОбластей.Вставить(ИмяМакета, ОписаниеОбластейМакетаОфисногоДокумента());
	КонецЦикла;
	
	Макеты = Новый Структура("ОписаниеОбластей, ДвоичныеДанныеМакетов");
	Макеты.ОписаниеОбластей = ОписаниеОбластей;
	Макеты.ДвоичныеДанныеМакетов = ДвоичныеДанныеМакетов;
	
	ДанныеПечати = Новый Структура("Данные, Макеты");
	ДанныеПечати.Данные = ДанныеПоВсемОбъектам;
	ДанныеПечати.Макеты = Макеты;
	
	Возврат ДанныеПечати;
	
КонецФункции

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

 
 Вспомогательные функции

 

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


Функция ДанныеДляПечатиСогласий(Согласия)
	
	ДанныеДляПечати = Новый Массив;
	
	Описание = ОписаниеСогласия();
	Описание.ДокументОснование = Согласия[0];
	Описание.ДатаСогласия = ТекущаяДата();
	Описание.ФИО = "Иванов Иван Иванович";
	Описание.ОрганизацияВДательномПадеже  = "ООО Перспектива";
	Описание.ОтветственныйЗаОбработкуПерсональныхДанныхВРодительномПадеже = "Федоров Федор";
	ДанныеДляПечати.Добавить(Описание);
	
	
	Возврат ДанныеДляПечати;
	
КонецФункции


Функция СоответствиеДанныхДляПечатиСогласий(Согласия)
	
	Соответствие = Новый Соответствие;
	
	ДанныеДляПечати = ДанныеДляПечатиСогласий(Согласия);
	
	Для Каждого ОписаниеСогласия Из ДанныеДляПечати Цикл
		Соответствие.Вставить(ОписаниеСогласия.ДокументОснование, ОписаниеСогласия);
	КонецЦикла;
	
	Возврат Соответствие;
	
КонецФункции

Функция НапечататьСогласиеНаОбработкуПерсональныхДанныхСубъекта(ДокументСсылка, МакетИДанныеОбъекта, ИмяМакета)
	
	ТипМакета				= МакетИДанныеОбъекта.Макеты.ТипыМакетов[ИмяМакета];
	ДвоичныеДанныеМакетов	= МакетИДанныеОбъекта.Макеты.ДвоичныеДанныеМакетов;
	Области					= МакетИДанныеОбъекта.Макеты.ОписаниеОбластей;
	ДанныеОбъекта			= МакетИДанныеОбъекта.Данные[ДокументСсылка][ИмяМакета];
	
	Макет = УправлениеПечатью.ИнициализироватьМакетОфисногоДокумента(ДвоичныеДанныеМакетов[ИмяМакета], ТипМакета, ИмяМакета);
	Если Макет = Неопределено Тогда
		Возврат "";
	КонецЕсли;
	
	ЗакрытьОкноПечатнойФормы = Ложь;
	Попытка
		ПечатнаяФорма = УправлениеПечатью.ИнициализироватьПечатнуюФорму(ТипМакета, Макет.НастройкиСтраницыМакета, Макет);
		АдресХранилищаПечатнойФормы = "";
		Если ПечатнаяФорма = Неопределено Тогда
			УправлениеПечатью.ОчиститьСсылки(Макет);
			Возврат "";
		КонецЕсли;
	
		Область = УправлениеПечатью.ОбластьМакета(Макет, Области[ИмяМакета]["НомерДата"]);
		УправлениеПечатью.ПрисоединитьОбластьИЗаполнитьПараметры(ПечатнаяФорма, Область, ДанныеОбъекта, Ложь);
		
		Область = УправлениеПечатью.ОбластьМакета(Макет, Области[ИмяМакета]["Преамбула"]);
		УправлениеПечатью.ПрисоединитьОбластьИЗаполнитьПараметры(ПечатнаяФорма, Область, ДанныеОбъекта, Ложь);
							
		АдресХранилищаПечатнойФормы = УправлениеПечатью.СформироватьДокумент(ПечатнаяФорма);
	Исключение
		ОбщегоНазначения.СообщитьПользователю(КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
		ЗакрытьОкноПечатнойФормы = Истина;
		Возврат "";
	КонецПопытки;
	
	УправлениеПечатью.ОчиститьСсылки(ПечатнаяФорма, ЗакрытьОкноПечатнойФормы);
	УправлениеПечатью.ОчиститьСсылки(Макет);
	
	Возврат АдресХранилищаПечатнойФормы;
	
КонецФункции


Функция ОписаниеСогласия()
	
	ОписаниеСогласия = Новый Структура(
		"ДатаСогласия,
		|ДокументОснование, 
		|ОрганизацияВДательномПадеже,
		|ОтветственныйЗаОбработкуПерсональныхДанныхВРодительномПадеже, 
		|ФИО");
		
	
	Возврат ОписаниеСогласия;
	
КонецФункции

Все. Теперь, мы доработали модуль менеджера нашего документа для работы с макетами MS Word. Переходим к заключению и делаем выводы.

 

Заключение и выводы

В данной статье мы рассмотрели базовый стандарт разработчика (в рамках БСП) по выводу печатных форм в формате MS Word. Данный алгоритм - клиент-серверный. Разработка примера велась на библиотеке стандартных подсистем 3.1.4.159 и Платформе 1с 8.3.18.1208.

Хочу отметить, что данная статья представляет собой разработку полноценного примера вывода печатной формы - ничего лишнего здесь не нужно (на формы дополнительные группы добавлять не нужно - это все очень старые версии БСП).

Спасибо, что прочитали данную статью, надеюсь, что она внесет ясность работы с формами MS Word.

 

 

Другие мои материалы по БСП

Так же прошу ознакомиться с другими моими статьями по функционалу библиотеки стандартных подсистем и типовым конфигурациям:

Полезные встроенные функции для работы с печатными формами и не только на УТ 11.4 и БП 3.0 (сравнение)

Базовое понимание внедрения механизма печати в любом документе конфигурации на БСП

Работаем с контактной информацией в конфигурациях на БСП

Генерация штрихкодов с помощью БСП для программистов

Типовые методы конфигурации "Зарплата и управление персоналом", которые пригодятся каждому ЗУП программисту и не только

БСП клиент-сервер печать макет word docx

См. также

Шаблон многопоточного выполнения фонового задания

Инструментарий разработчика БСП (Библиотека стандартных подсистем) Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Пример шаблона для многопоточного выполнения фонового задания на основе БСП. Шаблоны сделаны для процедуры и функции.

2 стартмани

03.05.2024    815    11    Hitcher    2    

8

Создать на основании - своя кнопка (БСП). Проблема двух подменю Создать на основании

БСП (Библиотека стандартных подсистем) Адаптация типовых решений Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Понадобилось в подменю "Создать на основании" добавить свою команду, которая открывает обработку. В процессе доработок появилась проблема двух подменю "Создать на основании". В статье о том, как решились проблемы.

01.03.2024    2448    dimanich70    8    

15

Заполнение поля адреса в своей обработке [БСП]

Механизмы платформы 1С БСП (Библиотека стандартных подсистем) Программист Стажер Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Небольшая шпаргалка по функциям БСП касательно адреса. Так скажем, еще один способ помимо https://infostart.ru/1c/articles/1060970/

12.02.2024    931    FilippovRI    0    

17

Расширяем возможности дополнительных обработок и настраиваем их отладку

БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Уже не одна веб-страница исписана знаниями о дополнительных обработках, как создать, как подключить. Есть масса вариантов, как их можно отладить. Я разобрался в кишках работы библиотеки и покажу, как можно расширить возможности дополнительных отчетов, а также покажу удобный способ отладки.

07.02.2024    2924    YA_418728146    11    

49

1С:БСП Дополнительные реквизиты и сведения

БСП (Библиотека стандартных подсистем) Программист Платформа 1С v8.3 Бесплатно (free)

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

19.01.2024    8172    PROSTO-1C    5    

47
Отзывы
9. quazare 3661 17.04.22 15:36 Сейчас в теме
Все кто желает - разные примеры работы с БСП и другие ссылки на статье - находятся на моем телеграмм канале
leyburg; EvgeniyOlxovskiy; user1379552; +3 Ответить
Остальные комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. lepth 25.02.21 12:17 Сейчас в теме
Спасибо за материал!
Беспокоит один вопрос - использование областей в макете обязательно? Бывали случаи, когда макет Word нужно сформировать строго под фиксированный бланк (например вкладыш в диплом). Указание "{v8 Область.Преамбула}" сильно затрудняет эту задачу.
2. quazare 3661 25.02.21 12:22 Сейчас в теме
(2) здравствуйте! в рамках системы БСП - да, предлагается использование областей. Но есть другие (я знаю еще 2 честных способа) вывода макета ворд и без областей и БСП. В статье сделан акцент на использование библиотеки.
3. user891149 09.09.21 19:40 Сейчас в теме
А можно ли и как при этом вставить в макет не текстовое поле, а картинку, например логотип организации? При этом для разных организаций он разумеется разный, то есть это тоже параметр.
10. MrWashington 12.07.22 11:34 Сейчас в теме
(3)Вот тоже пробывал, так и не разобрался как вывести картинку в макет WORD.
4. mariya.mary.00 14.12.21 17:28 Сейчас в теме
Добрый день!

А не подскажите, можно ли как-то сделать вывод печатных форм по условию - например, для одного документа необходимо выводить одновременно 2 макета, а для другого - один, в зависимости от условий.
5. quazare 3661 14.12.21 17:39 Сейчас в теме
(4) возможно, почему же нет
6. mariya.mary.00 14.12.21 21:30 Сейчас в теме
(5) я делаю ВПФ, подскажите, пожалуйста. Если в идентификаторе объявляю несколько макетов(например,3), то при печати 2 по условию, получаю ошибку, что для 3 - не сформирована печатная форма.
Вот код, который у меня в процедуре печати:
    Если  Тогда
            Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ПФ_DOC_ПечатьДокументWordФК") Тогда
            ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "ПФ_DOC_ПечатьДокументWordФК"); //Идентификатор формы в команде
            Если ПечатнаяФорма <> Неопределено Тогда
                ОфисныеДокументы = НапечататьАктСписанияФК(МассивОбъектов);
                ПечатнаяФорма.ТабличныйДокумент = Новый ТабличныйДокумент;
                ПечатнаяФорма.СинонимМакета    = НСтр("ru = 'Печать документа Word'");
                ПечатнаяФорма.ОфисныеДокументы = ОфисныеДокументы;
            КонецЕсли;
            КонецЕсли;

        ИначеЕсли 
            Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ПФ_DOC_ПечатьДокументWordОбычные") Тогда
            ПечатнаяФорма1 = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "ПФ_DOC_ПечатьДокументWordОбычные"); //Идентификатор формы в команде
            Если ПечатнаяФорма1 <> Неопределено Тогда
                ОфисныеДокументы1 = НапечататьАктСписанияОбычные(МассивОбъектов);
                ПечатнаяФорма1.ТабличныйДокумент = Новый ТабличныйДокумент;
                ПечатнаяФорма1.СинонимМакета    = НСтр("ru = 'Печать документа Word'");
                ПечатнаяФорма1.ОфисныеДокументы = ОфисныеДокументы1;
            КонецЕсли;
            КонецЕсли;

        КонецЕсли;
    КонецЦикла;
Показать
7. mariya.mary.00 25.01.22 17:10 Сейчас в теме
Добрый день!

Не подскажите, есть ли способ как программно пересохранить созданный файл word в pdf?
Т.е чтобы при нажатии кнопки печати вместо word открывался pdf файл?
8. fizs 21.02.22 18:00 Сейчас в теме
Скажите, а если не из документа, а из внешней обработки нужна печать макета Word, то как это сделать?
9. quazare 3661 17.04.22 15:36 Сейчас в теме
Все кто желает - разные примеры работы с БСП и другие ссылки на статье - находятся на моем телеграмм канале
leyburg; EvgeniyOlxovskiy; user1379552; +3 Ответить
11. AbadaTouro 11 03.08.22 13:22 Сейчас в теме
Так и не понятно из статьи как вставить картинку програмно
12. AbadaTouro 11 03.08.22 13:41 Сейчас в теме
(10) (11) Хотя
посмотрел по коду оказывается для того что бы вывести картинку в такой шаблон WORD достаточно получить ссылку на двоичные данные файла

СтруктураКартинки = ПрисоединенныеФайлы.ПолучитьДанныеФайла(ФаксимилеПодписи);
Картинка = СтруктураКартинки.СсылкаНаДвоичныеДанныеФайла;

ДанныеПодвала1Лист.Вставить("ФаксимилеПодписи",Картинка);
slige; Mouse85; MrWashington; +3 Ответить
13. MrWashington 03.08.22 17:19 Сейчас в теме
(12)Супер, проверил, работает ! Можно КП или прайс делать в WORD. @AbadaTouro, спасибо
16. WorkerPavel 27.09.22 17:41 Сейчас в теме
(12)
ДанныеПодвала1Лист

А тип области у вас какой?
20. Archi3670 41 17.02.23 13:42 Сейчас в теме
(12)
СтруктураКартинки = ПрисоединенныеФайлы.ПолучитьДанныеФайла(ФаксимилеПодписи);
Картинка = СтруктураКартинки.СсылкаНаДвоичныеДанныеФайла;

ДанныеПодвала1Лист.Вставить("ФаксимилеПодписи",Картинка);


На БСП 3.1.7.190 валится в ошибку

Ошибка разбора XML% -[2,52]
Ошибка:
Namespace prefix wp on inline is not defined

Может у кого есть решение поделитесь.
14. user1336105 07.09.22 18:06 Сейчас в теме
очень хелп!!!!!
В конечном документе параметры начинаются с табуляции. Как с этим бороться???
15. WorkerPavel 27.09.22 17:14 Сейчас в теме
Подложку с помощью механизмов БСП напечатать можно?
В макете она есть а на печать не выводится.
17. AbadaTouro 11 28.09.22 13:39 Сейчас в теме
(16) Как какой .
ДанныеПодвала1Лист = Новый Структура;
18. WorkerPavel 28.09.22 14:14 Сейчас в теме
(17)Я имел ввиду это:
УправлениеПечатью.ДобавитьОписаниеОбласти(ОписаниеОбластей, "Лого",					"Общая");

Т.е. я предполагал что может тип области для картинок есть специальный, но оказалось что и с "Общая" работает.
19. user788141 13.11.22 02:01 Сейчас в теме
(18) а есть варианты расположения картинки в шаблоне ворда, так что бы регулировать размер или положение на странице? размер печати в png вроде правильные а в ворде выводит больше размером, и положение поменять в обычной области не получится...
EMelihoff; +1 Ответить
21. ZhilichMaksim 23.03.23 11:35 Сейчас в теме
А как сделать так, чтобы колонтитулы отображались?
23. 7OH 69 28.04.23 16:36 Сейчас в теме
(21) Аналогичный вопрос.
Оно на них вообще забивает, что на размер, что на содержимое, хотя области в колонтитулах обозначены.
24. 7OH 69 28.04.23 17:18 Сейчас в теме
(21)
Поправить описание областей - добавить колонтитулы
Функция ОписаниеОбластейМакетаОфисногоДокумента()
	
	ОписаниеОбластей = Новый Структура;
	
	УправлениеПечатью.ДобавитьОписаниеОбласти(ОписаниеОбластей, "ОбластьШапка", "Общая");
	УправлениеПечатью.ДобавитьОписаниеОбласти(ОписаниеОбластей, "Реквизиты", "Общая");
	УправлениеПечатью.ДобавитьОписаниеОбласти(ОписаниеОбластей, "ВерхнийКолонтитул", "ВерхнийКолонтитул");
	УправлениеПечатью.ДобавитьОписаниеОбласти(ОписаниеОбластей, "НижнийКолонтитул", "НижнийКолонтитул");
	
	Возврат ОписаниеОбластей;
	
КонецФункции

Показать


Поправить вывод - добавить вручную вывод

Функция НапечататьСогласиеНаОбработкуПерсональныхДанныхСубъекта(ДокументСсылка, МакетИДанныеОбъекта, ИмяМакета)
		// начало функции

		//ВЫВОД ВЕРХНЕГО КОЛОНТИТУЛА
		Область = УправлениеПечатьюКлиент.ОбластьМакета(Макет, Области[ИмяМакета]["ВерхнийКолонтитул"]);
		УправлениеПечатьюКлиент.ПрисоединитьОбласть(ПечатнаяФорма, Область, Ложь);

		//Вывод областей листа
		Область = УправлениеПечатью.ОбластьМакета(Макет, Области[ИмяМакета]["НомерДата"]);
		УправлениеПечатью.ПрисоединитьОбластьИЗаполнитьПараметры(ПечатнаяФорма, Область, ДанныеОбъекта, Ложь);
		
		Область = УправлениеПечатью.ОбластьМакета(Макет, Области[ИмяМакета]["Преамбула"]);
		УправлениеПечатью.ПрисоединитьОбластьИЗаполнитьПараметры(ПечатнаяФорма, Область, ДанныеОбъекта, Ложь);
		
		//ВЫВОД НИЖНЕГО КОЛОНТИТУЛА
		Область = УправлениеПечатьюКлиент.ОбластьМакета(Макет, Области[ИмяМакета]["НижнийКолонтитул"]);
		УправлениеПечатьюКлиент.ПрисоединитьОбласть(ПечатнаяФорма, Область, Ложь);

		//Код остального вывода

КонецПроцедуры
Показать
22. user918764 20.04.23 08:48 Сейчас в теме
Добрый день!

Подскажите, пожалуйста, возможно ли вывести горизонтальный разделитель страниц после определенных областей при такой печати?
25. GreenOgr 16.06.23 00:02 Сейчас в теме
(22) можно, в "УправлениеПечатью.ПрисоединитьОбластьИЗаполнитьПараметры(ПечатнаяФорма, Область, ДанныеОбъекта, Ложь) "- вместо параметра "Ложь" ставьте "Истина"
26. user918764 28.08.23 14:59 Сейчас в теме
Добрый день! А возможно ли по кнопке (не через внешнюю печатную форму) сформировать такой документ по шаблону?
27. annasalnikova 21 16.09.23 23:00 Сейчас в теме
Добрый день. Подскажите пожалуйста, файл Ворд открывается но имя у него странное: v8_acaaf52f-2bd6-48dc-8756-a38343527182Трудовой Договор №ЗП-5 от 09.01.2023

как сделать , чтобы было чисто "Трудовой Договор №ЗП-5 от 09.01.2023"?
28. quazare 3661 17.09.23 06:44 Сейчас в теме
(27) вы можете скачать мой рабочий пример https://infostart.ru/1c/tools/1885539/ или подписаться на мой тг-канал о разработке
29. user790708 06.03.24 17:37 Сейчас в теме
Почему БСП может не находить область?
Сделал простой шаблон:
{v8 Область.Договор}
Номер: {v8 Номер}
{/v8 Область. Договор}

1с не видит в таком файле область.
31. fixin 4256 25.03.24 13:11 Сейчас в теме
(29) может она внутри таблицы?
30. fixin 4256 25.03.24 13:10 Сейчас в теме
Спасибо, использовал ваши советы в своей статье: https://geniy1s.ru/pechatnye-formy-mxl-word-cherez-rasshirenie/
Оставьте свое сообщение