|
![]() |
#1 |
Участник
|
Цитата:
Тут все хитрее. Дело в том что движок Аксапты может определять связь между таблицами как через связи определенные на EDT, так и через связи определенные на уровне таблиц, причем у последних приоритет выше. У меня был реальный пример. Есть таблица SalesTable - у неё не определена связь на саму себя через salesId. Если на форме SalesTable нажать Запросы - Итоги - то откроется форма подсчета итогов и сработает Dynalink - будет связь по SalesId. Спрашивается, откуда она взялась ? Судя по всему из расширенного типа данных которые прописан в SalesTable.salesId Далее, делаем какую-нить кастомизацию - определяем на SalesTable составной relation по 3 новым полям. SalesTable.CUSTOM_DataAreaId == SalesTable.DataAreaID SalesTable.CUSTOM_SalesId == SalesTable.SalesId SalesTable.CUSTOM_SourceType == 0 // поле с типом Енум - неважно какое. (Это мы цепочки писали - задавали таким образом свои связи между заказами в разных компаниях) И после этого ломается форма Запросы - Итоги !!! Везде. Даже на тех заказах, на которых поля SalesTable.CUSTOM_DataAreaId SalesTable.CUSTOM_SalesId SalesTable.CUSTOM_SourceType пустые ! Оказывается система подхватывал Dynalink уже по новой связке ! Хотя по идее не должна была. Так как значения в полях не подходили. Она взяла кусок Relation-а и стала по нему делать Dynalink ! Т.е. получается что ядро Аксапты видит, что в relation-х таблицы есть связка по SalesId - после этого забивает на связки в расширенных типах которые прописаны в полях. Выкусывает из составного relation по 3-м полям связку по одному полю SalesId.CUSTOM_SalesId == SalesTable.SalesId и использует его в качестве Dynalink при вызове Запросы - Итоги Пипец. Но стоило мне определить на таблице отдельный Relation с тавтологической связкой SalesTable.SalesId == SalesTable.SalesId как все чудесным образом вылечилось. |
|
![]() |
#2 |
Banned
|
Вы ошибаетесь. Приоритет связей на уровне расширенного типа на самом деле ВЫШЕ, чем у таблицы, и это полное гадство. Именно поэтому в системе полно расширенных типов вроде XXXBaseXXXid, не имеющих связей. Другими словами, если на типе есть связь, то она имеет наивысший приоритет. Если связи на типе нет, то берется связь из таблицы.
|
|
![]() |
#3 |
Участник
|
Цитата:
Сообщение от EVGL
![]() Вы ошибаетесь. Приоритет связей на уровне расширенного типа на самом деле ВЫШЕ, чем у таблицы, и это полное гадство. Именно поэтому в системе полно расширенных типов вроде XXXBaseXXXid, не имеющих связей. Другими словами, если на типе есть связь, то она имеет наивысший приоритет. Если связи на типе нет, то берется связь из таблицы.
Создаем таблицу с 1 полем, тип поля - ItemId. Создаем на таблице Relation по этому полю на таблицу SalesLine (по ItemId) Открываем браузер таблиц, создаем запись и открываем лукап - видим записи из SalesLine. Соответственно, relation по таблице имеет приоритет выше, чем relation по EDT Или я не понял смысла дискуссии? |
|
|
За это сообщение автора поблагодарили: EVGL (2). |
![]() |
#4 |
Участник
|
Чтобы не создавать новой ветки
Цитата:
Сообщение от kashperuk
![]() На самом деле - странное утверждение, учитывая, что это довольно просто проверить.
Создаем таблицу с 1 полем, тип поля - ItemId. Создаем на таблице Relation по этому полю на таблицу SalesLine (по ItemId) Открываем браузер таблиц, создаем запись и открываем лукап - видим записи из SalesLine. Соответственно, relation по таблице имеет приоритет выше, чем relation по EDT Или я не понял смысла дискуссии? Создаем таблицу с 2 мя полями 1 ItemID тип поля - ItemId. 2 SalesId тип поля - SalesIdBase Создаём Relation по этим двум полям на таблицу SalesLine MyTable.ItemId == SalesLine.ItemId MyTable.SalesId == SalesLine.SalesId То при этом переход к основной таблице кардинально изменится - будет происходить на основании EDT к InventTable , а не к SalesLine (причём пара значений ItemId,SalesId присутствует в SalesLine) Вопрос - почему так происходит, если судя по вышеизложенному переход должен осуществляться на основании Relation т е к SalesLine Спасибо ! |
|
|
За это сообщение автора поблагодарили: kashperuk (5). |
Теги |
relation, axapta |
|
![]() |
||||
Тема | Ответов | |||
Two Tables with Two Relations | 0 | |||
Удаление Relations | 2 | |||
Странный код в базовом функционале | 6 | |||
Как не использовать relations на таблицах | 13 | |||
Вопрос о корректности Relations | 9 |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|