17.08.2006, 11:08 | #1 |
Участник
|
Подскажите, как получить из таблицы Printer имя принтера, который выбран для печати документов. Документы печатаются из Navision.
|
|
17.08.2006, 11:41 | #2 |
Участник
|
Если пользователь вручную выбрал принтер, то внутри отчета никак (я тоже задавался этим вопросом на разных форумах - никто не ответил).
Если же имеется ввиду имя принтера, который полагается для отчета, с учетом таблицы "Выбор Принтера" (Printer Selections), то примерно PrName := ApplicationManagement.FindPrinter(50173); IF Printer.GET(PrName) THEN RESULT := Printer.Name ELSE {В этом месте интересно самому - как определить принтер по умолчанию. Мои методы работают, но кривые, стыдно показывать - например через automation Word выяснить ActivePrinter} |
|
17.08.2006, 12:05 | #3 |
Участник
|
Функцию FindPrinter я использовал. Но проблема следующая: у нас много пользователей, которые сидят системе через терминальный сервер. В таблице Printer Selection необходимо указать имя и очередь спула для конкретного юзера, причем настройка выполняется удаленно. В этом случае у каждого пользователя на один и тот же сетевой принтер установлена своя очередь спула, поэтому при запуске на печать нужно для каждого пользователя программно определять имя принтера и установленную для него очередь спула.
|
|
29.08.2007, 16:50 | #4 |
Участник
|
Привет!
А может кто знает? Как программно отправить отчет на печать на желаемый принтер, указав имя принтера, к примеру? |
|
16.06.2009, 12:43 | #5 |
Участник
|
|
|
16.06.2009, 15:38 | #6 |
Участник
|
"Таблица Выбор Принтера
Список полей в таблице При печати счетов, кредит нот и т.д. важно правильно выбрать принтер. Для управления этим процессом используйте таблицу Выбор Принтера. В этой таблице определённые принтеры назначены определённым пользователям и/или отчётам, так что, например, отчёт Счёт всегда печатается на принтере X. Можно также определить, что, например, только пользователь Y всегда печатает кредит ноты на принтере X. После установки связей между пользователями, принтерами и отчётами программа будет автоматически использовать эту информацию для направления будущих распечаток. Для того, чтобы войти в таблицу Выбор Принтера, выберите Главное Меню, затем Финансы, Настройка, Выбор Принтера." А вообще поиск принтера осуществляется в FindPrinter() CU 1 при запуске отчета, если ProcessingOnly = Да. В качестве параметра передается ReportID. При желании можно передавать еще и имя принтера, но не вижу смысла. Достаточно в табл. Printer Selection прописать номер отчета и имя принтера, о чем и шла речь выше. |
|
17.06.2009, 10:33 | #7 |
Участник
|
Цитата:
Сообщение от VProk
А вообще поиск принтера осуществляется в FindPrinter() CU 1 при запуске отчета, если ProcessingOnly = Да. В качестве параметра передается ReportID. При желании можно передавать еще и имя принтера, но не вижу смысла. Достаточно в табл. Printer Selection прописать номер отчета и имя принтера, о чем и шла речь выше.
|
|
17.06.2009, 16:53 | #8 |
Administrator
|
есть 2 варианта: первый и второй
первый: 1. перед печатью подменяем принтер в 78-й таблице 2. печатаем 3. восстанавливаем настройку выглядит так 1. IF _PrinterSelection.GET(USERID,0) THEN BEGIN _OldPrinter := _PrinterSelection."Printer Name"; _PrinterSelection."Printer Name" := Васья; _PrinterSelection.MODIFY(); END ELSE BEGIN _PrinterSelection.INIT(); _PrinterSelection."User ID" := USERID; _PrinterSelection."Report ID" := 0; _PrinterSelection."Printer Name" := Васья; _PrinterSelection.INSERT(); END; 2. Report.print!!! 3. _PrinterSelection.GET(USERID,0); IF _OldPrinter <> '' THEN BEGIN _PrinterSelection."Printer Name" := _OldPrinter; _PrinterSelection.MODIFY(); END ELSE _PrinterSelection.DELETE(); _____________________________________________________________ второй: создаем юнит NewCU со свойством SingleInstanse Трю: там пишем: SetPrinter(_PrinterName : Text[250]) PrinterName := _PrinterName; и GetPrinter() : Text[250] EXIT(PrinterName); дорабатываем 1 кю FindPrinter IF NewCU.GetPrinter <> '' THEN EXIT(NewCU.GetPrinter); при запуске отчета из любой ф-ции делаем так: 1. NewCU.SetPrinter(Васья) 2. Report.print!!! 3. NewCU.SetPrinter('') |
|