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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.05.2021, 20:25   #1  
DAX is offline
DAX
Участник
 
28 / 18 (1) ++
Регистрация: 03.12.2008
D365 Query Range на Datasource с Outer join
D365 Создаю батч джоб (с помощью SysOperation - Сервис клас и дата контракт) c Query.

Query создан в AOT - два datasource с Outer join. Range добавленный в AOT на второй datasource (child) не отображается при первом запуске. Точнее отображается в диалоге самого батча, но не отображается в настройках фильтров (кнопка Filter).

В ручную пользователь может добавить этот range и оно вроде даже работает.

В коде нашел что все range на Outer join datasource делаются невидимыми.

Что это такое? Лучше вообще не использовать Outer join и просто добавить поля для фильтров в сам диалог? Не понимаю для чего сделано такое ограничение

Class: SysQueryForm.getRangeVisible
X++:
dictTable = new DictTable(queryBuildDataSource.table());
        if (dictTable && dictTable.isView() && SysQueryForm::isSFK(tableId, fieldId))
        {
            isVisible = NoYes::No;
        }
        else if (joinMode == JoinMode::OuterJoin)
        {
            isVisible = NoYes::No;
        }
        else
        {
Старый 05.05.2021, 20:30   #2  
michel1971 is offline
michel1971
Участник
 
78 / 78 (3) ++++
Регистрация: 14.01.2011
На outerjoin нужно фильтр добавлять (QueryBuildFilter) что пользователь и делаеть через интерфейс.
За это сообщение автора поблагодарили: DAX (1).
Старый 05.05.2021, 20:34   #3  
DAX is offline
DAX
Участник
 
28 / 18 (1) ++
Регистрация: 03.12.2008
блин точно, жаль в AOT нет такой возможности. Придется код писать
Старый 05.05.2021, 23:10   #4  
DAX is offline
DAX
Участник
 
28 / 18 (1) ++
Регистрация: 03.12.2008
Может кому пригодится.

Добавил в декларацию data contract
X++:
implements SysOperationInitializable
И далее
X++:
public void initialize()
    {
        Query q = new Query(SysOperationHelper::base64Decode(packedQuery));
        q.addQueryFilter(q.dataSourceTable(tableNum(Table)), fieldStr(Table, Field));
        packedQuery = SysOperationHelper::base64Encode(q.pack());
    }
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Sumit Potbhare: Retail Warehousing | Wrap up | Approach to D365 for Commerce with Adv WH Mgmt Blog bot DAX Blogs 0 28.04.2021 13:12
patrickmouwen: How to Unlock Many Hidden D365 Retail Features! Blog bot DAX Blogs 0 13.05.2020 22:13
Двойной Outer Join в Query LTA DAX: Программирование 2 21.01.2020 09:28
patrickmouwen: D365 Retail APIs Part II: How to know exactly what happens inside D365 Retail Blog bot DAX Blogs 0 14.12.2019 01:17
Dynamics AX Sustained Engineering: Performance issue on Query Object when using Outer Join with more than one Child Table Blog bot DAX Blogs 0 21.12.2010 04:13
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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