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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.09.2011, 11:42   #6  
gefr is offline
gefr
Участник
Аватар для gefr
MCBMSS
 
147 / 17 (1) ++
Регистрация: 01.11.2004
Адрес: МО, Котельники
Мне нужно:
1. Выполнять различный лукап в зависимости от значения друго поля. Срослось.

2. Разрешать выбор нескольких значений. Посмотел, как делается на SysQueryForm, сделал, не работает. Заменяет другое значение при повторном выборе:
X++:
protected void dialogAccountRelation_lookup()
{
    SysLookup       sysLookup;
    Query                query=new Query();
    QueryBuildDataSource queryBuildDataSource;
    FormControl _formcontrol=dialog.curFormControl_RU();
    TmpSysQuery TmpSysQuery;
    boolean rn=false;
    ;

oldvalue=_formcontrol.valueStr();
dialog.dialogOnClient_RU().updateServer();
if(this.priceModule(dialogRelation.value())==ModuleInventCustVend::Vend){
    switch(dialogAccountCode.value()){
    case TableGroupAll::All:break;
    case TableGroupAll::GroupId:
        queryBuildDataSource=query.addDataSource(tablenum(VendGroup));
        TmpSysQuery.initValue();
        TmpSysQuery.Table_Id=tablenum(VendGroup);
        TmpSysQuery.Field_Id=fieldnum(VendGroup,VendGroup);
        TmpSysQuery.insert();

        rn=true;
        break;
    case TableGroupAll::Table:
        queryBuildDataSource=query.addDataSource(tablenum(VendTable));
        TmpSysQuery.initValue();
        TmpSysQuery.Table_Id=tablenum(VendTable);
        TmpSysQuery.Field_Id=fieldnum(VendTable,AccountNum);
        TmpSysQuery.insert();
        rn=true;
        break;
    }
    if(rn){
        syslookup::lookupRange(_formcontrol,TmpSysQuery,query);
        dialog.updateClient(dialog.dialogOnClient_RU());
        }
 } else info("Поддерживается только для модуля поставщиков");
Переделал midified, чтобы отработать ситуацию. В нем оказалось, что старое значение сохраняется в это методе:
X++:
protected void dialogAccountRelation_modified(){
 ;
 dialog.dialogOnClient_RU().updateServer();
 if(OldValue) dialogAccountRelation.value(OldValue+dialogAccountRelation.value());
 dialog.updateClient(dialog.dialogOnClient_RU());
 }
Т.е. выбирал в первый раз 001, поставил "|", сделал повторный лукап, выбрал 002, на выходе в значении поля - не "001|002", как ожидалось, а "001|001|"
Не подскажете, где косяк?
Теги
ax2009, dialog, законченный пример, полезное

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Протоколирование запуска классов наследников RunBase polygris DAX: Программирование 9 11.02.2010 15:59
Расширенные возможности Query - арифметические операции в условие Where. Lemming DAX: Программирование 10 07.02.2008 14:38
Inside Dynamics AX 4.0: RunBase Framework Extension Part IV Blog bot DAX Blogs 0 02.10.2007 04:49
Inside Dynamics AX 4.0: RunBase Framework Extension Part III Blog bot DAX Blogs 0 02.10.2007 04:49
Inside Dynamics AX 4.0: RunBase Framework Extension Part I Blog bot DAX Blogs 0 30.09.2007 09:20

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

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

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