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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.09.2015, 14:58   #1  
Emka is offline
Emka
Участник
 
40 / 12 (1) ++
Регистрация: 06.05.2015
? переопределить Lookup в классе
Пишу класс с диалогом
X++:
protected Object dialog(DialogRunbase _dialog, boolean forceOnClient)
{
;
    dialog = super(_dialog, forceOnClient);
    dialog.form().design().width(350);
    dialog.caption("Ведомость демонтажа");
    dialog.addGroup("Спецификация");
    BOMIdField  = dialog.addFieldValueEx_ZTR(typeid(BOMId),BOMId, "Спецификация","Спецификация",false, 'BOMIdField');
    BOMIdField.lookupButton(2);
    BOMIdField.mandatory_ZTR(true);

    BOMItemIdField = dialog.addFieldValue(typeid(ItemId),BOMItemId, "Код номенклатуры");
    BOMItemIdField.mandatory_ZTR(true);

    dialog.addGroup("Ведомость демонтажа");
    ITItemIdField = dialog.addFieldValue(typeid(ItemId),ITItemId, "Код номенклатуры");
    ITItemIdField.mandatory_ZTR(true);
    LanguagesCODEField = dialog.addFieldValue(typeid(String20_ZTR),LanguagesCODE, "Язык");
    LanguagesCODEField.mandatory_ZTR(true);

  return dialog;
}
где для BOMIdField прописываю дополнительно Lookup
X++:
void BOMIdField_Lookup()
{
    FormStringControl           formStringControl;
    SysTableLookup              sysTableLookup;
    Query                       query = new Query();
    QueryBuildDataSource    queryBuildDataSource;
    ;

    formStringControl = dialog.formRun().controlCallingMethod();
    sysTableLookup = SysTableLookup::newParameters(tablenum(BOM), formStringControl);
    query.addDataSource(tablenum(BOM));
    if (BOMItemIdField.value())
    {
    queryBuildDataSource = query.addDataSource(tablenum(BOM));
    queryBuildDataSource.addRange(fieldnum(BOM, ItemId)).value(BOMItemIdField.value());
   //  SysTableLookup::FilterLookupPreRun()
     }
    sysTableLookup.addLookupfield(fieldnum(BOM, BOMId));

    sysTableLookup.parmQuery(query);
    sysTableLookup.performFormLookup();
}
Есть такое условие что при выборе какого-либо значения поля BOMItemIdField добавлять условие в BOMIdField_Lookup выбрать все BOM.BOMId где BOM.ItemId = выбранному значению в BOMIdField. Нашла методы FilterLookupPreRun() и FilterLookupPostRun() но как с ними работать особо не понимаю.

Может кто работал с ними или же как то иначе переопределял Lookup в классе?
Старый 21.09.2015, 15:41   #2  
makbeth is offline
makbeth
Участник
Аватар для makbeth
КОРУС Консалтинг
 
43 / 52 (2) ++++
Регистрация: 15.05.2007
Адрес: Санкт-Петербург
filterLookupPreRun/filterLookupPostRun нужны при создании своей собственной формы lookup, в данном случае они не помогут. Что конкретно не получается?
По коду могу сказать, что подозрительно выглядит добавление 2х источников данных BOM в query в случае, если указан код номенклатуры в контроле.
Старый 21.09.2015, 15:54   #3  
Emka is offline
Emka
Участник
 
40 / 12 (1) ++
Регистрация: 06.05.2015
Цитата:
Сообщение от makbeth Посмотреть сообщение
Что конкретно не получается?.
Не получается добавить в lookup условие, что бы отображались не все данные, а только те что удовлетворяют условию
BOM.BOMId где BOM.ItemId =BOMIdField.value()
Старый 21.09.2015, 16:27   #4  
makbeth is offline
makbeth
Участник
Аватар для makbeth
КОРУС Консалтинг
 
43 / 52 (2) ++++
Регистрация: 15.05.2007
Адрес: Санкт-Петербург
X++:
    //...
    sysTableLookup = SysTableLookup::newParameters(tablenum(BOM), formStringControl);
    query.addDataSource(tablenum(BOM)); // ДОБАВИЛИ datasource BOM в query...
    if (BOMItemIdField.value())
    {
    queryBuildDataSource = query.addDataSource(tablenum(BOM)); // А здесь добавили ЕЩЕ один. Зачем???
    queryBuildDataSource.addRange(fieldnum(BOM, ItemId)).value(BOMItemIdField.value());
   //  SysTableLookup::FilterLookupPreRun()
     }
    sysTableLookup.addLookupfield(fieldnum(BOM, BOMId));
    //...
За это сообщение автора поблагодарили: Emka (1).
Старый 21.09.2015, 16:32   #5  
Emka is offline
Emka
Участник
 
40 / 12 (1) ++
Регистрация: 06.05.2015
поняла к чему вы, просто уже запуталась в попытках
убрала теперь работает
Спасибо
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
vasantharivali: Filter Second lookup based on First Value – Ax 2012 SSRS Blog bot DAX Blogs 0 24.09.2014 13:11
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
Динамические Lookup формы. Андрей Василюк DAX: База знаний и проекты 0 07.12.2001 07:07

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

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

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