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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.04.2008, 14:14   #1  
V777 is offline
V777
совсем зелен
 
249 / 10 (1) +
Регистрация: 15.04.2008
:( Помогите новичку с отчетом
у меня такая проблема...есть отчет "оборотно-сальдовая ведомость" в модуле "Расчеты с клиентами" (CustBalanceTurnoverRegister_RU) нужно в диапазоне на форме указать по какому договору отбирать...но показывается список всех договор заведенных по клиентам...а как отфильтровать этот список по выбранному клиенту???
надеюсь понятно описал проблему...
да кстати Dynamics AX 4.0
Старый 15.04.2008, 15:34   #2  
konopello is offline
konopello
SAP
SAP
 
628 / 76 (4) ++++
Регистрация: 08.11.2005
Адрес: Минск
А по моему вам проще нажать кнопку выбор, и установить фильтр по нужному для Вас договору.
Старый 15.04.2008, 15:47   #3  
V777 is offline
V777
совсем зелен
 
249 / 10 (1) +
Регистрация: 15.04.2008
:(
Цитата:
Сообщение от konopello Посмотреть сообщение
А по моему вам проще нажать кнопку выбор, и установить фильтр по нужному для Вас договору.
проще для программеров...но не для пользователей...
Старый 15.04.2008, 15:49   #4  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
Цитата:
А по моему вам проще нажать кнопку выбор, и установить фильтр по нужному для Вас договору.
Тоже верно, но часто требуют как дополнительный прараметр в диалоге
Цитата:
как отфильтровать этот список по выбранному клиенту???
Найдите метод createQueryRun() и вставьте код перед "return":
X++:
    range = findOrCreateRange_W(ds, fieldnum(CustTrans, AccountNum));
range.value("XXXX");
, где XXXX - нужный AccountNum, по которому нужно отфильтровать. Откуда его брать ? - обычно это параметр диалога. Как ? изучите связку класс\отчет Tutorial_RunbaseReport

Последний раз редактировалось DSPIC; 15.04.2008 в 15:52.
Старый 15.04.2008, 15:56   #5  
konopello is offline
konopello
SAP
SAP
 
628 / 76 (4) ++++
Регистрация: 08.11.2005
Адрес: Минск
Цитата:
проще для программеров...но не для пользователей...
Ну как знаете, но проще обучить пользователей сохранять запросы, в стандартной форме запросов, чем писать все подряд для удобства пользователей, а через неделю они попросят еще одно поле в диалог добавить....... И снова садись и программируй.

Последний раз редактировалось konopello; 15.04.2008 в 15:57. Причина: описка
Старый 15.04.2008, 16:00   #6  
V777 is offline
V777
совсем зелен
 
249 / 10 (1) +
Регистрация: 15.04.2008
тоесть вложенный датасоурс не нужен???
Старый 15.04.2008, 16:02   #7  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
Если нужен фильтр только по клиентам то не нужен


Цитата:
... а через неделю они попросят еще одно поле в диалог добавить....... И снова садись и программируй
Ну так это же здорово! значит без работы не останемся

Последний раз редактировалось DSPIC; 15.04.2008 в 16:06.
Старый 15.04.2008, 16:08   #8  
V777 is offline
V777
совсем зелен
 
249 / 10 (1) +
Регистрация: 15.04.2008
Цитата:
Сообщение от konopello Посмотреть сообщение
Ну как знаете, но проще обучить пользователей сохранять запросы, в стандартной форме запросов, чем писать все подряд для удобства пользователей, а через неделю они попросят еще одно поле в диалог добавить....... И снова садись и программируй.
на том и учимся...
Старый 15.04.2008, 16:11   #9  
V777 is offline
V777
совсем зелен
 
249 / 10 (1) +
Регистрация: 15.04.2008
Цитата:
Сообщение от DSPIC Посмотреть сообщение

Найдите метод createQueryRun() и вставьте код перед "return":
X++:
    range = findOrCreateRange_W(ds, fieldnum(CustTrans, AccountNum));
range.value("XXXX");
, где XXXX - нужный AccountNum, по которому нужно отфильтровать. Откуда его брать ? - обычно это параметр диалога. Как ? изучите связку класс\отчет Tutorial_RunbaseReport
но это же отбор в запросе по конкретному клиенту а не отбор для договоров по выбранному клиенту...или я в силу своей неопытности чего то не понимаю...
Старый 15.04.2008, 16:21   #10  
V777 is offline
V777
совсем зелен
 
249 / 10 (1) +
Регистрация: 15.04.2008
блин я со своими правками в конец запутался...ситуация такая...стандартно в CustTrans поле RContractAccount имеет тип текст...соответственно когда я по кнопке выбрать пытаюсь выбрать номер договора он не дает...выпадающий список не появляется...
я поменял ему типа на RContractAccount и он стал давать выбирать договора а не просто руками писать номер, но в выпадающем списке отображаются все договора по всем клиентам...как сделать что бы в выпадающем списке были договора тока клиента которого я выбрал...мне не понятно...
Старый 15.04.2008, 16:30   #11  
konopello is offline
konopello
SAP
SAP
 
628 / 76 (4) ++++
Регистрация: 08.11.2005
Адрес: Минск
Цитата:
блин я со своими правками в конец запутался...ситуация
Да там дела не так просты как кажуться, вам придеться писать свой lookup, для этого поля.

Ну вот что то похожее что вам нужно:

X++:
client static void lookupRContractCode(Object                  _lookupCtrl,
                                       RContractPartnerType    _rcontractPartnerType)
{
    SysTableLookup          sysTableLookup;
    Query                   query = new Query();
    QueryBuildDataSource    queryBuildDataSource;
    QueryBuildRange         queryBuildRange;
    ;

    sysTableLookup       = SysTableLookup::newParameters(tableNum(RContractTypes), _lookupCtrl);
    queryBuildDataSource = query.addDataSource(tableNum(RContractTypes));

    queryBuildRange      = queryBuildDataSource.addRange(fieldNum(RContractTypes, ContractPartnerType));
    queryBuildRange.value(queryvalue(_rcontractPartnerType));

    sysTableLookup.addLookupfield(fieldNum(RContractTypes, ContractCode));
    sysTableLookup.addLookupfield(fieldNum(RContractTypes, ContractCodeName));
    sysTableLookup.addLookupfield(fieldNum(RContractTypes, ContractPartnerType));

    sysTableLookup.parmQuery(query);
    sysTableLookup.performFormLookup();
}
X++:
client static void lookupRContractAccount(Object                  _lookupCtrl,
                                          RContractPartnerType    _rcontractPartnerType,
                                          RContractCode           _rcontractCode,
                                          RContractPartnerCode    _rcontractPartnerCode,
                                          boolean                 _onlyActive = true)
{
    SysTableLookup          sysTableLookup;
    Query                   query = new Query();
    QueryBuildDataSource    queryBuildDataSource;
    QueryBuildRange         queryBuildRange;
    ;

    sysTableLookup       = SysTableLookup::newParameters(tableNum(RContractTable), _lookupCtrl);
    queryBuildDataSource = query.addDataSource(tableNum(RContractTable));

    queryBuildRange      = queryBuildDataSource.addRange(fieldNum(RContractTable, RContractPartnerType));
    queryBuildRange.value(queryvalue(_rcontractPartnerType));

    queryBuildRange      = queryBuildDataSource.addRange(fieldNum(RContractTable, RContractCode));
    queryBuildRange.value(queryvalue(_rcontractCode));

    queryBuildRange      = queryBuildDataSource.addRange(fieldNum(RContractTable, RContractPartnerCode));
    queryBuildRange.value(queryvalue(_rcontractPartnerCode));

    if (_onlyActive)
    {
        queryBuildRange      = queryBuildDataSource.addRange(fieldNum(RContractTable, RContractStatus));
        queryBuildRange.value(queryvalue(RContractStatus::Active));
    }  
    sysTableLookup.addLookupfield(fieldNum(RContractTable, RContractAccount));
    sysTableLookup.addLookupfield(fieldNum(RContractTable, RContractCode));
    sysTableLookup.addLookupfield(fieldNum(RContractTable, RContractPartnerCode));
    sysTableLookup.addLookupfield(fieldNum(RContractTable, ContractDate));
    sysTableLookup.addLookupfield(fieldNum(RContractTable, RContractNumber));

    sysTableLookup.parmQuery(query);
    sysTableLookup.performFormLookup();
}
Старый 15.04.2008, 16:33   #12  
V777 is offline
V777
совсем зелен
 
249 / 10 (1) +
Регистрация: 15.04.2008
а эти методы где должны находиться??? на query???
Старый 15.04.2008, 16:37   #13  
V777 is offline
V777
совсем зелен
 
249 / 10 (1) +
Регистрация: 15.04.2008
или имеется ввиду что мне на саму форму отчета новый лукап закинуть нада???
Старый 15.04.2008, 16:42   #14  
konopello is offline
konopello
SAP
SAP
 
628 / 76 (4) ++++
Регистрация: 08.11.2005
Адрес: Минск
Цитата:
или имеется ввиду что мне на саму форму отчета новый лукап закинуть нада???
это для контролов формы, соответствующих.
Старый 15.04.2008, 16:43   #15  
konopello is offline
konopello
SAP
SAP
 
628 / 76 (4) ++++
Регистрация: 08.11.2005
Адрес: Минск
А да и эти методы советую создать соответственно на таблицах RContractTypes и RContractTable они могу много еще где пригодиться : )
Старый 15.04.2008, 16:44   #16  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
Да, нужно на форму добавить контрол с Lookup'ом. Но проблема в том что формы-то нет, в этом репорте используется Dialog. => по-хорошему, нужно написать форму, перетащить туда все контролы с уже существующего диалога и добавить свой с перекрытым lookup'ом. (можно правда перекрыть lookup и без дополнительной формы, но этот способ не совсем привычен для стандартного Ax программирования). Я бы посоветовал обратиться к более опытным коллегам по работе или к DevGuide, иначе ещё много вопросом возникнет, всего на форуме не расскажешь
Старый 16.04.2008, 10:20   #17  
V777 is offline
V777
совсем зелен
 
249 / 10 (1) +
Регистрация: 15.04.2008
а как создать свою форму??? и как привязать ее к отчету??? я до этого только передавал элементы в форму Dialog...уж извините за такие вопросы...не знаю я ничего...
Старый 16.04.2008, 10:22   #18  
V777 is offline
V777
совсем зелен
 
249 / 10 (1) +
Регистрация: 15.04.2008
Цитата:
Сообщение от DSPIC Посмотреть сообщение
(можно правда перекрыть lookup и без дополнительной формы, но этот способ не совсем привычен для стандартного Ax программирования). Я бы посоветовал обратиться к более опытным коллегам по работе или к DevGuide, иначе ещё много вопросом возникнет, всего на форуме не расскажешь
как это можно сделать??? более опытного нет пока...приходится самому возиться...именно поэтому и пишу сюда...
Старый 16.04.2008, 10:39   #19  
konopello is offline
konopello
SAP
SAP
 
628 / 76 (4) ++++
Регистрация: 08.11.2005
Адрес: Минск
Цитата:
как это можно сделать??? более опытного нет пока...приходится самому возиться...именно поэтому и пишу сюда...
В класс \Classes\RLedgerSheetEngine_TurnoverCust перекрыть метод: dialog и добавить туда свою функциональность.

X++:
DialogRunbase dialog = super();

    dialogOperationTax.visible(false);
    dialogPrintCVTrans = dialog.addFieldValue(typeId(NoYes), printCVTrans, "@DIS10796", "@DIS10803");

    dlgExcelPrintFullAccount = dialog.addFieldValue(typeId(NoYes), excelPrintFullAccount,  "@Excel полное имя контрагента",   "@Excel полное имя для контрагента");

    return dialog;
Старый 16.04.2008, 10:48   #20  
V777 is offline
V777
совсем зелен
 
249 / 10 (1) +
Регистрация: 15.04.2008
хм...я в этом коде мало что понял...но сделал...ругается что переменная DialogRunbase не объявлена...
Теги
ax4.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Помогите с отчетом Silphidae DAX: Программирование 6 18.11.2008 13:50
Помогите новичку (Работа с таблицами) Sada DAX: Программирование 4 03.06.2005 10:13
Помогите новичку: импорт Bars DAX: Администрирование 6 26.03.2005 09:14
помогите новичку ita DAX: Программирование 16 21.02.2005 18:12
Помогите новичку Security keys listener DAX: Администрирование 4 24.07.2003 16:28

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

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

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