Вывести несколько табличных документов в Word с разной ориентацией страниц

1. Alexjas25 27.06.17 03:03 Сейчас в теме
Здравствуйте, коллеги

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

Поскольку средствами 1С нельзя в одном табличном документе выводить листы с разной ориентацией принял решение выводить через вордовский файл (установлен MS Word 2010). Для начала пытаюсь вывести просто два макета - чтобы один лист был портрет и второй лист ландшафт, но, к сожалению, если менять ориентацию одного листа, то весь документ становиться ландшафтом, почему-то. Вот такой пишу код:

ПриложениеВорд = Новый COMОбъект("Word.Application");
	ПриложениеВорд.Visible = True;

	ИмяОсновногоФайла = ПолучитьИмяВременногоФайла("docx");
	Таб = Новый ТабличныйДокумент;
	Макет = Обработки.ВывестиМакетыВВорд.ПолучитьМакет("МакетВертикальный");
	Таб.Вывести(Макет);
	Таб.Записать(ИмяОсновногоФайла, ТипФайлаТабличногоДокумента.DOCX);

	ПервыйДокумент = ПриложениеВорд.Documents.Open(ИмяОсновногоФайла, , , , , , , , , , , True);
	ПервыйДокумент.ActiveWindow.ActivePane.View.Type = 3;
	
	ПервыйДокумент.Range(ПервыйДокумент.Range().End - 1).InsertBreak(7);
	ИмяВрФайла = ПолучитьИмяВременногоФайла("docx");
	
	Таб2 = Новый ТабличныйДокумент;
	Макет2 = Обработки.ВывестиМакетыВВорд.ПолучитьМакет("МакетГоризонтальный");
	Таб2.Вывести(Макет2);
	Таб2.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
	
	Таб2.Записать(ИмяВрФайла, ТипФайлаТабличногоДокумента.DOCX);
	ВременныйДокумент = ПриложениеВорд.Documents.Open(ИмяВрФайла);
	ВременныйДокумент.Range().Copy();
	ПредыдущаяОбласть = ПервыйДокумент.Range().End - 1;
	ПервыйДокумент.Range(ПервыйДокумент.Range().End - 1).Paste();
	Если Таб2.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт Тогда
		ПервыйДокумент.Range(ПредыдущаяОбласть + 1).Select();
		ПервыйДокумент.Application.Selection.PageSetup.Orientation = 1;
	КонецЕсли;
	ВременныйДокумент.Close();
Показать


Может кто-нибудь подсказать, что я делаю не так?
Платформа 8.3.9.1850
+
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Alexjas25 27.06.17 09:59 Сейчас в теме
Проблема решена. По совету хорошего человека воспользовался объектом ПакетОтображаемыхДокументов и все взлетело - Word'ом пользоваться не потребовалось
+
3. v3rter 27.06.17 12:36 Сейчас в теме
Для тех, кому нужен ответ на исходный вопрос "несколько табличных документов в Word с разной ориентацией страниц", подскажу:
делайте между документами разрыв раздела, а не страницы:
word.Selection.InsertBreak(2); // Разрыв раздела - Section break on next page: wdSectionBreakNextPage=2 
// word.Selection.InsertBreak(7); // Разрыв страницы Page break at the insertion point:. wdPageBreak=7	

https://msdn.microsoft.com/VBA/Word-VBA/articles/selection-insertbreak-method-word
https://msdn.microsoft.com/VBA/Word-VBA/articles/wdbreaktype-enumeration-word
+
4. Alexjas25 30.06.17 07:54 Сейчас в теме
(3) Спасибо! Этот вариант тоже рабочий, как-то даже не догадался, что там не разрыв страницы требуется
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот