|
Вывести несколько табличных документов в Word с разной ориентацией страниц | ☑ | ||
---|---|---|---|---|
0
AlexSib
27.06.17
✎
03:25
|
Здравствуйте,
Столкнулся с такой проблемой: необходимо вывести несколько печатных форм в один табличный документ, при этом листы имеют разную ориентацию - два листа портрет, третий ландшафт и т.д., всего их может быть пару сотен. Поскольку средствами 1С нельзя в одном табличном документе выводить листы с разной ориентацией принял решение выводить через вордовский файл (установлен MS Word 2010). Для начала пытаюсь вывести просто два макета - чтобы один лист был портрет и второй лист ландшафт, но, к сожалению, если менять ориентацию одного листа, то весь документ становиться ландшафтом, почему-то. Вот такой пишу код: [CODE] ПриложениеВорд = Новый 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(); [/CODE] Может кто-нибудь подсказать, что я делаю не так? Платформа 8.3.9.1850 |
|||
1
sFAQer
27.06.17
✎
03:38
|
(0) ПакетОтображаемыхДокументов - в СП введи, решает задачу без WORDа
|
|||
2
AlexSib
27.06.17
✎
09:57
|
(1) Спасибо! Насколько все будет корректно работать - покажет рабочая печать 1500 контрагентов, но по крайней мере на печать уходит одним документом, а не по одному листку отдельно.
Благодарю за совет! |
|||
3
Базис
naïve
27.06.17
✎
11:01
|
Сравни, пожалуйста, скорость формирования большого объёма в 3 вариантах - с visible = True и False, и (1).
|
|||
4
AlexSib
30.06.17
✎
08:59
|
Кстати, через Microsoft Word тоже все работает, только вместо InsertBreak(7) нужно писать InsertBreak(2) - не разрыв страницы, а разрыв секции - это на случай если кому-нибудь все-таки понадобится.
(3) Конечно же через ПакетОтображаемыхДокументов будет быстрее - таблички в 1С так и так формируются - и то ли сразу отправить их на принтер, то ли потом еще возня с заполнением вордовского файла - она просто неоправданна. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |