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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 09.11.2017, 06:57   #1  
trud is offline
trud
Участник
Лучший по профессии 2017
 
485 / 362 (13) ++++++
Регистрация: 07.06.2003
Как правильно ссылаться на атрибут(аналитику)
Навеяло предыдущей темой. А как правильно ссылаться на конкретный атрибут(допустим BusinessUnit).
я наверное сходу назову несколько виденных мной вариантов
  1. ссылка из параметров как новое поле в LedgerParameters (LedgerParameters. BusinessUnitRecId атрибут в виде RecId)
  2. табличка в виде тип аналитики(как енум) и код атрибута
  3. ссылка по имени DimensionAttribute::findByName("BusinessUnit"); и различные варианты – 3.1 имя вынесено в макрос или или тупо прописано. 3.2 вынесено в статический метод на DimensionAttribute возвращающий string
  4. поиск используя BackingEntityType == tableNum(DimAttributeOMBusinessUnit)
X++:
select firstonly dimensionAttribute             where dimensionAttribute.Type == DimensionAttributeType::ExistingList
            &&    dimensionAttribute.BackingEntityType == tableNum(DimAttributeOMBusinessUnit);
Каждый имеет следующие недостатки:
  • 1 -требует настройки, кроме того, каждая новая аналитика приводит к добавлению нового поля(но так сделан в стандарте Сайт)
  • 2 - не требует изменения схемы данных при добавлении новой аналитики, но все равно надо настраивать
  • 3.1-нет перекрестных ссылок.
  • 3.2-это мой фаворит в 2012, но в D365 непонятно где создавать этот метод чтобы другие о нем знали и использовали
  • Кроме того по всему п.3, запрос по имени не будет кешироваться аксаптой, т.е. в крупных загрузках такой способ может приводить к множеству мелких запросов к SQL
  • 4 - вообще неправильно, ибо можно создать несколько аналитик с одним BackingEntityType
Что вообще лучше использовать?
За это сообщение автора поблагодарили: S.Kuskov (2).
Старый 09.11.2017, 07:28   #2  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,311 / 1339 (51) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от trud Посмотреть сообщение
Что вообще лучше использовать?
(2) - табличка в виде тип аналитики(как енум) и код атрибута

X++:
DimensionAttribute::findByName("BusinessUnit")
"Все программисты - оптимисты". Атрибут же в два клика мышки переименовывается
X++:
BackingEntityType == tableNum(DimAttributeOMBusinessUnit)
Оно еще и не универсально, потому что работает только для entity-backed аналитик
__________________
-ТСЯ или -ТЬСЯ ?

Последний раз редактировалось Vadik; 09.11.2017 в 17:07.
За это сообщение автора поблагодарили: trud (2).
Старый 09.11.2017, 17:53   #3  
michel1971 is offline
michel1971
Участник
 
62 / 54 (2) ++++
Регистрация: 14.01.2011
Цитата:
Сообщение от trud Посмотреть сообщение
Что вообще лучше использовать?
енум в виде аналитик + \Classes\DimensionDefaultingController\constructInTabWithCombos
и не большая доработка \Classes\DimensionAttributeSetStorage
Старый 09.11.2017, 18:33   #4  
trud is offline
trud
Участник
Лучший по профессии 2017
 
485 / 362 (13) ++++++
Регистрация: 07.06.2003
Цитата:
Сообщение от Vadik Посмотреть сообщение
(2) - табличка в виде тип аналитики(как енум) и код атрибута
а создавать как записи. руками?
в принципе согласен это наверное лучший способ если это большой проект и вы в нем ведущий разработчик. в эту табличку можно запихать и все вспомогательные методы
если "выхода" на ведущего разработчика нет, то может не получится. т.е. типичное задание - "в заказ копировать аналитику BusinessUnit клиента", не все могут оценить предложение при этом ввести настроечные таблицы, которые кто-то должен заполнять

Цитата:
Сообщение от Vadik Посмотреть сообщение
"Все программисты - оптимисты". Атрибут же в два клика мышки переименовывается
ну если переименуют, то код перестанет работать, это так и надо. из таблички тоже запись можно удалить
Старый 09.11.2017, 23:17   #5  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
358 / 331 (12) ++++++
Регистрация: 08.03.2013
Адрес: ХЗ
Цитата:
Сообщение от trud Посмотреть сообщение
1. ссылка из параметров как новое поле в LedgerParameters (LedgerParameters. BusinessUnitRecId атрибут в виде RecId)
Мой фаворит. Таблички не делаю потому что обычно нужа одна аналитика или 2 и лень лепить таблицу. Хардкод имени в макросе или другим способобом плох как и любой хардкод. А про 4 вы сами написали.
За это сообщение автора поблагодарили: trud (2).
Старый 10.11.2017, 11:22   #6  
AlGol is offline
AlGol
Участник
 
253 / 74 (3) ++++
Регистрация: 24.12.2001
Адрес: Тверь.
Предпочитаю такой вариант:
Цитата:
Сообщение от trud Посмотреть сообщение
  1. ссылка из параметров как новое поле в LedgerParameters (LedgerParameters. BusinessUnitRecId атрибут в виде RecId)
В разных местах системы может понадобится использование такой же аналитики.
Если делать другими способами, впоследствии, изменение атрибута повлечет перенастройку или перекодирование в нескольких местах.
__________________
Ален ноби, ностра алис.
Что означает - если один человек построил, другой завсегда разобрать может.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Поговорим о SysGlobalObjectCacheItemWrapper? Кто использовал? Как правильно? Что можно сделать? mazzy DAX: Программирование 1 16.06.2017 13:07
Как правильно хранить статичный набор начальных данных в классах? mazzy DAX: Программирование 58 14.04.2011 12:10
Можно ли отключить и включить аналитику? miklenew DAX: Функционал 24 30.01.2008 14:00
aEremenko: Как правильно подобрать оборудование и понять, сколько оно будет стоить? Blog bot DAX Blogs 0 17.04.2007 12:00
Как правильно обращаться к элементам формы созданнй динамически из АОТ? 3oppo DAX: Программирование 2 29.11.2006 09:57
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 10:47.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.