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

13.10.16

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

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

Скачать исходный код

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

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

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

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

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

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

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

См. также

БСП. Добавляем отчет в меню Отчеты

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

Добавим новый отчет в меню нового документа средствами БСП.

02.04.2024    3137    John_d    10    

89

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

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

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

01.03.2024    1691    dimanich70    8    

14

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

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

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

12.02.2024    785    FilippovRI    0    

15

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

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

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

07.02.2024    2610    YA_418728146    11    

43

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

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

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

19.01.2024    6297    PROSTO-1C    5    

46

Бесплатный митап 9 февраля «Библиотеки и фреймворки на 1С и всё, что с этим связано»

БСП (Библиотека стандартных подсистем) Мероприятия Бесплатно (free)

Митап посвящен вопросам создания, использования и поддержке переиспользуемого кода при разработке решений на платформе 1С:Предприятие 8.

15.01.2024    3885    0    Infostart    0    

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

как-то так
24. User>lia 24.02.19 00:16 Сейчас в теме
(16)
(23)Получилось картинку вставить?
25. Elvina 5 03.03.19 14:55 Сейчас в теме
(24) только через ActiveDocument...
Когда документ со всеми таблицами уже полностью заполнен, получаю его как ActiveDocument и вставляю картинки. Как сделать по-другому нигде не нашла(((

 ActiveDocument = ПечатнаяФорма.COMСоединение.ActiveDocument;
        ActiveDocument.Select();
        Selection = ActiveDocument.Application.Selection;
        WSH=Новый COMobject("wscript.shell");
	FindObject = Selection.Find;
        FindObject.ClearFormatting();
		Для й=1 по номКарты Цикл
			FindObject.Execute("Картинка"+й);
			ПутьКФайлу ="C:"+ИмяПути + "\Картинка"+й+".png";
                        Picture = Selection.InlineShapes.AddPicture(ПутьКФайлу, Ложь, Истина);
			Picture.Height = 280;
       		        Picture.Width  = 370;
		КонецЦикла;
Показать
11. пользователь 29.12.17 13:27
Сообщение было скрыто модератором.
...
21. Elvina 5 25.01.19 14:12 Сейчас в теме
А как картинку вставить не подскажете?
22. Bukaska 140 25.01.19 15:42 Сейчас в теме
(21)Внизу под полем редактирования есть кнопка: прикрепить файл
23. Elvina 5 25.01.19 23:17 Сейчас в теме
(22) Я имела ввиду вставить картинку в ворд (программно, не в макет), к каждому договору прикрепляется карта, если точек несколько, то несколько картинок с картой.
В АктивДокумент получается картинку вставить, но там у меня не получается таблицу прорисовать так мне нужно (опять же в цикле, заранее не знаю сколько будет таблиц и сколько строк). Если загружать макет как Двоичные данные, то за счет областей таблицы прорисоваются так как мне нужно, но вот как вставить карту никак не соображу(((
26. Alina0201 30.09.19 11:51 Сейчас в теме
Взяла за основу эту обработку. Все бы ничего, выводится сформированный, заполненный по параметрам документ, НО! после перезапуска Windows у меня автоматически запускается Word, и открывается куча автосохраненых файлов, с текстом шаблона, пустые, просто с ошибкой, что не может открыть и т.д.
В обработке меняла ПечатьМакета, добавила вывод своих областей, и ПолучениеДанныеОбъекта свое, все остальное можно сказать, без изменения.
Откуда это все вылезает мне не понятно, ясно только одно, что это делает моя обработка.
В какую сторону "копать" не понимаю. Подскажите, может у кого-то была такая же проблема как у меня.
27. Alina0201 30.09.19 18:41 Сейчас в теме
Проблему нашла. Получается, что процесс Word запускается в обработке 2 раза. В текущей обработке, закрытие приложения было закомменитровано, поэтому была такая проблема.
Оставьте свое сообщение