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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.09.2025, 13:24   #1  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,995 / 3293 (117) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Некорректная работа Extended query в 2012-й с Array полями
Привет.
Пишем модификацию под 12-ку R3
задействовали array поля (аналог Dimension)
И вдруг выясняется что для измерений начиная с 2-ки extended query в 12-ке не работает. Хотя это было вылечено еще в 2009-й.
Обычный Query работает.

Пример - джобик отрабатывает в 2009-й
для SysDimension::Center в бд уходит запрос с фильтром такого вида
X++:
(DIMENSION2_=N'1929')
а в 2012-й аналогичный джоб приводит к
X++:
(DIMENSION=N'1929')
(имена полей в 12-ке у нас конечно другие - свои значения - здесь стоит Dimension чисто для иллюстрации)
Но если поставить обычный Query то в 12-ке тоже работает.

Может можно как-то это исправить ?
В синтаксисе extendedQuery что-то поменять.

X++:
static void Job503_TestDim(Args _args)
{
    Query       query;
    QueryBuildDataSource    qbds;
    SysQueryRun    queryRun;
    SalesTable    salesTable;
    void test(SysDimension _finSysDimension, SysDim _num)
    {
        ;
        
        setPrefix(strFmt("%1 - %2", _finSysDimension, _num));
        query = new query();
        query.literals(1);
        qbds = query.addDataSource(tableNum(SalesTable));
        qbds.addSelectionField(fieldNum(SalesTable, SalesId));
        
        // extended query для измерений начиная с 2 не работает в 12-ке
        qbds.addRange(fieldNum(SalesTable, RecId)).value(
            strFmt('((%1.%2=="%3"))',
            qbds.name(),
            fieldid2name(tablenum(SalesTable), fieldid2ext(fieldnum(SalesTable, Dimension), Dimensions::code2ArrayIdx(_finSysDimension))),
            SysQuery::value(_num)
            )
            );
        /*
        // а обычный query - работает
        qbds.addRange(fieldid2ext(fieldnum(SalesTable, Dimension), Dimensions::code2ArrayIdx(_finSysDimension))).value(
            SysQuery::value(_num)
            );
        */
        queryRun = new SysQueryRun(query);
        // info(queryRun.toString());
        info(queryRun.query().dataSourceNo(1).toString()); // поправил для 2009-й
        if (queryRun.next())
        {
            salesTable = queryRun.get(tableNum(SalesTable));
            info(strFmt("%1", salesTable.SalesId));
        }
        else
        {
            warning(strFmt("Нет записей"));
        }
    }
    ;
    
    setPrefix(strFmt("Test"));
    
    // test(SysDimension::Department, '001'); // для SysDimension::Department - все работает в Extended Query
    // test(SysDimension::Department, '002');
    test(SysDimension::Center,     '1929');  // а для SysDimension::Center - уже нет
    // test(SysDimension::Center,     '222');
}

Последний раз редактировалось Logger; 18.09.2025 в 14:13. Причина: Исправил строку info(queryRun.toString());
Теги
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, время: 18:41.