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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.08.2017, 09:12   #1  
SuperStar88 is offline
SuperStar88
Участник
 
82 / 10 (1) +
Регистрация: 11.08.2017
? Программное создание comboBox в Dialog
Надо на форму Dialog добавить поле RContractCode из таблицы RContractTable.
Должен получиться такой список
Нажмите на изображение для увеличения
Название: screenshot 2017-08-11 001.png
Просмотров: 560
Размер:	17.3 Кб
ID:	11592

Делаю так:
X++:
protected Object dialog(DialogRunbase _dialog, boolean _forceOnClient)
{;
    dialog = super(_dialog, _forceOnClient);
    dialog.caption("Задайте параметры");

    rContractCodeField = dialog.addFieldValue(TypeId(RContractCode), rContractCode);

    return dialog;
}
public void dialogPostRun(DialogRunbase _dialog)
{
    super(_dialog);

    _dialog.formRun().controlMethodOverloadObject(this);
    _dialog.formRun().controlMethodOverload(true);
}

public void rContractCodeField_lookup()
{
    FormStringControl           formStringControl;
    SysTableLookup              sysTableLookup;
    Query                               query = new Query();
    QueryBuildDataSource     qbds;
    ;

    formStringControl = dialog.formRun().controlCallingMethod();
    sysTableLookup = SysTableLookup::newParameters(tablenum(RContractTable),formStringControl);
    sysTableLookup.addLookupfield(fieldnum(RContractTable, RContractCode));

    qbds = query.addDataSource(tablenum(RContractTable));
    // Получаем нужное поле
    qbds.addSelectionField(fieldnum(RContractTable, RContractCode));
    // Используем группировку, чтобы убрать дубли
    qbds.addGroupByField(fieldnum(RContractTable, RContractCode));
    // Отображаем только для Поставщиков
    qbds.addRange(fieldnum(RContractTable, RContractPartnerType)).value(enum2str(RContractPartnerType::Vend));

    //info(query.dataSourceNo(1).toString());
    sysTableLookup.parmQuery(query);
    sysTableLookup.performFormLookup();
}
В итоге получается такое:
Название: Безымянный.png
Просмотров: 1016

Размер: 32.7 Кб

То есть, не получается отфильтровать нужные данные. И оно почему-то не заходит в lookup-метод

AX2009 (5.0.1500)
Старый 11.08.2017, 09:50   #2  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
Попробуйте так:
X++:
public void dialogPostRun(DialogRunbase _dialog)
{
    super(_dialog);

    _dialog.dialogForm().formRun().controlMethodOverloadObject(this);
    _dialog.dialogForm().formRun().controlMethodOverload(true);
}
И лукап я бы строил по таблице RContractTypes с присоединенной по exists join RcontractTable.
__________________
Андрей.
За это сообщение автора поблагодарили: SuperStar88 (1).
Старый 11.08.2017, 09:52   #3  
Dumfag is offline
Dumfag
Участник
 
8 / 10 (1) +
Регистрация: 20.03.2015
Пропиши в методе dialog:
rContractCodeField .registerOverrideMethod(methodStr(formStringControl, lookup), methodStr(Название класса, rContractCodeField_lookup), this);

X++:
protected Object dialog(DialogRunbase _dialog, boolean _forceOnClient)
{;
    dialog = super(_dialog, _forceOnClient);
    dialog.caption("Задайте параметры");

    rContractCodeField = dialog.addFieldValue(TypeId(RContractCode), rContractCode);
    rContractCodeField .registerOverrideMethod(methodStr(formStringControl, lookup), methodStr(name_class_from, rContractCodeField_lookup), this);
    return dialog;
}

Последний раз редактировалось Dumfag; 11.08.2017 в 09:55.
Старый 11.08.2017, 10:06   #4  
dmn is offline
dmn
Участник
 
9 / 18 (1) ++
Регистрация: 25.09.2014
Вариант 1:
X++:
dialog.caption("Задайте параметры");

dialog.customFieldName_RU('rContractCodeField');
rContractCodeField = dialog.addFieldValue(TypeId(RContractCode), rContractCode);
Вариант 2:
X++:
public void rContractCodeField_lookup()
заменить на название поля диалога
X++:
public void Fld1_1_lookup()

Последний раз редактировалось dmn; 11.08.2017 в 10:15.
За это сообщение автора поблагодарили: Dron AKA andy (1), SuperStar88 (1).
Старый 11.08.2017, 11:31   #5  
SuperStar88 is offline
SuperStar88
Участник
 
82 / 10 (1) +
Регистрация: 11.08.2017
Цитата:
Сообщение от dmn Посмотреть сообщение
Вариант 1:
X++:
dialog.caption("Задайте параметры");

dialog.customFieldName_RU('rContractCodeField');
rContractCodeField = dialog.addFieldValue(TypeId(RContractCode), rContractCode);
Вариант 2:
X++:
public void rContractCodeField_lookup()
заменить на название поля диалога
X++:
public void Fld1_1_lookup()
Lookup заработал, благодарю Использовал 1 вариант!

Цитата:
Сообщение от Dron AKA andy Посмотреть сообщение
...
И лукап я бы строил по таблице RContractTypes с присоединенной по exists join RcontractTable.
Построил по таблице RContractTypes - получилось то что нужно

Цитата:
Сообщение от Dumfag Посмотреть сообщение
Пропиши в методе dialog:
rContractCodeField .registerOverrideMethod(methodStr(formStringControl, lookup), methodStr(Название класса, rContractCodeField_lookup), this);
...
У меня rContractCodeField это DialogField и такого метода нету

А можно в Lookup использовать SQL вместо QueryBuildDataSource и как?
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Программное создание оповещения. HorrR DAX: Программирование 2 13.01.2010 12:41
Снова программное создание журнала платежей -xXx- DAX: Программирование 2 29.09.2009 14:26
RLS и программное создание запросов Arahnid DAX: Программирование 3 11.10.2007 18:17
Программное создание журнала платежей покупателю belugin DAX: Программирование 11 17.08.2006 15:01
Программное создание новых записей Владимир Максимов DAX: Программирование 35 06.03.2006 14:08

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

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

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