Показать сообщение отдельно
Старый 05.12.2019, 19:57   #180  
Libovs is offline
Libovs
Участник
 
224 / 53 (2) ++++
Регистрация: 26.03.2018
Цитата:
Сообщение от EVGL Посмотреть сообщение
Многое
Одинарные кавычки появляются тогда, когда есть специальные символы или точки. К примеру, "AssetBook.AssetTable_AssertId" - это не таблица, а relation.
Действительно, в явном виде надо объявлять только "корневые" таблицы, если с них начинается поиск. Если же до другой таблицы можно добраться через 1:N или N:1 от корневой, то их эксклюзивно объявлять не надо.
А есть ли какие-то различия в использовании в формулах одинарных или двойных кавычек?
И как быть если relation не у корневой на подчиненную, а наоборот? Т.е. корневая таблица «не знает» о существовании таблиц, которые на нее ссылаются?
В примере, с которым я разбираюсь, у корневой таблицы AssetTable нет relation на таблицы AssetBook и LedgerJournalTrans_Asset. Эти таблицы ссылаются на AssetTable.
У AssetBook relation AssetTable_AssertId
AssetBook.AssertId == AssetTable.AssertId
а у LedgerJournalTrans_Asset relation AssetTable_AssertId
LedgerJournalTrans_Asse.AssertId == AssetTable.AssertId

Правильно ли я понимаю, что о "направлении" связи говорит знак ">" или "<"? В первом случае - это relation корневой таблицы на подчиненную, а во втором - наоборот?

И такой пример из той же модели:
У таблицы AssetTable есть relation WorkerContactName_FK
AssetTable.WorkerContactName == HcmWorker.RecID
В модели есть поле с такой формулой
FIRSTORNULL(AssetTable.'>Relations'.WorkerContactName)
Раз ссылка на RecID, то это связь 1:1, WorkerContactName это имя поля, а не relation (там еще _FK и WorkerContactName вне кавычек) и данное выражение возвращает единичную запись из таблицы HcmWorker. Правильно?

Выражение (опуская IF и проверку на пустой список)
AssetTable.'<Relations'.'AssetBook.AssetTable_AssertId'
Связь 1:N, AssetTable_AssertId это relation таблицы AssetBook (а не AssetTable) и данное выражение возвращает список записей таблицы AssetBook, но не всех, а только связанных с текущей записью AssetTable. Правильно?

И, все равно не понимаю, чем выражение
AssetTable.'<Relations'.' LedgerJournalTrans_Asset.AssetTable_AssertId'
отличается от предыдущего.

Единственное, что приходит на ум, это то, что первое используется в маппинге модели и там можно добраться до любой связанной таблицы без ее эксклюзивного объявления, независимо от «направления» relation.

А в маппинге формата можно добраться только до элементов модели, но не до таблицы. Но если в формате ее добавить как источник данных, то можно записи из нее использовать – это я уже попробовал. Вот только связать ее с корневой таблицей модели так же не получается. Надо ссылаться на ER-метку и с отбором по relation что-то не получается. Пробую использовать FILTER, но пока никак не получается написать корректное выражение где с одной стороны поле добавленной таблицы (источника данных), а с другой – поле элемента модели данных.