Показать сообщение отдельно
Старый 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 в классе?