Показать сообщение отдельно
Старый 27.03.2017, 11:47   #1  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
870 / 637 (23) +++++++
Регистрация: 14.10.2004
Как по объекту FormRun узнать, является ли он частью формы ListPage
Привет!
AX2012 R2.
На входе имеем FormRun, полученный, к примеру, из той части формы SalesTableListPage, на которой отображаются строки заказов на продажу.
Вопрос: как получить FormRun, в котором отображаются заголовки заказов? При этом модифировать уже имеющиеся формы и классы нельзя.
Я перехватываю метод task в классе SysSetupFormRun. В этот момент в переменной this сидит FormRun, который либо ссылается на заголовки заказов, либо на строки заказов, в зависимости от того, в каком месте была нажата клавиша.
Мне надо узнать фильтр, наложенный пользователем на заголовки заказов. Это можно узнать только получив FormRun с заголовками заказов. Пользовательский фильтр я получаю так:
X++:
    localQuery  = _formDatasource.queryRun().Query();
    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());
    }
Смысл в том, что мне надо воссоздать запрос, который бы возвращал все строки заказов в зависимости от наложенного фильтра на заголовки заказов. И эту задачу надо решить не только для заказов, а для любой формы ListPage.