Навеяло предыдущей темой. А как правильно ссылаться на конкретный атрибут(допустим BusinessUnit).
я наверное сходу назову несколько виденных мной вариантов
- ссылка из параметров как новое поле в LedgerParameters (LedgerParameters. BusinessUnitRecId атрибут в виде RecId)
- табличка в виде тип аналитики(как енум) и код атрибута
- ссылка по имени DimensionAttribute::findByName("BusinessUnit"); и различные варианты – 3.1 имя вынесено в макрос или или тупо прописано. 3.2 вынесено в статический метод на DimensionAttribute возвращающий string
- поиск используя 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
Что вообще лучше использовать?