Печать макета 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 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Розница 3.0 Абонемент ($m)

Часто нужно ограничить дополнительные отчеты по видимости для разных пользователей. В "варианте отчета" для дополнительного отчета (БСП) можно указать конкретных пользователей, которым доступен данный вариант. Но данная настройка не срабатывает, т.к. варианты дополнительных отчетов считаются "предопределенными".

1 стартмани

14.09.2023    244    1    itmind    0    

8

Оптимизация персонализированных рассылок отчетов в БСП

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

Представленная в публикации разработка позволяет оптимизировать персонализированную рассылку отчетов БСП за счет предварительной выборки получателей отчетов.

1 стартмани

10.07.2023    800    0    Sirruf    0    

3

Снова об использовании ТекущаяДата() на клиенте и на сервере и о работе в разных часовых поясах

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

Можно ли применять ТекущаяДата() вопреки требованиям стандартов 1С? Безопасно ли использование функции ОбщегоНазначенияКлиент.ДатаСеанса() из БСП? Как правильно поступать при работе пользователей в разных часовых поясах?

24.04.2023    5519    Alxby    26    

44

Печать в WORD при помощи БСП. Вывод уникальных ссылок в строки таблицы

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

Пример вывода уникальных ссылок в строку таблицы макета WORD при печати с помощью БСП. Может быть полезна при создании интерактивных прайсов.

03.04.2023    1235    user1575928    0    

18

Учим БСП печатать активные ссылки и подложку в документе WORD

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

Небольшое расширение БСП для печати в WORD. Добавлена печать активных ссылок, подложки документа, и фона страницы.

1 стартмани

13.03.2023    1616    3    user1575928    0    

6

Многопоточное выполнение процедуры с помощью ДлительныеОперации

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

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

1 стартмани

26.02.2023    6074    egoriy111    24    

77
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. lepth 25.02.21 12:17 Сейчас в теме
Спасибо за материал!
Беспокоит один вопрос - использование областей в макете обязательно? Бывали случаи, когда макет Word нужно сформировать строго под фиксированный бланк (например вкладыш в диплом). Указание "{v8 Область.Преамбула}" сильно затрудняет эту задачу.
2. quazare 3419 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 3419 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 3419 17.04.22 15:36 Сейчас в теме
Все кто желает - разные примеры работы с БСП и другие ссылки на статье - находятся на моем телеграмм канале
leyburg; user751607; user1379552; +3 Ответить
11. AbadaTouro 9 03.08.22 13:22 Сейчас в теме
Так и не понятно из статьи как вставить картинку програмно
12. AbadaTouro 9 03.08.22 13:41 Сейчас в теме
(10) (11) Хотя
посмотрел по коду оказывается для того что бы вывести картинку в такой шаблон WORD достаточно получить ссылку на двоичные данные файла

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

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

А тип области у вас какой?
20. Archi3670 38 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 9 28.09.22 13:39 Сейчас в теме
(16) Как какой .
ДанныеПодвала1Лист = Новый Структура;
18. WorkerPavel 28.09.22 14:14 Сейчас в теме
(17)Я имел ввиду это:
УправлениеПечатью.ДобавитьОписаниеОбласти(ОписаниеОбластей, "Лого",					"Общая");

Т.е. я предполагал что может тип области для картинок есть специальный, но оказалось что и с "Общая" работает.
19. user788141 13.11.22 02:01 Сейчас в теме
(18) а есть варианты расположения картинки в шаблоне ворда, так что бы регулировать размер или положение на странице? размер печати в png вроде правильные а в ворде выводит больше размером, и положение поменять в обычной области не получится...
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 18 16.09.23 23:00 Сейчас в теме
Добрый день. Подскажите пожалуйста, файл Ворд открывается но имя у него странное: v8_acaaf52f-2bd6-48dc-8756-a38343527182Трудовой Договор №ЗП-5 от 09.01.2023

как сделать , чтобы было чисто "Трудовой Договор №ЗП-5 от 09.01.2023"?
28. quazare 3419 17.09.23 06:44 Сейчас в теме
(27) вы можете скачать мой рабочий пример https://infostart.ru/1c/tools/1885539/ или подписаться на мой тг-канал о разработке
Оставьте свое сообщение