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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.12.2006, 14:39   #1  
madm is offline
madm
Участник
 
43 / 12 (1) ++
Регистрация: 21.11.2006
Добрый день. Пытаюсь построить куб по вот этой статье:
http://axapta.mazzy.ru/lib/olap/

При попытке запустить обработку экземпляра куба вываливается ошибка:
"Ошибка времени выполнения. : Поле с идентификатором (FieldID) '0' в таблице 'CustInvoiceJour' не обнаружено.
Не получилось выполнить запрос Доходы по клиентам>tst"

ошибка происходит в методе createAmounts класса OLAPCreateAmount в строке:
Код:
		// find the date
		transDAte = factTableRecord.(cubeTable.TransDateFieldId);
Подскажите пожалуйста в чем дело и как же мне построить куб...


З.Ы. Axapta 3.0. SP3, SQL Server 2000 + Analysis Service SP4, все на одном компе, двухуровневая конфигурация.
Старый 14.12.2006, 14:59   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от madm Посмотреть сообщение
При попытке запустить обработку экземпляра куба вываливается ошибка:
"Ошибка времени выполнения. : Поле с идентификатором (FieldID) '0' в таблице 'CustInvoiceJour' не обнаружено.
1. А Создание экземляра прошло успешно?
2. Как создан куб? Вы его импортировали из db-каталога или создали руками?

Если из db-каталога, то в нем использовались поля, которые позже были удалены.
Если отключен конфигурационный ключ SysDeletedObject30, то удаленные поля действительно отсутствуют на SQL-сервере.

В общем, проверьте определение куба.
__________________
полезное на axForum, github, vk, coub.
Старый 14.12.2006, 15:43   #4  
madm is offline
madm
Участник
 
43 / 12 (1) ++
Регистрация: 21.11.2006
Cпасибо помогло! Надо было мне внимательнее читать статью

Mazzy - пользуясь случаем Вам спасибо за статьи, очень помогают в изучении Аксапты!
Старый 14.12.2006, 15:47   #5  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от madm Посмотреть сообщение
пользуясь случаем Вам спасибо за статьи, очень помогают в изучении Аксапты!
Переадресую это спасибо автору статьи Vadik.
Пользуясь случаем также хочу сказать: Спасибо, Вадим.
__________________
полезное на axForum, github, vk, coub.
Старый 14.12.2006, 17:04   #6  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
а я что.. пользуйтесь на здоровье
__________________
-ТСЯ или -ТЬСЯ ?
Старый 14.12.2006, 18:05   #7  
madm is offline
madm
Участник
 
43 / 12 (1) ++
Регистрация: 21.11.2006
Цитата:
Сообщение от Vadik Посмотреть сообщение
а я что.. пользуйтесь на здоровье
Спасибо!
Старый 15.12.2006, 16:49   #8  
madm is offline
madm
Участник
 
43 / 12 (1) ++
Регистрация: 21.11.2006
А может еще подскажете...
Создал куб. Работает Но захотелось мне добавить в него еще мер.
У куба в поле запрос стоит созданный мной query у которого есть датасорс CustInvoiceJour у которого в свою очередь подчиненный датасорс CustInvoiceTrans. Relation по InvoiceId. Пытаюсь добавить новую меру, но в выпадающем списке полей из CustInvoiceTrans нет... Только из CustInvoiceJour. Это нормально или я что-то не то сделал? Вообще реально мне добавить меры из подчиненных таблиц?


И еще вопрос: можно ли добавлять в качестве мер методы, а не поля как DataMethod у Grid?
Старый 15.12.2006, 17:41   #9  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от madm Посмотреть сообщение
Вообще реально мне добавить меры из подчиненных таблиц?
нет, таблица фактов одна

Цитата:
можно ли добавлять в качестве мер методы, а не поля как DataMethod у Grid?
можно - см.
\Classes\OLAPCreateAmount\isSpecialCalcField()
\Classes\OLAPCreateAmount\fieldMethodName()
__________________
-ТСЯ или -ТЬСЯ ?
Старый 21.12.2006, 11:09   #10  
madm is offline
madm
Участник
 
43 / 12 (1) ++
Регистрация: 21.11.2006
Цитата:
можно - см.
\Classes\OLAPCreateAmount\isSpecialCalcField()
\Classes\OLAPCreateAmount\fieldMethodName()
А не могли бы Вы пояснить поподробнее? Сам что-то не могу разобраться... Я всего месяц как Аксапту увидел
Старый 21.01.2007, 13:23   #11  
DmitrySt_imported is offline
DmitrySt_imported
Участник
 
4 / 10 (1) +
Регистрация: 25.11.2004
Вставлю свои 5 копеек насчет того, почему в качестве мер нельзя использовать поля из связанных таблиц: мне кажется, ответ заключается в том, как Аксапта обрабатывает конверсию из валюты в базовую валюту для отображения в кубе.

Аксапта пересчитывает все значения AmountCur в AmountMst в том самом классе OLAPCreateAmount, и сохраняет их в огромной таблице OLAPAmount - по одной записи в OLAPAmount для каждой записи из таблицы фактов, и затем подсовывает ОЛАПу не значения из таблицы фактов, а что-то вроде MyFact INNER JOIN OLAPAmount ON MyFact.RecId = OLAPAmount.RelRecId (достаточно посмотреть на SQL сервере любую из автоматически созданных таким образом View типа OLAP<company><cubeId>_)

Таким образом, видимо присутствует неявное ограничение на то, что Recid может быть только из верхней таблицы...

Кстати, если создать Query для куба не на основе таблицы, а на основе View, и если в этом View будут использованы агрегированные поля и, т.о., View будет построено с использованием GROUP BY, то поле RecId в нем будет создано кернелом как RECID AS (1010), т.е. конверсия Amounts в кубе построенном таким образом работать не будет (из-за того, что выборка фактов для OLAP будет реализована как MyFact INNER JOIN OLAPAmount ON MyFact.RecId (т.е. 1010 для любой записи из View) = OLAPAmount.RelRecId).

Это в некоторой мере лечится только доработкой классов OLAPCreaetAmount & OLAPCreateSchema так, чтобы в них, при распознавании таблицы фактов как View, они бы брали не поле Recid, а некое иное поле (у меня -recId_View), которое я должен буду создавать в моем View уникальным (например, как Max(RecId) из записей подвергнутых группировке).
 

Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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