Пишу класс с диалогом
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 в классе?