2016-12-01 3 views
0

У меня возникла проблема при печати текстового файла с AX2012 R3 на конкретный принтер. Вот мой источник:AX2012 Печать файла txt на принтер

public void printToPrinter(str _text, str printerName) 
{ 
    #File 
    System.Diagnostics.ProcessStartInfo processInfo; 
    System.Diagnostics.Process   process; 
    System.Exception     interopException; 
    TextIo        textIo; 
    PrintPathTable      printPath = PrintPathTable::find(); 
    str         fileName, arguments; 
    FileIoPermission     perm; 

    try 
    { 
     // Get the path and name. 
     fileName = this.getGuid(); 
     fileName = strFmt(@'%1%2',printPath.PrintPath, fileName); 

     // Assert permission. 
     perm = new FileIoPermission(fileName,'RW'); 
     perm.assert(); 

     // Open file for writing. 
     textIo = new TextIo(fileName, #IO_WRITE);   
     textIo.write(_text); 
     // Close the file. 
     textIo = null; 

     arguments = '\"' + printerName + '\"'; 

     process = new System.Diagnostics.Process(); 
     processInfo = process.get_StartInfo(); 
     processInfo.set_Verb('printto'); 
     processInfo.set_UseShellExecute(true); 
     processInfo.set_Arguments(arguments); 
     processInfo.set_FileName(fileName); 
     processInfo.set_WindowStyle(System.Diagnostics.ProcessWindowStyle::Hidden); 
        process.set_StartInfo(processInfo); 
     process.Start();   

        // revert asserted permissions 
        CodeAccessPermission::revertAssert(); 
    } 
    catch(Exception::CLRError) 
    { 
        interopException = CLRInterop::getLastException(); 
        while (!CLRInterop::isNull(interopException.get_InnerException())) 
        { 
            interopException = interopException.get_InnerException(); 
        } 

        error(strFmt('Fehler Druck "%1", "%2"', fileName, CLRInterop::getAnyTypeForObject(interopException.get_Message()))); 
    }  
} 

Я получаю сообщение об ошибке каждый раз, когда в process.Start(): Указанный файл не назначается приложению.

Я также проверил назначение на AOS для расширения .txt. Этот метод запускается на сервере.

я приступил в соответствии со следующими примерами:

How to print any file in Dynamics AX

Performing File IO with the TextIo Class [AX 2012]

ответ

0

Хорошо, я обманул себя,

Я проверил файл назначения с моим личным логином на AOS. Здесь присвоения были правильными, но источник выполняется с пользователем службы AOS. Назначение не было установлено для пользователя службы AOS. Возможно, установив стороннее программное обеспечение. В соответствии с назначением .txt в блокнот, он работает по желанию.

Спасибо всем, кто зачитал

Смежные вопросы