21.09.2015, 14:58 | #1 |
Участник
|
переопределить 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; } 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(); } Может кто работал с ними или же как то иначе переопределял Lookup в классе? |
|
21.09.2015, 15:41 | #2 |
Участник
|
filterLookupPreRun/filterLookupPostRun нужны при создании своей собственной формы lookup, в данном случае они не помогут. Что конкретно не получается?
По коду могу сказать, что подозрительно выглядит добавление 2х источников данных BOM в query в случае, если указан код номенклатуры в контроле. |
|
21.09.2015, 15:54 | #3 |
Участник
|
|
|
21.09.2015, 16:27 | #4 |
Участник
|
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 |
Участник
|
поняла к чему вы, просто уже запуталась в попытках
убрала теперь работает Спасибо |
|