|
![]() |
#1 |
Участник
|
Спасибо! Вы решили мою задачу.
Получается, что дочерние части формы связаны с родителькой частью через args.caller() Вот так можно получить пользовательские фильтры, установленные на шапках заказа, находясь в той части формы, которая относится к строкам заказов: X++: void new(FormRun _callerFormRun) { Query localQuery; FormDatasource formDatasource; int i; PartList partList; Object obj; ; partList = new PartList(_callerFormRun); if (!partList.partCount()) //если на форме нет частей, то предполагаем, что эта форма - часть родительскрй формы, которая находится в args().caller() { obj = _callerFormRun.args(); if (obj) obj = obj.caller(); //получаем родительскую форму if (obj) { formDatasource = obj.dataSource(1); localQuery = formDatasource.queryRun().Query(); info(localQuery.datasourceNo(1).toString()); //достаем запрос родительской формы for (i = 1; i <= localQuery.queryFilterCount(); i++) { info(localQuery.queryFilter(i).toString()); //достаем пользовательские фильтры из родительской формы //if (localQuery.queryFilter(i).dataSource().name() == qbds.name()) // Query.addQueryFilter(qbds, localQuery.queryFilter(i).field()).value(localQuery.queryFilter(i).value()); } } } } Последний раз редактировалось Ace of Database; 27.03.2017 в 14:27. |
|
![]() |
#2 |
Участник
|
Вот так получается универсально получить пользовательские фильтры из родительской части формы. Исключаются "случайные связи", если форма просто была вызвана из другой формы, для которой она не является частью.
X++: void new(FormRun _callerFormRun) { Query localQuery; FormDatasource formDatasource; int i; PartList partList; Object obj; boolean partExists(FormRun _formRun, str _name) { PartList partListLocal = new PartList(_formRun); FormRun part; int j; for(j = 1; j <= partListLocal.partCount(); j++) { part = partListLocal.getPartById(j); if (part && part.name() == _name) { return true; } } return false; } ; partList = new PartList(_callerFormRun); if (!partList.partCount()) //если на форме нет частей, то предполашаем, что эта форма - часть родительскрй формы, которая находится в args().caller() { obj = _callerFormRun.args(); if (obj) obj = obj.caller(); //получаем родительскую форму if (obj && (obj is FormRun)) { if (partExists(obj, _callerFormRun.name())) //проверяем, что текущая форма действительно является частью родительской формы, а не просто вызвана из другой формы { formDatasource = obj.dataSource(1); localQuery = formDatasource.queryRun().Query(); info(localQuery.datasourceNo(1).toString()); //достаем запрос родительской формы for (i = 1; i <= localQuery.queryFilterCount(); i++) { info(localQuery.queryFilter(i).toString()); //достаем пользовательские фильтры из родительской формы //if (localQuery.queryFilter(i).dataSource().name() == qbds.name()) // Query.addQueryFilter(qbds, localQuery.queryFilter(i).field()).value(localQuery.queryFilter(i).value()); } } } } } |
|
|
За это сообщение автора поблагодарили: Jorj (1). |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|