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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 19.09.2025, 13:16   #9  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,720 / 1207 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Я тоже не нашел решения. Похоже, очередной глюк парсинга расширенного Range.

Чтобы увидеть проблему в dax2012 сделал джоб по таблице оборотно-сальдовой ведомости. Там есть поля типа массив

В dax2012 есть метод query.getSQLStatement(), который позволяет увидеть запрос SQL. Но эту функцию надо выполнять на стороне сервера.

X++:
static void Job_Test(Args _args)
{
    MenuFunction    mf;

    Query                           query;
    QueryBuildDataSource            qbds;
    QueryBuildRange                 qbRange;
    ;

    // перезапускаем job на стороне сервера
    if ( ! isRunningOnServer())
    {
        mf = classFactory::makeObjectOnServer(classNum(MenuFunction));
        mf.objectType(MenuItemObjectType::Job);
        mf.runOn(ClassRunMode::Server);
        mf.object(funcName());
        mf.run();
        return;
    }
    
    
    info('Обычный фильтр по полю-массиву');
    
    query = new Query();
    qbds = query.addDataSource(tableNum(RLedgerTurnoverSheetHeader), 'T1');
    qbds.addSelectionField(fieldNum(RLedgerTurnoverSheetHeader, RecId));
    
    qbRange = qbds.addRange(fieldNum(RLedgerTurnoverSheetHeader, GroupParam), 2);
    qbRange.value('XXXXXX');
    info(qbds.toString());
    info(query.getSQLStatement());
    
    info('');
    info('Расширенный фильтр по полю-массиву');
    
    query = new Query();
    qbds = query.addDataSource(tableNum(RLedgerTurnoverSheetHeader), 'T1');
    qbds.addSelectionField(fieldNum(RLedgerTurnoverSheetHeader, RecId));
    
    qbRange = qbds.addRange(fieldNum(RLedgerTurnoverSheetHeader, RecId));
    qbRange.value('(T1.GroupParam[2] == "XXXXXX")');
    info(qbds.toString());
    info(query.getSQLStatement());
    
}
Видно, что в случае использования обычного фильтра на SQL подставляется поле "GROUPPARAM2_", а при использовании расширенного фильтра корректного парсинга уже нет и подставляется поле "GROUPPARAM"

Т.е. в dax2012 нельзя использовать в расширенных фильтрах поля типа массив
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
За это сообщение автора поблагодарили: Logger (3).
Теги
bug, extended query, extended query syntax

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
AXAPTA 2012. Работа с выпадающим списком feuerfub DAX: Функционал 1 21.11.2019 15:06
emeadaxsupport: Dynamics AX 2012 Reporting: How to add company logo into query based report Blog bot DAX Blogs 0 06.12.2012 21:11
X++: X++ Arrays Behave Differently in .NET CIL, in Dynamics AX 2012 Blog bot DAX Blogs 0 17.09.2012 23:11
dynamicsaxtraining: Purchase Blog bot DAX Blogs 0 11.03.2012 05:25

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

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

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