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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.02.2005, 14:28   #1  
NJD is offline
NJD
Участник
 
210 / 26 (1) +++
Регистрация: 21.05.2003
Адрес: Moscow
Как прог-но проставить "галочки" в диалоге отчета.
МНе нужно изменить отчет InventDimPhys (отчет по остаткам), так, чтобы в независимости от того, какие галочки проставил юзер в группе Просмотр (это какие поля аналитике выводить) - всегда показывалось одно и тоже - как будто он выбрал только партию.
Я так думаю это делается в fetch, inventDimReport.parmInventDimParm(). В качестве пар-ма передается InventDimParm - таблица, где 1 и 0 стоят в соответсвующих параметрах. Только у меня почему-то не получается сгенерить запись в этой таблице и передать её в качестве пар-ма.
Может я чего по кривому делаю? Или можно вообще это всё как-то по-другому сделать..
Спасбо.
Старый 02.02.2005, 14:53   #2  
Alks is offline
Alks
Участник
 
336 / 41 (2) +++
Регистрация: 23.07.2004
Адрес: г. Новокузнецк
В таблицу InventDimParm вообще никогда не надо ничего вставлять.
Эта таблица по сути своей используется лишь как запись (record, struct) в памяти компьютера, определяющая тот или иной режим обработки складских аналитик в InventDim (в отчётах и запросах - как правило - какие аналитики отображать, т.е. по каких сворачивать итоги, а какие вообще не выводить).

В родителе класса, выводящего отчёт (InventReport_DimPhys) есть метод:

PHP код:
Query initQuery()
{
    
inventDimParm inventDimParmCriteria;
    ;
    
inventDimParm.itemIdFlag            true;
    
inventDimParmCriteria.ClosedFlag    true;

    return 
inventDim::newQueryInventSum(super(),'',null,inventDimParmCriteria,inventDimParm);

В inventDim::newQueryInventSum происходит модификация Query так чтобы группировать по выбранному пользователем InventDimParm.

А в отчёте в методе init есть код:

PHP код:
    inventDimGenSetup_Report    = new inventDimCtrl_Rep(element);
    
inventDimGenSetup_Report.parmDimParmVisible(inventDimReport.parmInventDimParm());
    
inventDimGenSetup_Report.updateControls(); 
Который скрывает незначащие аналитики с листа отчёта.

Самый правильный способ - отказаться от такой затеи.
Ограничивать стандартный функционал, имхо, нехорошо, такими варварскими методами.
Но если крайне требуют, то самым аккуратным было бы перепопределение initQuery в InventReport_DimPhys таким образом:

PHP код:
Query initQuery()
{
    ;
    
// меняем inventDimParm
    
...
    return 
super();

Эх... то ли мануал написать по использованию InventDim в отчётах.
Старый 02.02.2005, 15:01   #3  
NJD is offline
NJD
Участник
 
210 / 26 (1) +++
Регистрация: 21.05.2003
Адрес: Moscow
ну на самом деле этот отчет я откопировал и делаю уже что-то своё... Т.е. стандарт не корячу... Но это очень надо.
Ну и можно пример, как этот InventDimParm поменять? Я так понимаю по умолчанию - всё пусто. Как сделать чтобы галочка стояла к примеру на партиях?
Старый 02.02.2005, 15:08   #4  
Alks is offline
Alks
Участник
 
336 / 41 (2) +++
Регистрация: 23.07.2004
Адрес: г. Новокузнецк
Query initQuery()
{
;
// меняем inventDimParm
inventDimParm.clear();
inventDimParm.inventBatchIdFlag = NoYes::Yes;
...
return super();
}
Старый 02.02.2005, 17:47   #5  
NJD is offline
NJD
Участник
 
210 / 26 (1) +++
Регистрация: 21.05.2003
Адрес: Moscow
Супер. Спасибо. Работает.
А если не сложно, то еще вопрос - а как сделать так, чтобы и окно диалога не вызывалось? А прям сразу отчет формировался... А уж параметры я сам задам...
Старый 03.02.2005, 06:21   #6  
Alks is offline
Alks
Участник
 
336 / 41 (2) +++
Регистрация: 23.07.2004
Адрес: г. Новокузнецк
Цитата:
Изначально опубликовано NJD
Супер. Спасибо. Работает.
А если не сложно, то еще вопрос - а как сделать так, чтобы и окно диалога не вызывалось? А прям сразу отчет формировался... А уж параметры я сам задам...
Выходит вы не хотите поддержку RunbaseReport, тогда просто делайте отчёт напрямую, не связывайтесь с запускающим его классом, а сразу делайте menuItem на отчёт и весь его делаёте исключительно в report-е.
В отчёте и его query есть свойства interactive, которst определя.т будут ли появлятся стандартные диалоги при запуске отчёта (когда работаете через RunbaseReport он сам подавляет их появление, но выводит свой диалог.
Старый 03.02.2005, 09:46   #7  
NJD is offline
NJD
Участник
 
210 / 26 (1) +++
Регистрация: 21.05.2003
Адрес: Moscow
Да мне вообще этот отчет надо программно запускать. И уже всё сделано (там были еще переделки), вот только осталось подавить этот диалог... Или это так сложно?
Старый 03.02.2005, 11:24   #8  
Alks is offline
Alks
Участник
 
336 / 41 (2) +++
Регистрация: 23.07.2004
Адрес: г. Новокузнецк
Слишком коряво получается. Можно конечно копать в сторону метода prompt, но лучше переделать как я сказал - это несложно.
Оставьте только сам отчёт, класс уже тут не нужен.
В методах отчёта все обращения к свойствам класса (fromDate/toDate,inventDimParm и т.п.) замените на свои константы.
Что сделать чтобы в чистом отчёте не появлялось никаких диалогов я уже сказал.
Про то как правильно программно активировать отчёты сказано в dev guide.
Старый 03.02.2005, 15:22   #9  
NJD is offline
NJD
Участник
 
210 / 26 (1) +++
Регистрация: 21.05.2003
Адрес: Moscow
да... чтобы форму вызова отчета спрятать, надо в RunBase лесть, что конечно же очень плохо...
нужно в самом отчете менять
а тогда параметры для отчета как мне задавать?
так-? это метод отчета...
InventDimParm parmInventDimParm()
{
InventDimParm _InventDimParmD;
_InventDimParmD.clear();
_InventDimParmD.inventBatchIdFlag = NoYes::Yes;
_InventDimParmD.SPT_GBidFlag = NoYes::Yes;
return(_InventDimParmD);
}
вызов в отчете
InventDimParm inventDimParmCriteria = this.parmInventDimParm();
Старый 03.02.2005, 17:32   #10  
NJD is offline
NJD
Участник
 
210 / 26 (1) +++
Регистрация: 21.05.2003
Адрес: Moscow
и про программную активацию отчетов - я так понима это делается так
new MenuFunction(MenuItemOutputStr(MY_InventDimPhys), MenuItemType::Output).run();
где MY_InventDimPhys - название пункта меню, на который этот отчет повешен.
а можно в этой строке еще передавать параметр в отчет (например дату)?
Старый 03.02.2005, 18:27   #11  
Alks is offline
Alks
Участник
 
336 / 41 (2) +++
Регистрация: 23.07.2004
Адрес: г. Новокузнецк
Охх... читайте стандартную докукументацию - там этот вопрос подробно освещен.
Старый 03.02.2005, 18:29   #12  
NJD is offline
NJD
Участник
 
210 / 26 (1) +++
Регистрация: 21.05.2003
Адрес: Moscow
А InventDimParm как мне в отчете задать? -)
Ну кинь примерчик пож-та.. А я уж сам разберусь.
Старый 04.02.2005, 16:02   #13  
NJD is offline
NJD
Участник
 
210 / 26 (1) +++
Регистрация: 21.05.2003
Адрес: Moscow
А не... галочки верно инициализируются...
qRun = new QueryRun(query);
query как-то не так инициализируется...
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Вернуть вкладку "Пакет" на диалоге. Smith DAX: Программирование 2 31.05.2007 10:29
Сохранение пользовательских настроек в диалоге отчета Андрей К. DAX: Программирование 14 26.04.2007 10:56
Как "поймать" имя вызываемого отчета ATimTim DAX: Программирование 4 27.08.2004 11:46
Доработка отчета "Ведомость ОС и амортизационных отчислений" Pismarkina DAX: Программирование 2 21.01.2004 13:45
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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