Шаблон (внешняя печатная форма) для печати в Word под БСП

Печать - Универсальные печатные формы

печатная форма внешняя Word БСП Печать 1С 8.3

9
Пример внешней печатной формы для печати в MS Word для БСП 2.2. Обработка печатает данные в файл MS Word, используя подсистему БСП 2.2.

Работает на ЗУП, БП, УТ 11, УНФ 1.6

После долгих поисков и разбора демо примера внешней обработки печати из БСП, в котором почему то используется модуль менеджера встроенной обработки, получился небольшой демо-пример.

Шаблон использует  теги БСП: 
{v8 Область.Преамбула}
    {v8 Параметр}
{/v8 Область.Преамбула}

В приложениях собственно шаблон и результат печати этого шаблона из Демо базы ЗУП.

Надеюсь, он избавит кого-то от потери времени.

9

Скачать файлы

Наименование Файл Версия Размер
ПечатьMSWord_Шаблон83.epf
.epf 23,28Kb
13.10.16
75
.epf 23,28Kb 75 Скачать

См. также

Комментарии
Избранное Подписка Сортировка: Древо
1. arthur2003 27.07.17 18:31 Сейчас в теме
помогло решить проблему доступности методов АктивДокумент на Сервере или ТонкомКлиенте
2. ahmato 16.08.17 10:31 Сейчас в теме
Все работает, но есть проблема. Почему то при выводе макета , меняются формат шрифтов, не понимаю в чем проблема.
3. laduk 13 16.08.17 13:44 Сейчас в теме
(2) Это проблема связана с стилями шрифтов word., почему то некоторые стили 1С коверкает при заполнении. Помогает избавления в шаблоне от стилей шрифтов.
4. ahmato 16.08.17 21:25 Сейчас в теме
(3) Спасибо за разработку, сэкономили кучу времени) сегодня коллеги из отдела по персоналу были в восторге от печатных форм)). Кстати, еще один трабл заметил (т.е. не знаю как преодолеть), я не смог вывести колонтитулы в шаблонах. Может сталкивались с таким моментом?
P.s. Со шрифтами догадался, но все равно спасибо за ответ!
5. laduk 13 17.08.17 12:08 Сейчас в теме
(4) В данной обработке вывод колонтитулов не предусмотрен
6. laduk 13 17.08.17 12:10 Сейчас в теме
(4) Но в общем случае это можно реализовать.
7. ahmato 17.08.17 15:33 Сейчас в теме
(6) А могли бы дать подсказку, куда смотреть?
8. BackinSoda 27.09.17 14:33 Сейчас в теме
(3) (4) тоже мучался с этим, но потом в процедуре ПечатьМакета
ПечатнаяФорма = УправлениеПечатьюКлиент.ИнициализироватьПечатнуюФорму(ТипМакета, Макет.НастройкиСтраницыМакета, Макет);
передал третьим параметром макет и всё, вместо создания нового, берётся оригинальный макет со шрифтами
10. BackinSoda 27.09.17 14:41 Сейчас в теме
(0) Есть идеи как подогнать под "печать в цикле" по табличной части (для каждого сотрудника в т.ч. скажем, новая страница в ворде чтоб выходила ?
12. XelOla 16 11.07.18 11:35 Сейчас в теме
(10)
вы решили?
чтото ищу - как вывести в табл Ворд табличную часть документа
13. BackinSoda 11.07.18 12:50 Сейчас в теме
(12) решил.
если брать этот шаблон, то я переделал так (привожу только измененную часть, остальная остается как есть):
процедуру ПолучитьДанныеПечати дополнил:
ДанныеПоВсемОбъектам = Новый Соответствие;
	ДанныеПоКоличествуСтрок = Новый Соответствие;
	
	Для Каждого ОбъектСсылка Из МассивДокументов Цикл
		ДанныеОбъектаПоМакетам = Новый Соответствие;
		Для Каждого ИмяМакета Из МассивИменМакетов Цикл
			Для Каждого стр из ОбъектСсылка.Сотрудники Цикл //тут нужная табличная часть
				ДанныеОбъектаПоМакетам.Вставить(стр.НомерСтроки, ПолучитьДанныеОбъекта(ОбъектСсылка, стр)); 
			КонецЦикла;
		КонецЦикла;
		ДанныеПоКоличествуСтрок.Вставить(ОбъектСсылка, ОбъектСсылка.Сотрудники.Количество());
		ДанныеПоВсемОбъектам.Вставить(ОбъектСсылка, ДанныеОбъектаПоМакетам);
	КонецЦикла;
Показать

далее в конце процедуры дополнил структуру соответствием :
	Возврат Новый Структура("Данные, КоличествоСтрок, Макеты",
		ДанныеПоВсемОбъектам, ДанныеПоКоличествуСтрок,

тут передаю строку, получаю нужные данные из неё
Функция ПолучитьДанныеОбъекта(СсылкаНаОбъект, стр = Неопределено)
	//это пример
	ТекСотрудник = стр.Сотрудник;

ну и последняя измененная процедура :
Процедура ПечатьМакета(ДокументСсылка, МакетИДанныеОбъекта, ИмяМакета, ДополнительныеПараметры)
	
	ТипМакета				= МакетИДанныеОбъекта.Макеты.ТипыМакетов[ИмяМакета];
	ДвоичныеДанныеМакетов	= МакетИДанныеОбъекта.Макеты.ДвоичныеДанныеМакетов;
	Области					= МакетИДанныеОбъекта.Макеты.ОписаниеОбластей;
        // ДанныеОбъекта отсюда убрал в цикл

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

    		
КонецПроцедуры
Показать


и вот для перехода на новый док:
&НаКлиенте
Процедура ВставитьПереходНаНовуюСтраницу(Знач Handler) 
	
	Handler.Selection.EndKey(6);
	Handler.Selection.InsertBreak(7);
	
КонецПроцедуры
14. XelOla 16 11.07.18 13:39 Сейчас в теме
(13)
но мне надо в шаблон док печатать табличную часть документа, не в новый документ, а в табличку
15. BackinSoda 11.07.18 13:44 Сейчас в теме
(14) как выглядит шаблон то ? может для каждой строки таблички задать параметр и присваивать ему значение из таб части документа ?
16. XelOla 16 11.07.18 14:15 Сейчас в теме
(15) ну в смысле?
вот, ну и строчек товара может быть столько же, сколько в табл части реализации
Прикрепленные файлы:
17. BackinSoda 11.07.18 14:21 Сейчас в теме
(16) я бы предложил сделать табличный документ со всем нужным оформлением, заполнить его строками из табчасти, а потом попробовать скопировать его целиком в ворд вместо всей таблички. По крайней мере в ручную если сделать так то работает.
18. XelOla 16 11.07.18 14:27 Сейчас в теме
(17)
в документе встречается
Поставщик обязуется поставить весь товар в хорошем состоянии
в ячейках 1с нельзя ведь задать курсив на пару слов?
20. BackinSoda 11.07.18 14:40 Сейчас в теме
(18) в приведенной таблице нет этого текста, я только про таблицу говорил - колонки и строки (ну и их границы и т.д.), остальное заполняется как и обычный шаблон ворда. Жаль форматированнаястрока не поддерживается в табличном документе.
19. XelOla 16 11.07.18 14:30 Сейчас в теме
(17)//Выбираем первую таблицу в макете

ВордТаблица1 = Word.ActiveDocument.Tables(1);
i = 1;

Пока ВыборкаТоваров.Следующий() Цикл
//Заполняем первую строку

  Колонка = ВордТаблица1.Cell(i,1).Range;
  Колонка.Text = ВыборкаТоваров.НомерСтроки;
                
  Колонка = ВордТаблица1.Cell(i,2).Range;
  Колонка.Text = ВыборкаТоваров.Номенклатура;
                
  i=i+1;
  //добавляем строку

  ВордТаблица1.Rows.Add();
КонецЦикла;
Показать

как-то так
Оставьте свое сообщение