Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 11:42

Пакетная печать на дуплексном принтере

Автор mixqn, 29 июл 2013, 10:40

0 Пользователей и 1 гость просматривают эту тему.

mixqn

соврал немного. не все работает с переустановкой принтера по умолчанию: вернуть как было не получается, не отрабатывает функция УстановитьПринтерПоУмолчаниюРМВ(ТекущийПринтер) (которая работает несколькими строками выше, где вызов выглядит так: УстановитьПринтерПоУмолчаниюРМВ("PDFCreator"); )

на всякий случай полный код функции:
Функция УстановитьПринтерПоУмолчаниюРМВ(ИмяПринтера)

Попытка
Скрипт = Новый ComОбъект("WScript.Network");
Скрипт.SetDefaultPrinter(ИмяПринтера);
Возврат Истина
Исключение
Возврат Ложь
КонецПопытки;

КонецФункции

Dethmontt

Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

mixqn

да, попадает в исключение
Добавлено: 29 июл 2013, 16:49


сейчас выведу описание ошибки, может будет ясно в чем дело

mixqn

суть проблемы ясна: проблема не в функции УстановитьПринтерПоУмолчаниюРМВ, а в функции ПолучитьПринтерПоУмолчаниюРМВ, вот ее текст:

Функция ПолучитьПринтерПоУмолчаниюРМВ() Экспорт

Попытка
Скрипт = Новый ComОбъект("WScript.Shell");
Printer = Скрипт.RegRead("HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows\Device");
Возврат Printer
Исключение
Сообщить(ОписаниеОшибки());
Возврат Неопределено
КонецПопытки;

КонецФункции


строка, возвращаемая функцией содержит кроме собственно имени принтера еще 2 каких-то параметра через запятую (например если установлен по умолчанию PDFCreator, функция возвращает "PDFCreator,PDFCreator,pdfcmon"). Соответственно, попытка установить принтер "PDFCreator,PDFCreator,pdfcmon" вызывает исключение.

обрежу все после первой запятой, думаю, этого будет достаточно

Dethmontt

По сути если сетевой принтер то имя должно быть \\server\PrinterName
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

mixqn

я пока на своей машине тестирую, установил принтер как локальный. потом переделаю (кроме имени принтера ничего измениться не должно, само имя принтера можно в константу поместить, чтобы код не править)
Добавлено: 30 июл 2013, 08:19


вернее не можно, а нужно имя принтера в константу будет запихать.
константы в коде - это ж моветон :)

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск