AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.06.2018, 16:50   #1  
kitty is offline
kitty
Участник
 
364 / 26 (1) +++
Регистрация: 24.05.2005
DIXF добавить фильтр на запрос
Мне нужно экспортировать данные через DIXF. Но на используемый query нужно наложить дополнительный фильтр ragge по списку значений, вроде : "A, B, C". Этот список не статичен, а вычисляется. Такое можно сделать через queryBuildDataSource, но на статический query, созданный в AOT, такой фильтр наложить невозможно.

Какой метод нужно переопределить в моем наследнике DMFEntityBase класса, чтобы наложить фильтр?
Смотрю стандартные DMF* классы , но в принципе нигде не вижу методов, что как-либо изменяют изначальный query


Спасибо
Старый 26.06.2018, 19:35   #2  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Расширение SysQueryRangeUtil не поможет решить задачу?

Например, обсуждение тут: AX2009 расширеный фильтр
__________________
Ivanhoe as is..

Последний раз редактировалось Ivanhoe; 26.06.2018 в 19:39.
За это сообщение автора поблагодарили: dech (1).
Старый 26.06.2018, 19:56   #3  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
647 / 350 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Так а что мешает взять за основу запрос из AOT и доработать напильником через классы QueryBuild***?
Например следующий запрос выведет первые 10 серийников в складских запасах, отфильтрованных по конкретным локейшнам
X++:
static void getSerialsFromInventoryOnhand(Args _args)
{
    InventDim       inventDim;
    Query           query = new Query(queryStr(InventOnhandDim));
    QueryBuildRange range = query.dataSourceTable(tableNum(InventDim)).findRange(fieldNum(InventDim, WMSLocationId));
    QueryRun        queryRun;
    Counter         counter = 10;
    ;
    
    range.value("FLOOR,CCDFS01,CCDFS02");
 
    queryRun = new QueryRun(query);
    
    while (counter && queryRun.next())
    {
        counter--;
 
        inventDim = queryRun.get(tableNum(InventDim));
        info(InventDim.InventSerialId);
    }
    
    info("Done");
}
__________________
// no comments
Старый 27.06.2018, 08:26   #4  
KiselevSA is offline
KiselevSA
Злыдни
Аватар для KiselevSA
Злыдни
Лучший по профессии 2015
 
958 / 333 (13) ++++++
Регистрация: 25.01.2002
Адрес: Москва
Для особо хитрых случаев, например, копирование справочников из предыдущих версий AX в 12R3 использую "Формат исходных данных" - ODBC. Создаю DSN для соединения. А потом в группе обработки в поле с запросом копирую текст запроса, предварительно отлаженный в SQL Studio. Основная проблема при таком варианте, составить структуру промежуточного объекта с наименованием полей и привести структуру запроса с помощью as к названиям промежуточной таблицы. Хотя моно помучиться с ручным сопоставлением. На небольших справочниках это не очень длительная работа.
Таким способом перетащил справочник регионов по странам мира и городов по странам мира и регионам с 4-ки на 12R3
__________________
люди...считают, что если техника не ломается, то ее не нужно ремонтировать. Инженеры считают, что если она не ломается, то нуждается в совершенствовании.
Старый 27.06.2018, 16:40   #5  
kitty is offline
kitty
Участник
 
364 / 26 (1) +++
Регистрация: 24.05.2005
Цитата:
Сообщение от dech Посмотреть сообщение
Так а что мешает взять за основу запрос из AOT и доработать напильником через классы QueryBuild***?
Например следующий запрос выведет первые 10 серийников в складских запасах, отфильтрованных по конкретным локейшнам
X++:
static void getSerialsFromInventoryOnhand(Args _args)
{
    InventDim       inventDim;
    Query           query = new Query(queryStr(InventOnhandDim));
    QueryBuildRange range = query.dataSourceTable(tableNum(InventDim)).findRange(fieldNum(InventDim, WMSLocationId));
    QueryRun        queryRun;
    Counter         counter = 10;
    ;
    
    range.value("FLOOR,CCDFS01,CCDFS02");
 
    queryRun = new QueryRun(query);
    
    while (counter && queryRun.next())
    {
        counter--;
 
        inventDim = queryRun.get(tableNum(InventDim));
        info(InventDim.InventSerialId);
    }
    
    info("Done");
}
Мешает именно то, что спрашивается в топике - не понятно, где эти изменения делать. Какой метод переопределять , чтобы изменить запрос, используемый DIXF? Проблемы написать сам запрос никакой нет
Старый 27.06.2018, 16:47   #6  
kitty is offline
kitty
Участник
 
364 / 26 (1) +++
Регистрация: 24.05.2005
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
Расширение SysQueryRangeUtil не поможет решить задачу?

Например, обсуждение тут: AX2009 расширеный фильтр
Хм.. попробую. Спасибо.

Правда, все равно, если нужно динамически будет менять запрос(добавить DS, например), то не понятно, в каком методе это нужно будет делать ....
Поэтому вопрос остается открытый.
Старый 27.06.2018, 18:13   #7  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Цитата:
Сообщение от kitty Посмотреть сообщение
Хм.. попробую. Спасибо.

Правда, все равно, если нужно динамически будет менять запрос(добавить DS, например), то не понятно, в каком методе это нужно будет делать ....
Поэтому вопрос остается открытый.
Если прям настолько динамический запрос, то, конечно, нужно с классами DIXF разбираться. А заполнить рендж, как написано в первом посте, вполне можно.
__________________
Ivanhoe as is..
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как добавить AND фильтр в запрос kitty DAX: Программирование 8 21.01.2016 16:42
Не отрабатывает фильтр / запрос farlander DAX: Программирование 7 07.06.2011 14:23
оборотная ведомость по складу необходимо добавить ещё один фильтр jeky DAX: Программирование 21 06.04.2009 19:03
Расширенный фильтр в запрос или как то так Sada DAX: Программирование 7 15.01.2009 16:09
Как в query добавить фильтр по аналитике (Dimension)? Roman812 DAX: Программирование 21 15.07.2005 09:53

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 00:19.