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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.10.2015, 11:10   #1  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,720 / 1207 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Не делайте Relation типа Foreign Key. Сделайте обычный Relation типа Normal. В чем проблема-то? Их отличие только в значении определенного флага на этом самом Relation. С точки зрения собственно работы никаких отличий нет. Это исключительно "дизайнерская фича" для автоматического формирования ряда настроек при создании этого самого Relation

Если Вас смущает сообщение Best Practices, то для отдельно взятой таблицы проверку Relation на Foreign Key можно отключить через модификацию флага в заголовке (правда, только через XPO)

Подробно описано здесь https://erpcoder.wordpress.com/2014/...on-this-table/

А если вкратце, то отключить проверку Relation на Foreign Key для конкретной таблицы можно так:
  1. Выгрузить таблицу в XPO
  2. сразу за заголовком таблицы будет идти строка: EnforceFKRelation 1
  3. Вместо флага 1 поставить флаг 0, что означает "не проверять"
  4. Импортировать XPO
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
За это сообщение автора поблагодарили: Logger (1).
Старый 16.10.2015, 14:02   #2  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,343 / 3563 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Их отличие только в значении определенного флага на этом самом Relation.
Ну ... я бы несколько поостерегся их не использовать. Сильно подозреваю, что на этот флаг в будущем может быть повешена логика. Уж больно она напрашивается.
Во-первых, Relation типа ForeignKey дает возможность установить на Relation-е свойство CreateNavigatePropertyMethods и впоследствии пользоваться не только теми методами, которые находятся в узле Methods, но и динамически создаваемыми методами перехода от одной таблицы к другой.
Во-вторых, в форме расширенного фильтра есть возможность выбирать из списка полей не только поля выбранной таблицы и ее родителей, а еще и связанных по ForeignKey таблиц (см таблицу VendTable и релейшн MainContactWorker на таблицу HcmWorker; в форме - это поле Ответственный). И этот выбор зависит от значения метода sysDictField.isSurrogateForeignKey().

Сейчас, если создать Relation типа Обычный и добавить одну связку - то независимо от того - взведен флаг с ForeignKey у релейшна или нет, и метод CreateNavigatePropertyMethods на релейшне доступен и метод sysDictField.isSurrogateForeignKey() возвращает значение True. Все эти прелести пропадают при добавлениии в релейшн второго поля-связки.

Соответственно, с учетом того, что система хранит информацию о том, как был создан Relation - через ForeignKey или через Nornal - никто не застрахован от того, что метод sysDictField.isSurrogateForeignKey() будет смотреть на этот флаг (а это ядро между тем), а также пропадет свойство CreateNavigatePropertyMethods у релейшна, у которого "нет полномочий его менять.

Но пока оно работает... хорошо
__________________
Возможно сделать все. Вопрос времени
За это сообщение автора поблагодарили: EVGL (1), Владимир Максимов (1), Cardagant (1).
Старый 16.10.2015, 19:33   #3  
Vasiliy Petrovich is offline
Vasiliy Petrovich
Участник
 
83 / 17 (1) ++
Регистрация: 26.06.2015
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Не делайте Relation типа Foreign Key. Сделайте обычный Relation типа Normal. В чем проблема-то?
это я первым делом попробовал конечно
но поле перестает быть золушкой и превращается в тыкву.
Теги
ax2012r3, relation

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Сделать левый join или сделать динамическую группировку в GRID kadet DAX: Программирование 10 12.03.2013 12:07
Как сделать фильтр по группе пользователей? Zabr DAX: Программирование 12 08.04.2009 11:40
Заумный отчет по ОС, как сделать? Бриллиантик DAX: Программирование 13 09.07.2008 16:36
Как лучше сделать? Smith DAX: Программирование 7 12.10.2004 13:57
дизайн отчета (как сделать его с разделителями между столбцами?) puz DAX: Программирование 7 02.09.2003 08:50
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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