Вывести несколько табличных документов в Word с разной ориентацией страниц
Здравствуйте, коллеги
Столкнулся с такой проблемой: необходимо вывести несколько печатных форм в один табличный документ, при этом листы имеют разную ориентацию - два листа портрет, третий ландшафт и т.д., всего их может быть пару сотен.
Поскольку средствами 1С нельзя в одном табличном документе выводить листы с разной ориентацией принял решение выводить через вордовский файл (установлен MS Word 2010). Для начала пытаюсь вывести просто два макета - чтобы один лист был портрет и второй лист ландшафт, но, к сожалению, если менять ориентацию одного листа, то весь документ становиться ландшафтом, почему-то. Вот такой пишу код:
Может кто-нибудь подсказать, что я делаю не так?
Платформа 8.3.9.1850
Столкнулся с такой проблемой: необходимо вывести несколько печатных форм в один табличный документ, при этом листы имеют разную ориентацию - два листа портрет, третий ландшафт и т.д., всего их может быть пару сотен.
Поскольку средствами 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
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Проблема решена. По совету хорошего человека воспользовался объектом ПакетОтображаемыхДокументов и все взлетело - Word'ом пользоваться не потребовалось
Для тех, кому нужен ответ на исходный вопрос "несколько табличных документов в Word с разной ориентацией страниц", подскажу:
делайте между документами разрыв раздела, а не страницы:
https://msdn.microsoft.com/VBA/Word-VBA/articles/selection-insertbreak-method-word
https://msdn.microsoft.com/VBA/Word-VBA/articles/wdbreaktype-enumeration-word
делайте между документами разрыв раздела, а не страницы:
word.Selection.InsertBreak(2); // Разрыв раздела - Section break on next page: wdSectionBreakNextPage=2
// word.Selection.InsertBreak(7); // Разрыв страницы Page break at the insertion point:. wdPageBreak=7
Внимание! Тема сдана в архив
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот