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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.11.2008, 14:28   #1  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
Печать отчета по нескольким строкам
Привет всем!
Есть форма, на которой MenuItemButton типа output. По нажатию, сразу печатается отчет. Нужно распечатать этот же отчет столько раз, сколько выделенных строк. Сразу возникла такая идея (на Clicked):
X++:
        for (    custInvoiceJournal = custInvoiceJour_ds.getFirst(true) ?
                         custInvoiceJour_ds.getFirst(true) :
                         custInvoiceJour_ds.cursor();
             custInvoiceJournal ;
             custInvoiceJournal = custInvoiceJour_ds.getNext())
        {
                info(custInvoiceJournal.InvoiceId);

                super();
        }
Но печатается отчет только по первой строке. При этом отладчик показывает, что в момент пробега по циклу, переменная таблицы формы меняется. Переменная находится на сервере. Но infolog выводит одно и тоже. То есть получается, надо с сервера каким-то образом обновить переменную на клиенте. Как это можно сделать?
new MenuFunction(MenuItemOutPutStr... не хочу использовать - лишние затраты времени.
Старый 21.11.2008, 14:54   #2  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Не совсем по теме, но попробуй так.

X++:
void clicked()
{
        Args            args = new Args();
        MenuFunction    menuFunction = this.menufunction();
        ;

        for (    custInvoiceJournal = custInvoiceJour_ds.getFirst(true) ?
                         custInvoiceJour_ds.getFirst(true) :
                         custInvoiceJour_ds.cursor();
             custInvoiceJournal ;
             custInvoiceJournal = custInvoiceJour_ds.getNext())
        {
                args.record(custInvoiceJournal);
                menuFunction.run(args);
        }
}
В принципе, это тоже new MenuFunction(), но другим способом
За это сообщение автора поблагодарили: Eldar9x (2), Kabardian (2).
Старый 21.11.2008, 15:04   #3  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
X++:
 for (    custInvoiceJournal = custInvoiceJour_ds.getFirst(true) ?
                         custInvoiceJour_ds.getFirst(true) :
                         custInvoiceJour_ds.cursor();
             custInvoiceJournal ;
             custInvoiceJournal = custInvoiceJour_ds.getNext())
        {
                info(custInvoiceJournal.InvoiceId);

                super();
        }
custInvoiceJour_ds - датасорс, custInvoiceJournal - это его курсор.., возможно он "перетирается" в этом цикле и сам же цикл работает некорректно. Попробуйте объявить локальную переменную custInvoiceJournalLocal и юзайте её вместо custInvoiceJournal ...

Последний раз редактировалось DSPIC; 21.11.2008 в 15:07. Причина: выразился неудачно :)
Старый 21.11.2008, 15:14   #4  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
Цитата:
В принципе, это тоже new MenuFunction(), но другим способом
Вариант, но все равно super() быстрее работает.

custInvoiceJournal - и есть локальная переменная.
info(custInvoiceJournal.InvoiceId) - выводит как надо.
info(custInvoiceJour.InvoiceId) - где custInvoiceJour - курсор датасорса, выводит одно и то же, несмотря на то, что отладчик показывет, что он меняется.
Старый 21.11.2008, 15:25   #5  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
А, пардон не заметил. Думаю вызывать super () в clicked() - совсем неудачный подход. если через menuFunction тормозит, то лучше создать на классе отчета какой-нить статик метод. передать в него датасорс по нажатию кнопки, организовать там цикл по выводу отчета... будет по-человечески
Старый 21.11.2008, 15:49   #6  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
Спасибо всем. Попробую использовать this.menufunction();, возможно там хотя бы объект заново не создается.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Печать нескольких экземпляров отчета по умолчанию. bum DAX: Функционал 3 17.06.2008 10:42
Двухсторонняя печать отчета Shirmin Oleg DAX: Программирование 6 18.10.2007 10:08
Печать отчета на несколько страниц Прокопьева DAX: Программирование 7 18.08.2006 07:40
Печать отчета Прокопьева DAX: Программирование 11 02.08.2006 08:15
Печать отчетов, как увеличить масштаб отчета? Hidden DAX: Прочие вопросы 8 30.12.2005 10:55

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

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

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