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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.12.2012, 23:30   #1  
lvan is offline
lvan
Участник
Аватар для lvan
Лучший по профессии 2014
 
858 / 82 (4) ++++
Регистрация: 15.04.2011
Записей в блоге: 1
Surrogate foreign keys в InventDim
Что думаете, есть в этом смысл или нет?
Новую аналитику думаю добавить так.
Старый 06.12.2012, 08:55   #2  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,438 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Технически реализуемо. Но только ради чего? Расскажите.
У вас новая аналитика является составной? Тогда такой шаг может быть оправдан. Только нужно понимать что это будет пусть сложная но единая аналитика. Т.е. в настройках групп аналитик нельзя будет назначить разные свойства на отдельные части этой составной аналитики.

Какая версия системы? В AX2009 я бы всё таки использовал "псевдоестественный" ключ - автоматически генерируемый номерной серией. В AX2012 уже можно, пользуясь встроенной поддержкой разименовывания, делать связь по RecId.
Старый 06.12.2012, 12:29   #3  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,691 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Если под термином "суррогатный ключ" подразумевается некий внтуренний идентификатор записи, который не видит пользователь (например, RefRecId), то до версии Ax2012 - это нарушение BestPrictices

Если же этот самый "суррогатный ключ" будет видеть пользователь, то это ничем не отличается от того, что есть сейчас. Ведь и так, например, "Склад" в складской аналитике - это foreign Keys на запись справочника складов.
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
Старый 06.12.2012, 12:37   #4  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,438 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Если же этот самый "суррогатный ключ" будет видеть пользователь, то это ничем не отличается от того, что есть сейчас. Ведь и так, например, "Склад" в складской аналитике - это foreign Keys на запись справочника складов.
"Склад" в складской аналитике - это foreign Keys на запись справочника складов - Согласен, но это никак не делает его суррогатным. Идентификатор склада вполне естественный код.
Старый 06.12.2012, 13:01   #5  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,691 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Термины "суррогатный" и "естесственный" ключи - не есть термины теории реляционных баз данных. Это значит, что каждый вкладывает в это понятие некий свой собственный, "сокровенный" смысл. Лично я для себя даю такое определение

Суррогатный ключ - это идентификатор записи, сформированный внутри приложения и никак, никоим образом, не (!) зависящий от "внешнего мира".

Естесственный ключ - это идентификатор записи, пришедший из вне приложения и зависящий (!) от "внешнего мира". Т.е. если значение ключа поменялось во вне приложения, то его надо будет изменить и внутри приложения.

Т.е. для меня "суррогатный" отличается от "естесственного" только фактом зависимости его значения от "внешнего мира". И на этом все. Никакие другие характеристики не имеют никакого отношения к его "суррогатности" или "естественности". В том числе и способ формирования.

Какая разница как именно он был сформирован? Из номерной серии или введен руками. Например, ИНН (номер паспорта, ГТД, код города) - это номерная серия или руками вводился? А если по умолчанию код записи справочника формируется из номерной серрии, но Вы можете его изменить в момент создания записи - код перестает быть суррогатным? Т.е. часть записей таблицы имеет суррогатный ключ, а часть естесственный?
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
Старый 06.12.2012, 13:01   #6  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Я бы не стал этого делать.
Я не пробовал, но скорее всего придется дописывать кастомный код везде, для обработки суррогатных ключей, плюс нет гарантии что оно отобразится нормально (reference group control) на формах. Должно, но, опять же, я не пробовал.

Тем более что ничего особо "плохого" в текущем подходе с использованием строковых значений нет.
Старый 06.12.2012, 13:09   #7  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
В АХ 2012 термин суррогатный ключ - это ключ основанный на RecId
Естественный ключ - строковой ключ, который может быть прочитан (и понят) человеком.

Номерные серии я бы отнес к суррогатным, но я не помню, чтобы это кто-либо делал в процессе разработки АХ 2012
Старый 06.12.2012, 13:59   #8  
lvan is offline
lvan
Участник
Аватар для lvan
Лучший по профессии 2014
 
858 / 82 (4) ++++
Регистрация: 15.04.2011
Записей в блоге: 1
AX2012 конечно, Surrogate key - это RecId. Для новых таблиц в AX2012 он по умолчанию является Primary key. Но в AX2012 сделали так, что его значение может разыменовываться в Natural Key и вместо int64 отображается именно значение Natural Key
Старый 06.12.2012, 14:01   #9  
lvan is offline
lvan
Участник
Аватар для lvan
Лучший по профессии 2014
 
858 / 82 (4) ++++
Регистрация: 15.04.2011
Записей в блоге: 1
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Я бы не стал этого делать.
Я не пробовал, но скорее всего придется дописывать кастомный код везде, для обработки суррогатных ключей, плюс нет гарантии что оно отобразится нормально (reference group control) на формах. Должно, но, опять же, я не пробовал.

Тем более что ничего особо "плохого" в текущем подходе с использованием строковых значений нет.
Ну типа бест практис же, и таблица довольно большая, так что будет экономия на месте и скорости.
Дописывать наверное нужно будет код, который к контролам аналитики напрямую обращался, чтобы была поддержка ReferenceGroup.
Больше на вскидку ничего не могу припомнить, может я что-то упускаю, что реально бы затруднило?

Последний раз редактировалось lvan; 06.12.2012 в 14:11.
Старый 06.12.2012, 15:07   #10  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,691 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Я не в курсе, в Ax2012 остался функционал по динамической настройке того, какие именно поля из складской аналитики отображать в строках документов и отчетах? Имею в виду, например, в строках заказа в Ax2009 кнопка "Запасы" \ Отображать аналитики. Классы-наследники от InventDimCtrl. Или именно это и реализовано через ReferenceGroup?

Ссылка через суррогатный ключ ведь будет отображать собственно значение суррогатного ключа. Или там более хитрый функционал?
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
Старый 06.12.2012, 15:09   #11  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
например, в строках заказа в Ax2009 кнопка "Запасы" \ Отображать аналитики.
это в AX2012 осталось.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 06.12.2012, 15:15   #12  
lvan is offline
lvan
Участник
Аватар для lvan
Лучший по профессии 2014
 
858 / 82 (4) ++++
Регистрация: 15.04.2011
Записей в блоге: 1
Владимир Максимов, вы видимо не в курсе изменений в AX2012
Рекомендую ознакомиться, это обсуждалось полтора года назад axdaily: Surrogate keys in AX 2012
Старый 06.12.2012, 15:30   #13  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,691 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от lvan Посмотреть сообщение
Владимир Максимов, вы видимо не в курсе изменений в AX2012
Рекомендую ознакомиться, это обсуждалось полтора года назад axdaily: Surrogate keys in AX 2012
Так я и спрашиваю ЧТО будет отображаться в формах и отчетах если в складской аналитике заменить ссылки на RecId? Каким образом будет работать весь этот функционал динамической подстановки/удаления полей складской аналитики на формы и отчеты? Придется переписать его целиком чтобы подставлять поля из других таблиц (дисплейные методы)? А фильтрация по полям складской аналитики останется? Или в каждой форме кроме собственно InvendDim в качестве DataSource придется подтягивать еще справочники аналитик?

==================

Вот теперь дошло. Т.е. кроме замены ссылок на RecId придется перелопатить кучу форм и отчетов и заменить поля типа String на поля типа ReferenceGroup. Мда... Работенка еще та предстоит...

Только вот по прежнему не понятно, фильтрация по полям типа ReferenceGroup возможна или они как дисплейные методы - только отображают, но не дают фильтровать?
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...

Последний раз редактировалось Владимир Максимов; 06.12.2012 в 16:00.
Старый 07.12.2012, 03:15   #14  
lvan is offline
lvan
Участник
Аватар для lvan
Лучший по профессии 2014
 
858 / 82 (4) ++++
Регистрация: 15.04.2011
Записей в блоге: 1
В том то и дело, что ReferenceGroup автоматически создается (в случае автоматической группы полей - а аналитика в подавляющем большинстве случаев именно через группу полей отображается)
Т.е. вручную вроде ничего не надо менять. По крайней мере с формами так, про отчеты не знаю

Последний раз редактировалось lvan; 07.12.2012 в 03:17.
Старый 07.12.2012, 05:55   #15  
trud is offline
trud
Участник
Лучший по профессии 2017
 
1,039 / 1630 (57) ++++++++
Регистрация: 07.06.2003
Записей в блоге: 1
Цитата:
Сообщение от lvan Посмотреть сообщение
Т.е. вручную вроде ничего не надо менять. По крайней мере с формами так, про отчеты не знаю
Готовьтесь что отчеты придется все переписывать(добавлять туда новую аналитику). никаких групп полей как в 2009 теперь нет. по крайней мере так было в 2012CU2. не знаю изменили ли они движок вывода аналитик в R2
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Microsoft Dynamics AX 2012 White Paper: An Introduction to Client Surrogate Keys in Microsoft Dynamics AX 2012 Vadik DAX: База знаний и проекты 0 17.10.2012 15:16
emeadaxsupport: How to perform foreign currency revaluation in Consolidation company to satisfy reporting requirements Blog bot DAX Blogs 0 16.10.2012 22:11
emeadaxsupport: Surrogate foreign keys in AIF Blog bot DAX Blogs 0 10.07.2012 00:11
axdaily: Surrogate keys in AX 2012 Blog bot DAX Blogs 57 05.05.2011 14:57
Вопросы по ReleaseUpdate DAX 2009 ansoft DAX: Программирование 7 31.08.2010 12:21
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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