Показать сообщение отдельно
Старый 11.11.2010, 19:30   #5  
someOne is offline
someOne
Участник
Аватар для someOne
 
173 / 423 (15) +++++++
Регистрация: 11.12.2008
Адрес: Москва
Сформировать файл из накладной программно - не сложно.
Какая у вас версия Аксапта ?

Например, для 3-й версии будет работать так (пример)

X++:
static void Job1(Args _args)
{
    custInvoiceJour     custInvoiceJour;
    PrintJobSettings    printJobSettings = new PrintJobSettings();
    SalesReport_Invoice_RU SalesReport_Invoice_RU = new SalesReport_Invoice_RU();

    ;
    custInvoiceJour = custInvoiceJour::findRecId(449627);

    printJobSettings.setTarget(PrintMedium::File);
    printJobSettings.format(PrintFormat::RTF);
    printJobSettings.fileName("c:\\invoice.rtf");

    SalesReport_Invoice_RU.setParameters(PrintCopyOriginal::Original, custInvoiceJour);

    if (SalesReport_Invoice_RU.prompt())
    {
        SalesReport_Invoice_RU.printJobSettings().unpackPrintJobSettings(printJobSettings.packPrintJobSettings());
        SalesReport_Invoice_RU.run();
    }
}
А дальше возможны варианты.
Можно отправлять этот файл через почтовый клиент Аксапты (SysMailer), (с сервера пакетной обработки например).

Можно отправить с клиента, открыв оператору его почтовый клиент с вложенным файлом, подготовленным на предыдущем этапе. (ну и конечно, заполненным адресом получателем, темой и текстом сообщения).
Оператору остается лишь нажать кнопку "отправить"

Тут все зависит от типа почтового клиента, который используется в вашей комании
(thebat, Outlook, OutlookExpress и так далее)

Например этот код отправляет письмо открывая почтовый клиент пользователя по умолчанию:

X++:
boolean sendMAPI(str _to, str _cc, str _subj, str _text, FileName _attachFileName = "")
{
    #Mapi
    Mapi          mapi  = new Mapi();
    MapiMessage   msg   = new MapiMessage();
    MapiRecipDesc recip = new MapiRecipDesc();
    MapiFileDesc  file  = new MapiFileDesc();
    ;

    recip.Name(_to);
    recip.RecipClass(#MAPI_TO);

    msg.setRecipNo(1, recip);

    if (_cc)
    {
        recip.Name(_cc);
        recip.RecipClass(#MAPI_CC);
        msg.setRecipNo(2, recip);
    }

    msg.subject(_subj);
    msg.text(_text);

    if (_attachFileName)
    {
        file.fileName(_attachFileName);
        msg.setFileNo(1, file);
    }

    mapi.Logon("", "", #MAPI_USE_DEFAULT);
    mapi.SendMail(msg, #MAPI_DIALOG);
    mapi.Logoff();

    return true;
}
Но надежнее использовать com интерфейс почтовой программы.
Если интересно - могу привести код отправки письма с вложением через COM интерфейс Outlook
За это сообщение автора поблагодарили: erudit (2), BOAL (2), ena_ax (1), fedka (1).