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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 31.07.2009, 13:36   #1  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
? Отчёт в файл
Привет всем.

Вполне возможно, что вопрос ламерски лёгкий, но как-то так исторически сложилось, что с отчётами и принтерами я не дружу и с ними практически не работаю.

Есть необходимость при разноске счёта на оплату по заказу на продажу сформировать отчёт в файл. Всё это можно сделать руками (Разноска - счёт на оплату - печать счёта на оплату - настройки печати - в файл), но мне это нужно сделать прямо в коде без всякого интерактива. Не хочется долго ковыряться в этих printerSetting-ах. Может кто-то подскажет примерный код, как это сделать? Или хотя бы носом ткнёт в подобный код, если такой есть в АОТ. Интересуют только настройки принтера для FormLetter. С самой разноской проблем не предвидится...

Спасибо.
__________________
Zhirenkov Vitaly
Старый 31.07.2009, 13:40   #2  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
375 / 562 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
Посмотрите здесь(возможно то, что нужно)
create Pdf invoice report
__________________
Sergey Nefedov
За это сообщение автора поблагодарили: ZVV (2).
Старый 02.08.2009, 00:07   #3  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Цитата:
Сообщение от SRF Посмотреть сообщение
Посмотрите здесь(возможно то, что нужно)
create Pdf invoice report
Действительно, всё получилось. (правда не знаю, что там не получилось у автора того сообщения, он подробностей не сообщал...)

Вот такой код работает на ура:
X++:
    SalesId salesId = 'ля-ля-ля';
    PrintJobSettings    PrintJobSettings;
    salesFormLetter salesFormLetter;
    ;

    salesFormLetter = SalesFormLetter::construct(DocumentStatus::Invoice4Paym_RU);

    salesFormLetter.printFormLetter(true);

    printJobSettings = new PrintJobSettings(salesFormLetter.printerSettingsFormletter());
    printJobSettings.setTarget(PrintMedium::File);
    printJobSettings.format(PrintFormat::ASCII);
    printJobSettings.fileName("C:\\Test_Order.txt");
    salesFormLetter.updatePrinterSettingsFormLetter(printJobSettings.packPrintJobSettings());

    salesFormLetter.update(salesTable::find(salesid), systemDateGet(), SalesUpdate::All);
Правда прежде, чем всё стало окей, намучался с таким сообщением при печати:
Цитата:
Параметры управления печатью не могут быть применены, поэтому не получено ни одного документа.
Отчет не содержит данных, Счет на оплату - Отчет
Счёт на оплату разносился, строки в нём есть - а отчёт так ругался и не печатался (в смысле не сохранялся в файл). Причём не на всех, а только на части заказов... :-\
После ковыряний и разборок по коду выяснилось, что причина в Настройки - Управление печати в Клиенте. Нужно там создать запись (в таблице PrintMgmtDocInstance). Может, конечно, это и так все знают , но мне было не очевидно - потратил много времени. Мот кому пригодится...

DAX 2009
__________________
Zhirenkov Vitaly
Старый 02.08.2009, 00:18   #4  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Ещё, кстати, можно сделать вот так... Это для того что бы файлик назвать "нужным" именем.

X++:
{
    SalesId                 salesId = 'ля-ля-ля';
    PrintJobSettings    PrintJobSettings;
    salesFormLetter       salesFormLetter;
    CustInvoice4PaymJour_RU            common;
    ;

    salesFormLetter = SalesFormLetter::construct(DocumentStatus::Invoice4Paym_RU);

    salesFormLetter.update(salesTable::find(salesid), systemDateGet(), SalesUpdate::All);
    common = salesFormLetter.journal();

    salesFormLetter.printFormLetter(true);
    printJobSettings = new PrintJobSettings(salesFormLetter.printerSettingsFormletter());
    printJobSettings.setTarget(PrintMedium::File);
    printJobSettings.format(PrintFormat::ASCII);
    printJobSettings.fileName("C:\\" + common.Invoice4PaymId + ".txt");
    salesFormLetter.updatePrinterSettingsFormLetter(printJobSettings.packPrintJobSettings());
    salesFormLetter.printJournal();
}
__________________
Zhirenkov Vitaly
За это сообщение автора поблагодарили: Kabardian (2).
Старый 05.08.2009, 16:27   #5  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Цитата:
Сообщение от ZVV Посмотреть сообщение
...
После ковыряний и разборок по коду выяснилось, что причина в Настройки - Управление печати в Клиенте. Нужно там создать запись (в таблице PrintMgmtDocInstance).
...
Добрые люди подсказали что есть настройки по умолчанию для всех
РсК \ Настройка \ Формы \ Настройка форм \ Управление печатью
__________________
Zhirenkov Vitaly
За это сообщение автора поблагодарили: Molchun (0).
Старый 31.07.2009, 13:40   #6  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
http://erpkb.com/Axapta/VstroennyeOtchety#h18498-2
За это сообщение автора поблагодарили: ZVV (2).
Старый 01.08.2009, 23:51   #7  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Цитата:
Сообщение от belugin Посмотреть сообщение
Способ хороший, жаль тока вот для счёта на оплату (русского, самобытного ) в чистом виде не подходит, т.к. отчёт SalesPurchInvoice4Paym_RU имеет следующий инит:
X++:
void  init()
{
    if (! element.args() ||
        ! element.args().caller() ||
        (classidget(element.args().caller()) != classnum(SalesReport_Invoice4Paym_RU) &&
         classidget(element.args().caller()) != classnum(PurchReport_Invoice4Paym_RU)))
        throw error("@SYS32665");

    salesPurchReport = element.args().caller();
    languageId = CompanyInfo::languageId();
    converter   = RNumDateInWordConverter::construct(languageId);
    super();
}
Так что тут надо было бы через класс SalesReport_Invoice4Paym_RU делать примерно то же самое... Но я предпочёл другой способ.
__________________
Zhirenkov Vitaly
Теги
законченный пример, отчет, файл

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Вписать динамический отчет в страницу (DAX 4.0) Qaz Qwerty DAX: Программирование 2 17.07.2008 05:46
Как получить указатель на отчёт когда пользователь выбрал Печать на принтер в просмотрщике, в форму SysPrintForm? rkorchagin DAX: Программирование 10 17.04.2008 11:59
Экспорт / сохранение отчета в ASCII файл valentino DAX: Программирование 7 18.02.2008 11:57
Вывод отчета в файл в пакетном режиме Egor_bl DAX: Программирование 16 09.10.2006 19:10
Отчет записать сразу как RTF файл st_msav DAX: Программирование 2 17.01.2006 18:52

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

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

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