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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.12.2013, 20:20   #1  
Alex Pavluk is offline
Alex Pavluk
Участник
 
6 / 10 (1) +
Регистрация: 15.11.2013
Динамически создаваемые LookUp-ы и создание на них динамической обработки
Как на динамически создаваемый LookUp
например

dlgFactureExtIdNumSeq = dialog.addFieldValue(typeid(NumberSequenceGroupId), factureexternalId);

повесить метод обработки, чтобы передать данные для фильтра в другое поле,
созданное так :

dlgFactureExtId = dialog.addFieldValue(typeid(FactureExternalId_RU), factureexternalId);

?
Старый 03.12.2013, 22:13   #2  
pedrozzz is offline
pedrozzz
Молодой, подающий надежды
Аватар для pedrozzz
MCBMSS
Лучший по профессии 2015
 
164 / 218 (8) ++++++
Регистрация: 18.02.2010
Адрес: Краснодар
Для 2009 старше RU5 можно перекрыть метод lookup по аналогии с примером в теме Расширенные возможности отслеживания событий на диалогах классов-наследников RunBase

В 2012 можно использовать метод контрола registerOverrideMethod()
X++:
dlgFactureExtId.registerOverrideMethod(methodStr(FormStringControl, lookup), methodStr(MyClass, dlgFactureExtId_lookup), this);
__________________
Кононов Пётр
За это сообщение автора поблагодарили: Dzha (1).
Старый 04.12.2013, 19:52   #3  
Alex Pavluk is offline
Alex Pavluk
Участник
 
6 / 10 (1) +
Регистрация: 15.11.2013
Создаю динамическую форму :

protected Object dialog(DialogRunbase dialog, boolean forceOnClient)
.....
dlgFactuDocId = dialog.addFieldValue(typeid(ZEU_FactuDocId), factureDocId); //Fld2_1
.....
dlgFactureExtIdNumSeq = dialog.addFieldValue(typeid(NumberSequenceGroupId), factureexternalId); //Fld5_1
dlgZEU_SourceFacture = dialog.addFieldValue(typeid(FactureExternalId_RU), ZEU_SourceFacture);
dlgZEU_CorrectionReason = dialog.addFieldValue(typeid(ZEU_CorrectionReason), ZEU_CorrectionReason);
dlgZEU_SourceFacture.visible(false);
dlgZEU_CorrectionReason.visible(false);
dialog.allowControlMethodOverload_RU(true);
.....


Создаю обработку на выбор LookUp :

protected boolean Fld2_1_modified()
{
boolean ret=True;
;

if (!(ZEU_FactureDoc::find(dlgFactuDocId.value()).DocType == ZEU_DocType::RK))
{
dlgZEU_SourceFacture.visible(true);
dlgZEU_CorrectionReason.visible(true);
}
else
{
dlgZEU_SourceFacture.visible(false);
dlgZEU_CorrectionReason.visible(false);
}

// for Repaint dialog
dialog2.dialogOnClient_RU().updateServer();
dialog2.updateClient(dialog2.dialogOnClient_RU());
return ret;
}


Суть в том, что при выборе LookUp Fld2_1 надо проверять выбранное значение
и соответственно делать видимыми/невидимыми два поля ввода.
Проблемы :
1. dlgFactuDocId.value() - пустое
2. Если включен блок // for Repaint dialog, то визуально эти два поля появляются
на форме, но при этом текст Fld2_1 становится пустым
3. Если не включен блок // for Repaint dialog, то визуально эти два поля НЕ появляются
на форме, и при этом текст Fld2_1 не пустой (хотя dlgFactuDocId.value() все равно пустой)

Что я не так делаю ?
Старый 05.12.2013, 09:04   #4  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
647 / 350 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Чтобы решить первую проблему, попробуйте дописать свой код как показано ниже. Вторая проблема возможно исчезнет сама.
X++:
protected boolean Fld2_1_modified()
{
    Object  control = dialog.formRun().controlCallingMethod();
    boolean ret     = control.modified();
    boolean vsblity;
    ;

    if (ret)
    {
        vsblity = ZEU_FactureDoc::find(dlgFactuDocId.value()).DocType != ZEU_DocType::RK;
        dlgZEU_SourceFacture.visible(vsblity);
        dlgZEU_CorrectionReason.visible(vsblity);
    
        // for Repaint dialog
        dialog2.dialogOnClient_RU().updateServer();
        dialog2.updateClient(dialog2.dialogOnClient_RU());
    }
    return ret;
}
__________________
// no comments
Старый 05.12.2013, 11:47   #5  
Alex Pavluk is offline
Alex Pavluk
Участник
 
6 / 10 (1) +
Регистрация: 15.11.2013
Во время выполнения строка :
Object control = dialog2.formRun().controlCallingMethod();
ругается на "объект controlCallingMethod() не инициализирован"
Старый 05.12.2013, 12:01   #6  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
dialog2?
Старый 05.12.2013, 12:13   #7  
Alex Pavluk is offline
Alex Pavluk
Участник
 
6 / 10 (1) +
Регистрация: 15.11.2013
Дело в том, что в форме которую я рехтую в ClassDeclaretion объявлено DialogRunbase dialog2; И в методе protected Object dialog(DialogRunbase dialog, boolean forceOnClient)
есть присваивание dialog2=dialog; К объекту dialog вне этого метода доступа нет.
Старый 05.12.2013, 12:30   #8  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
что то вы не так делаете с кучей диалогов
объявите глобальной переменной один диалог и работайте с ним

а потом

public Object dialog()
{

;
dialog = super();

*******************
return dialog;
}

Последний раз редактировалось Sada; 05.12.2013 в 12:32.
Старый 05.12.2013, 12:36   #9  
Alex Pavluk is offline
Alex Pavluk
Участник
 
6 / 10 (1) +
Регистрация: 15.11.2013
Попробую. Проблема в том что этот dialog был кем-то написан до меня и почему так не стандартно я не знаю. И для чего надо forceOnClient ?
Старый 05.12.2013, 12:52   #10  
Alex Pavluk is offline
Alex Pavluk
Участник
 
6 / 10 (1) +
Регистрация: 15.11.2013
Поменял
//class CustPrepaymentFactureCreate_RU extends RunBase на
public class CustPrepaymentFactureCreate_RU extends RunBaseBatch
Оставил только один dialog. Его метод поменял на
public Object dialog()
{

;
dialog = super();

*******************
return dialog;
}
Во время выполнения строка все равно ругается:
Object control = dialog.formRun().controlCallingMethod();
ругается на "объект controlCallingMethod() не инициализирован"
Теги
lookup filter, lookupvalue

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Поля из разных таблиц в динамической Lookup-форме samolalex DAX: Программирование 8 06.06.2011 20:20
Kashperuk Ivan: Lookup form returning more than one value Blog bot DAX Blogs 0 29.01.2010 18:05
gatesasbait: How to define a custom lookup form for an extended datatype Blog bot DAX Blogs 0 09.07.2008 22:05
Создание Lookup формы Maxim Gorbunov DAX: База знаний и проекты 9 26.06.2007 16:44
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38

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

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

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