Использование PrintOut при печати Word в 1с. Печать диапазона страниц. Проблема с знанием VBA

1. AlexeyMalko 03.12.18 13:57 Сейчас в теме
Задача по печати диапазона страниц. Есть код по получению объекта и все нормально печатает для ПриложениеВорд.Application.PrintOut() - все страницы идут на печать , все работает.
Выяснил что есть параметры для PrintOut (Background, Append, Range, OutputFileName, From, To, Item, Copies, Pages, PageType, PrintToFile, Collate, FileName). Нас интересует третий - Range, у него есть свои :

Range - необязательный параметр. Диапазон страницы. Может быть одна из следующих WdPrintOutRange констант:

WdPrintAllDocument - печатать весь документ,

WdPrintCurrentPage - печатать текущую страницу,

WdPrintFromTo - печать выбранных страниц,

WdPrintRangeOfPages - печать диапазона страниц,

WdPrintSelection - печать выбранного фрагмента.

Как мне в код 1с Вставить WdPrintFromTo . Пробовал : ПриложениеВорд.Application.PrintOut(,,"4",,,,,,Объект.СтраницыРедактирования); - идет на печать но ничего не выходит - пустая очередь печати.
Найденные решения
4. ediks 337 03.12.18 17:23 Сейчас в теме
(3) В Вашем вопросе уже есть ответ. Значение константы в этом случае будет = 3, только тип параметра - число, а не строка. Осталось еще указать диапазон.
Прикрепленные файлы:
AlexeyMalko; +1 Ответить
5. AlexeyMalko 05.12.18 16:16 Сейчас в теме
(4) Сделал вот так :
ПриложениеВорд.Application.PrintOut(,,3,,Строка(Объект.СтраницыРедактированияОт),Строка(Объект.СтраницыРедактированияДо),,,);

страницы редактирования конечно же строки, пробовал и числа - выдавало ошибку. Такой код рабочий - но почему то уходит на печать и отправляет на принтер количество 0.
При этом такой же код без параметров - печатает все листы "на отлично". Кто нибудь делал именно в 1с без макроса такую штуку, что нужно сделать.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. ediks 337 03.12.18 14:09 Сейчас в теме
Если устанавливается константа WdPrintFromTo, то необходимо использовать параметры From и To.
Метод PrintOut

From - необязательный параметр. Номер первой страницы, если параметр Range установлен в wdPrintFromTo.

To - необязательный параметр. Номер последней страницы, когда Range установлен в wdPrintFromTo.

ActiveWindow.PrintOut Range:=wdPrintFromTo, From:="1", To:="3"
Vitaly1C8; +1 Ответить
3. AlexeyMalko 03.12.18 15:10 Сейчас в теме
(2)
wdPrintFromTo
так как её установить константу? тоесть " 4" - я ставлю правильно, но мне надо задать не диапазон , а From и To ? но я когда ставлю 4 то подразумеваю что хочу печатать WdPrintRangeOfPages , жаль что в той статье только один пример
4. ediks 337 03.12.18 17:23 Сейчас в теме
(3) В Вашем вопросе уже есть ответ. Значение константы в этом случае будет = 3, только тип параметра - число, а не строка. Осталось еще указать диапазон.
Прикрепленные файлы:
AlexeyMalko; +1 Ответить
5. AlexeyMalko 05.12.18 16:16 Сейчас в теме
(4) Сделал вот так :
ПриложениеВорд.Application.PrintOut(,,3,,Строка(Объект.СтраницыРедактированияОт),Строка(Объект.СтраницыРедактированияДо),,,);

страницы редактирования конечно же строки, пробовал и числа - выдавало ошибку. Такой код рабочий - но почему то уходит на печать и отправляет на принтер количество 0.
При этом такой же код без параметров - печатает все листы "на отлично". Кто нибудь делал именно в 1с без макроса такую штуку, что нужно сделать.
7. ytrewqwerty 30.10.19 18:54 Сейчас в теме
(5)

Удивительно, но при такой передаче параметров в Ворд из 1с77 "пропущенные" значения между запятыми оказывается не равняются незаполеннным (дефолтным). Надо явно указать их. Вот так:

ПриложениеВорд.Application.PrintOut(0,0,3,"",
Строка(Объект.СтраницыРедактированияОт),
Строка(Объект.СтраницыРедактированияДо),0,1);


Восьмой параметр (здесь = 1) - количество копий.
А если нужно выводить диапазоны страниц, что универсальнее, то надо заполнять девятый параметр строкой с диапазоном и в третьем указать не 3, а 4:

Диапазон = Строка(Объект.СтраницыРедактированияДо) 
 + "-"
 + Строка(Объект.СтраницыРедактированияДо);

ПриложениеВорд.Application.PrintOut
 (0,0,4,"","","",0,1, Диапазон);
6. AlexeyMalko 06.12.18 12:06 Сейчас в теме
Все работает, просто отправляет пусто , я не смотрел что в принтере все таки листы выходят. так что код рабочий. Параметр задается цифрой, а диапазон строкой. У меня работает с 3 , можно пробовать с 4 , но не проверял потому что работает как надо.
8. LimarenkoA 29.09.21 16:50 Сейчас в теме
(6)Удалось решить? сейчас с такой же проблемой столкнулся. При чём если нет принтера, он сохраняет в pdf и
это отрабатывает правильно.
9. AlexeyMalko 30.09.21 08:23 Сейчас в теме
(8) почти 3 года прошло. Решил вопрос , там параметры правильно надо было заполнить и диапазон.
10. LimarenkoA 30.09.21 09:31 Сейчас в теме
(9) А не помнишь какой именно параметр? Я вот так передаю, всё проходит без ошибок, но принтер не печатает.

Макет.COMСоединение.ActiveDocument.PrintOut(0,0,"4","","","",0,1, "1,3,6-9");
Оставьте свое сообщение

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