Запуск BestPractice дает ответ на этот вопрос. Self-relation нужны для переименования первичных ключей.
Если расширенный тип не имеет такой ссылки, то BestPractice выдает соответствущее предупреждение и ждет, что ссылка будет создана на самой таблице. Однако в ряде таблиц (RAssetMoveHist, скорее всего, в их числе) первичного ключа либо нет, либо он состоит из нескольких полей. Тут попытка создать Self-relation ни к чему не приводит: BestPractice продолжает ошибочно выдавать все то же предупреждение.
Есть и еще одна причина: в ряде случаев программист хочет, чтобы при вызове формы создалась динамическая ссылка с источником данных вызываеющего объекта. Пример: вызов проводок по ГК из плана счетов. А если вызывающая и вызываемая таблицы одинаковые? Если таблицу рабочих центров вызываем из формы рабочих центров и хотим видеть, как содержимое второй формы фильтруется по номеру из первой? Автоматически наложить правильный DynaLink на таблицу (особенно с первичным ключом из двух и более полей) в таком случае помогает Self-relation.
|