|
17.07.2014, 14:02 | #1 |
Участник
|
Финансовые аналитики
Добрый день.
В АХ 2009 хочу наложить фильтр по финансовой аналитики например "Подразделение", но при построении расширенного запроса перечень аналитик пуст (сами аналитики заполнены). При детальном рассмотрении выяснил что на лукап накладывается вот такой вот фильтр: В чем может быть причина такого поведения системы? |
|
17.07.2014, 14:16 | #2 |
Участник
|
Возможно ли что по этому полю уже программно задан фильтр?
Стандартные советы: сделать сброс данных, почистить кеш |
|
17.07.2014, 14:20 | #3 |
Участник
|
Вообще-то, судя по картинке, либо поврежден собственно EDT Dimensions (не корректные значения в Relations), либо поврежден Base Enum SysDimensions.
__ILLEGAL_VALUE__ - это указание значения, которого нет в перечислении. А вот откуда взято значение - из кривого Relations в EDT или из кривого Base Enum и надо выяснить PS: А у Вас случайно на таблице CustTable явно не прописан какой-либо Relation к полю Dimension?
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... Последний раз редактировалось Владимир Максимов; 17.07.2014 в 14:22. |
|
18.07.2014, 13:38 | #4 |
Участник
|
Цитата:
Сообщение от Владимир Максимов
Вообще-то, судя по картинке, либо поврежден собственно EDT Dimensions (не корректные значения в Relations), либо поврежден Base Enum SysDimensions.
__ILLEGAL_VALUE__ - это указание значения, которого нет в перечислении. А вот откуда взято значение - из кривого Relations в EDT или из кривого Base Enum и надо выяснить PS: А у Вас случайно на таблице CustTable явно не прописан какой-либо Relation к полю Dimension? Все делали как написано здесь: http://msdn.microsoft.com/en-us/libr...(v=ax.50).aspx и http://sumitsaxfactor.wordpress.com/...ial-dimension/ Ничего лишнего от себя не добавили |
|
18.07.2014, 15:28 | #5 |
Участник
|
Цитата:
Сообщение от Sergikrus
Добавили новую аналитику.
Все делали как написано здесь: http://msdn.microsoft.com/en-us/libr...(v=ax.50).aspx и http://sumitsaxfactor.wordpress.com/...ial-dimension/ Ничего лишнего от себя не добавили 1. Проверьте таблицу клиентов (CustTable) на наличие полей с Label = "Подразделение" (возможно, Вы просто не по тому полю фильтр настраиваете) 2. Проверьте в таблице клиентов CustTable факт наличия узлов Relations в который явно указаны ссылки на поле CustTable.Dimension - быть не должно 3. Посмотрите, на основе какого EDT создано поле CustTable.Dimension. 4. Если поле CustTable.Dimension создано на основе Extended Data Types с именем Dimensions, то открываете этот самый Dimensions и смотрите, что у него указано в узлах Relations. Особое внимание обращаете на числовые константы в этих узлах 5. Открываете Base Enum с именем SysDimensions и проверяете какое числовое значение присвоено всем его элементам. Соответствуют ли эти числа тем значениям, которые указаны в узлах Relations для Extended Data Types с именем Dimensions Наиболее вероятная причина ошибки - не соответствие числовых значений в Base Enum и констант, указанных в Relations на Extended Data Types
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
|
За это сообщение автора поблагодарили: Logger (3). |
18.07.2014, 15:53 | #6 |
Участник
|
Цитата:
Цитата:
Цитата:
Цитата:
Проверили, все числовые константы соответствуют именам. |
|
17.07.2014, 18:55 | #7 |
Участник
|
Возьмите запись в справочнике Клиенты.
Встаньте на поле аналитики и правой кнопкой отберите все. Допустим по выбранному значению. Дальше вызовите форму расширенной фильтрации и посмотрите каким образом система связывает таблицы и накладывает фильтр. Дальше по аналогии настройте свой фильтр. То, что вы выбираете поле Подразделение - еще не значит, что вы фильтруетесь по аналитике. |
|
18.07.2014, 15:56 | #8 |
Участник
|
Проблема воспроизводится для какого-то одного пользователя или для всех? Кеш чистили? В смысле, как SysLastValue, так и файлы AUC.
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
18.07.2014, 16:23 | #9 |
Участник
|
Проблема воспроизводится для всех пользователей, и на всех сущностях где используется финансовая аналитика. Кеш чистили (применяли оба варианта).
|
|
18.07.2014, 16:39 | #10 |
Участник
|
А на самой форме "Сведения о клиенте" на закладке "Аналитика" в поле "Подразделение" при раскрытии выпадающего списка все в порядке?
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
18.07.2014, 16:40 | #11 |
Участник
|
|
|
18.07.2014, 16:33 | #12 |
Участник
|
Покажите скриншоты с развернутым узлом
\Data Dictionary\Extended Data Types\Dimension\Array Elements\Подразделение\Relations и с открытым окном свойств на элементе \Data Dictionary\Base Enums\SysDimension\Department |
|
18.07.2014, 16:39 | #13 |
Участник
|
|
|
18.07.2014, 17:13 | #14 |
Участник
|
А лукап стандартный? Что записано в свойстве FormRef таблицы Dimensions и на какую форму ссылается \Menu Items\Display\Dimensions?
Не уверен что поможет или хоть как-то повлияет, но попробуйте ещё перекрестные ссылки обновить X++: xRefTableRelation::updateTableId(TableNum(Dimension)); Последний раз редактировалось S.Kuskov; 18.07.2014 в 17:18. |
|
19.07.2014, 13:34 | #15 |
Участник
|
Если лукап не переопределяли, то смотрите в сторону формы DimensionsLookup
Есть ли на ней модификации? В методе run(), что прилетает в переменную sysDimension? И что возвращает queryValue(sysDimension) в методе ExecuteQuery() датасорса DimensionsAll? Можно в инфологе так же вывести возвращаемое значение queryValue(sysDimension:: Department) А так же - какое значение имеет свойство Label элемента Department енума SysDimension (выше просили показать скриншот на этом элементе)
__________________
Axapta v.3.0 sp5 kr2 |
|
21.07.2014, 15:24 | #16 |
Участник
|
Цитата:
Цитата:
Цитата:
Пока не пойму почему. |
|
22.07.2014, 11:10 | #17 |
Участник
|
Цитата:
Теперь осталось разобраться откуда 255 прилетело |
|
22.07.2014, 11:26 | #18 |
Участник
|
255 - это __ILLEGAL_VALUE__
Это уже следствие Надо разбираться, почему queryValue(sysDimension:: Department) возвращает пусто (а пусто ли?). Смотрите под отладчиком, что в этом методе происходит. Проверьте метку или значение, которое прописано в Label SysDimension:: Department. Можно, на всякий случай, пересохранить это значение
__________________
Axapta v.3.0 sp5 kr2 |
|
22.07.2014, 11:59 | #19 |
Участник
|
Цитата:
Сообщение от AndyD
255 - это __ILLEGAL_VALUE__
Это уже следствие Надо разбираться, почему queryValue(sysDimension:: Department) возвращает пусто (а пусто ли?). Смотрите под отладчиком, что в этом методе происходит. Проверьте метку или значение, которое прописано в Label SysDimension:: Department. Можно, на всякий случай, пересохранить это значение Метод выглядит executeQuery вот так: public void executeQuery() { ; queryDimensionTypeAllRange.value(queryValue(sysDimension)); super(); } инициализация sysDimension происходит в run и в getLookupType при условии что, element.args().dataset() будет равен Dimensions, LedgerControlDimension, TmpSysQuery X++: public void run() { boolean filterLookup; ; callerControl = SysTableLookup::getCallerStringControl(element.args()); callerFieldId = callerControl.dataField(); sysDimension = Dimensions::arrayIdx2Code(fieldExt2Idx(callerFieldId)); callerFieldId = fieldExt2Id(callerFieldId); if (!callerFieldId) { sysDimension = Dimensions::arrayIdx2Code(callerControl.arrayIndex()); } ..... В нашем случае мы запускаем расширенный фильтр на любой форме, где есть фин. аналитика по клавише CTRL + F3: И ни одно из условий не выполняется. видимо значение по умолчания для enum, если он не инициализирован 255, я так это понимаю. Но как то чудно это, функциональность эта на gls слое, неужели у всех так работает? Значение присваивается только в run(). info(enum2str(sysDimension)); показывает "Пусто" Последний раз редактировалось Sergikrus; 22.07.2014 в 12:10. Причина: проверил |
|
22.07.2014, 14:00 | #20 |
Участник
|
Цитата:
Сообщение от Sergikrus
Немного не так.
Метод выглядит executeQuery вот так: public void executeQuery() { ; queryDimensionTypeAllRange.value(queryValue(sysDimension)); super(); } инициализация sysDimension происходит в run и в getLookupType при условии что, element.args().dataset() будет равен Dimensions, LedgerControlDimension, TmpSysQuery X++: public void run() { boolean filterLookup; ; callerControl = SysTableLookup::getCallerStringControl(element.args()); callerFieldId = callerControl.dataField(); sysDimension = Dimensions::arrayIdx2Code(fieldExt2Idx(callerFieldId)); callerFieldId = fieldExt2Id(callerFieldId); if (!callerFieldId) { sysDimension = Dimensions::arrayIdx2Code(callerControl.arrayIndex()); } ..... В нашем случае мы запускаем расширенный фильтр на любой форме, где есть фин. аналитика по клавише CTRL + F3: Вложение 8930 И ни одно из условий не выполняется. видимо значение по умолчания для enum, если он не инициализирован 255, я так это понимаю. Но как то чудно это, функциональность эта на gls слое, неужели у всех так работает? Значение присваивается только в run(). info(enum2str(sysDimension)); показывает "Пусто" У вас могут быть две проблемы. Либо неправильно определяется индекс массива и передается в Dimensions::arrayIdx2Code() - смотрите, какой индекс приходит в этот метод и что он возвращает (т.е., какое значение присваивается sysDimension на форме) Либо что-то с меткой для значения Department - запустите info(queryValue(SysDimension:: Department)); и посмотрите, что получается
__________________
Axapta v.3.0 sp5 kr2 |
|
Теги |
dimension, аналитика, фильтр |
|
Похожие темы | ||||
Тема | Ответов | |||
AX2012 - Финансовые аналитики в строках общего журнала ГК | 4 | |||
Финансовые аналитики | 2 | |||
Платежи и финансовые аналитики | 8 | |||
Финансовые аналитики | 18 | |||
финансовые аналитики в диалог | 6 |
|