AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.02.2011, 15:01   #1  
rDenis2 is offline
rDenis2
Участник
 
62 / 36 (2) +++
Регистрация: 13.05.2010
Определение принтера
Добрый день,

Такая проблема. Печатаю из веба репорт через Аксапту. Прямо на принтер.
Если выбран обычный принтер то все нормально. Но если, выбран Microsoft Document Writer, то кидает ошибку. Можно ли как то определить тип принтера? Не хочу отфилтровывать по названию потому как название можно поменять.

Или другой вариант как то вызвать стандартный диалог Microsoft Document Writer для сохранения XPS. Из веба он не вызывается автоматом, кидается ошибка.

Printer Microsoft XPS Document Writer writes to FILE. Administrator's hint: To write to file <fileName> call printJobSettings:utputToPrnFile(TRUE) and printJobSettings::fileName(<fileName>)


С Уважением Денис

Ax2009
Старый 10.02.2011, 18:11   #2  
Shirmin Oleg is offline
Shirmin Oleg
Участник
 
89 / 35 (2) +++
Регистрация: 26.03.2004
Возможно, это не годится для веба, но просто из Аксапты диалог принтера можно вызвать так:

Создаете объект PrintJobSettings для нужного принтера, на его основе создаете объект sysPrintOptions, диалог принтера вызывается через вызов метода openPrinterPropertiesDialog
За это сообщение автора поблагодарили: rDenis2 (1).
Старый 11.02.2011, 18:13   #3  
rDenis2 is offline
rDenis2
Участник
 
62 / 36 (2) +++
Регистрация: 13.05.2010
Олег, спасибо за направление поиска. Вообщем решил так, проверяю тип драйвера принтера.

X++:
void createPrinterSet()
{
    PrintJobSettings            printJobSettings = new PrintJobSettings();
    int                         numberOfPrinters;
    int                         i;
    str                         tmpPrinterName;

    SysPrintOptions             sysPrintOptions;
    ;

    printerSet = new Set(Types::String);

    numberOfPrinters = printJobSettings.getNumberOfPrinters();

    for (i=1; i <= numberOfPrinters; i++)
    {
        tmpPrinterName      = printJobSettings.getPrinter(i);
        
                
        printJobSettings.deviceName(tmpPrinterName, ClassRunMode::ClientOrServer);
        sysPrintOptions = SysPrintOptions::construct(printJobSettings, 1);
        
        if(sysPrintOptions.parmPrinterDriverName() != 'Microsoft XPS Document Writer')
        {
            printerSet.add(tmpPrinterName);
        }
    }

}
Смущает только второй параметер, в SysPrintOptions - integer, описание не нашел нигде, поставил просто 1.
Старый 11.02.2011, 18:49   #4  
Shirmin Oleg is offline
Shirmin Oleg
Участник
 
89 / 35 (2) +++
Регистрация: 26.03.2004
Цитата:
Сообщение от rDenis2 Посмотреть сообщение
Смущает только второй параметер, в SysPrintOptions - integer, описание не нашел нигде, поставил просто 1.
Насколько я понял этот параметр важен при канале вывода "Экран" - отключает некоторые опции типа "Количество копий" и т.п., кот. просто теряют смысл при выводе на экан.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
параметры принтера _AxDevel_ DAX: Программирование 13 16.12.2022 19:39
Выбор лотка принтера АХ 4.0 m_andrey DAX: Программирование 5 22.02.2011 14:03
Имя принтера Masia DAX: Программирование 5 09.06.2006 16:44
Как отправить файл с кодами, понятными принтеру, в порт принтера? miaa DAX: Программирование 19 18.05.2006 19:18
Определение прибыли Swetik DAX: Функционал 3 16.04.2003 21:26

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 02:33.