AXForum  
Go Back   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Forgotten Your Password?
Register Forum Rules FAQ Members List Today's Posts Search

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

Last edited by DSPIC; 15.04.2008 at 15:52.
Old 15.04.2008, 15:56   #5  
konopello is offline
konopello
SAP
SAP
 
628 / 76 (4) ++++
Join Date: 08.11.2005
Location: Минск
Quote:
проще для программеров...но не для пользователей...
Ну как знаете, но проще обучить пользователей сохранять запросы, в стандартной форме запросов, чем писать все подряд для удобства пользователей, а через неделю они попросят еще одно поле в диалог добавить....... И снова садись и программируй.

Last edited by konopello; 15.04.2008 at 15:57. Reason: описка
Old 15.04.2008, 16:00   #6  
V777 is offline
V777
совсем зелен
 
249 / 10 (1) +
Join Date: 15.04.2008
тоесть вложенный датасоурс не нужен???
Old 15.04.2008, 16:02   #7  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Join Date: 11.04.2008
Если нужен фильтр только по клиентам то не нужен


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

Last edited by DSPIC; 15.04.2008 at 16:06.
Old 15.04.2008, 16:08   #8  
V777 is offline
V777
совсем зелен
 
249 / 10 (1) +
Join Date: 15.04.2008
Quote:
Originally Posted by konopello View Post
Ну как знаете, но проще обучить пользователей сохранять запросы, в стандартной форме запросов, чем писать все подряд для удобства пользователей, а через неделю они попросят еще одно поле в диалог добавить....... И снова садись и программируй.
на том и учимся...
Old 15.04.2008, 16:11   #9  
V777 is offline
V777
совсем зелен
 
249 / 10 (1) +
Join Date: 15.04.2008
Quote:
Originally Posted by DSPIC View Post

Найдите метод createQueryRun() и вставьте код перед "return":
X++:
    range = findOrCreateRange_W(ds, fieldnum(CustTrans, AccountNum));
range.value("XXXX");
, где XXXX - нужный AccountNum, по которому нужно отфильтровать. Откуда его брать ? - обычно это параметр диалога. Как ? изучите связку класс\отчет Tutorial_RunbaseReport
но это же отбор в запросе по конкретному клиенту а не отбор для договоров по выбранному клиенту...или я в силу своей неопытности чего то не понимаю...
Old 15.04.2008, 16:21   #10  
V777 is offline
V777
совсем зелен
 
249 / 10 (1) +
Join Date: 15.04.2008
блин я со своими правками в конец запутался...ситуация такая...стандартно в CustTrans поле RContractAccount имеет тип текст...соответственно когда я по кнопке выбрать пытаюсь выбрать номер договора он не дает...выпадающий список не появляется...
я поменял ему типа на RContractAccount и он стал давать выбирать договора а не просто руками писать номер, но в выпадающем списке отображаются все договора по всем клиентам...как сделать что бы в выпадающем списке были договора тока клиента которого я выбрал...мне не понятно...
Old 15.04.2008, 16:30   #11  
konopello is offline
konopello
SAP
SAP
 
628 / 76 (4) ++++
Join Date: 08.11.2005
Location: Минск
Quote:
блин я со своими правками в конец запутался...ситуация
Да там дела не так просты как кажуться, вам придеться писать свой 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();
}
Old 15.04.2008, 16:33   #12  
V777 is offline
V777
совсем зелен
 
249 / 10 (1) +
Join Date: 15.04.2008
а эти методы где должны находиться??? на query???
Old 15.04.2008, 16:37   #13  
V777 is offline
V777
совсем зелен
 
249 / 10 (1) +
Join Date: 15.04.2008
или имеется ввиду что мне на саму форму отчета новый лукап закинуть нада???
Old 15.04.2008, 16:42   #14  
konopello is offline
konopello
SAP
SAP
 
628 / 76 (4) ++++
Join Date: 08.11.2005
Location: Минск
Quote:
или имеется ввиду что мне на саму форму отчета новый лукап закинуть нада???
это для контролов формы, соответствующих.
Old 15.04.2008, 16:43   #15  
konopello is offline
konopello
SAP
SAP
 
628 / 76 (4) ++++
Join Date: 08.11.2005
Location: Минск
А да и эти методы советую создать соответственно на таблицах RContractTypes и RContractTable они могу много еще где пригодиться : )
Old 15.04.2008, 16:44   #16  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Join Date: 11.04.2008
Да, нужно на форму добавить контрол с Lookup'ом. Но проблема в том что формы-то нет, в этом репорте используется Dialog. => по-хорошему, нужно написать форму, перетащить туда все контролы с уже существующего диалога и добавить свой с перекрытым lookup'ом. (можно правда перекрыть lookup и без дополнительной формы, но этот способ не совсем привычен для стандартного Ax программирования). Я бы посоветовал обратиться к более опытным коллегам по работе или к DevGuide, иначе ещё много вопросом возникнет, всего на форуме не расскажешь
Old 16.04.2008, 10:20   #17  
V777 is offline
V777
совсем зелен
 
249 / 10 (1) +
Join Date: 15.04.2008
а как создать свою форму??? и как привязать ее к отчету??? я до этого только передавал элементы в форму Dialog...уж извините за такие вопросы...не знаю я ничего...
Old 16.04.2008, 10:22   #18  
V777 is offline
V777
совсем зелен
 
249 / 10 (1) +
Join Date: 15.04.2008
Quote:
Originally Posted by DSPIC View Post
(можно правда перекрыть lookup и без дополнительной формы, но этот способ не совсем привычен для стандартного Ax программирования). Я бы посоветовал обратиться к более опытным коллегам по работе или к DevGuide, иначе ещё много вопросом возникнет, всего на форуме не расскажешь
как это можно сделать??? более опытного нет пока...приходится самому возиться...именно поэтому и пишу сюда...
Old 16.04.2008, 10:39   #19  
konopello is offline
konopello
SAP
SAP
 
628 / 76 (4) ++++
Join Date: 08.11.2005
Location: Минск
Quote:
как это можно сделать??? более опытного нет пока...приходится самому возиться...именно поэтому и пишу сюда...
В класс \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;
Old 16.04.2008, 10:48   #20  
V777 is offline
V777
совсем зелен
 
249 / 10 (1) +
Join Date: 15.04.2008
хм...я в этом коде мало что понял...но сделал...ругается что переменная DialogRunbase не объявлена...
Tags
ax4.0

 

Similar Threads
Thread Thread Starter Forum Replies Last Post
Помогите с отчетом 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

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Рейтинг@Mail.ru
All times are GMT +3. The time now is 22:38.
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Contacts E-mail, Advertising.