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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.12.2020, 22:27   #13  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,719 / 1204 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Глубоко не копал, но, "на вскидку" сразу же наткнулся на ограничение количества отображаемых Range на форме диалога в классе \Classes\RunBaseDialogModify

X++:
// \Classes\RunBaseDialogModify\addQueryDatasource - здесь инициализация при открытии диалога

    // Add ranges defined in datasource
    while (curRangeFields <= #MAXRANGES && currentRange <= rangeCount)

(...)

// Add the specific element of the array field
// that has been specified by the query.

// Тут все правильно. Если поле то же самое, то счетчик curRangeFields не увеличивается

curRangeFields += this.addField(
		sysDictField, 
		fieldNameSet, 
		sysDictField.label(), 
		queryBuildRange.value());

(...)
Как следствие, при первом открытии формы - все значения на месте. Нигде ничего не потеряли.

Теперь жмем кнопку расширенного фильтра и после сохранения попадаем вот сюда

X++:
// \Classes\RunBaseDialogModify\updateQuery - это обновление после кнопки расширенного фильтра

        // Loop through the ranges for the data source.
        while (curRangeFields <= #MAXRANGES && currentRange <= rangeCount)

(...)

fieldNameEnabledSet  = this.addRangeAndFilterToDialog(
		sysDictField, 
		queryBuildRange.value(),
		fieldNameEnabledSet,
		dialogGroupTable,
		curRangeFields);

// И вот здесь безусловное увеличение счетчика
curRangeFields++;

(...)
И вот насколько я вижу, здесь счетчик curRangeFields увеличивается вне зависимости от того, есть уже это поле на форме или нет.

Т.е. отображать-то отображает, но не более указанного количества. По умолчанию, не более 8 Range. Причем в данном синтаксисе каждое значение пойдет как отдельный Range. Вот их и обрезали. Просто достигли предела цикла

Видимо, тут надо добавить проверку на количество элементов в возвращенном fieldNameEnabledSet. Т.е. цикл ограничить не переменной curRangeFields, а как-то так

X++:
        // Loop through the ranges for the data source.
        while (fieldNameEnabledSet.elements() <= #MAXRANGES && currentRange <= rangeCount)
Но это "на вскидку". Могу и ошибаться. Тут надо более внимательно анализировать метод \Classes\RunBaseDialogModify\updateQuery()
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
emeadaxsupport: AX Performance - Analyzing key SQL Server configuration and database settings Blog bot DAX Blogs 0 28.09.2015 14:11
DAX: Microsoft Dynamics AX 2012 R3 is now available! Blog bot DAX Blogs 1 02.05.2014 23:00
DAX: How to gain additional value from the Microsoft application platform with Microsoft Dynamics AX 2012 R2 Blog bot DAX Blogs 3 21.06.2013 15:16
ax-erp: Get underlying SQL query using getSQLStatement [Dynamics AX 2012] Blog bot DAX Blogs 0 19.07.2012 18:11
Dynamics AX Sustained Engineering: Servicing of Dynamics AX 2012 and Dynamics AX 2012 Feature Pack Blog bot DAX Blogs 0 08.05.2012 23:12
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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