С чисто формальной стороны, то, что используется в AXAPTA и есть суррогатный ключ, поскольку это не есть информационное поле. В смысле, поле, содержащее некую осмысленную информацию о сущности. Это просто идентификатор записи.
Другое дело, что, как правило, суррогатный ключ используется для внутренних механизмов обеспечения ссылочной целостности и пользователю не показывается. Пользователь видит как раз "Имя", а не "Код".
А в AXAPTA пошли более простым путем - дали пользователю возможность напрямую как просматривать, так и вводить коды записей. Поэтому возникла иллюзия того, что это "естесственные ключи". На самом деле это не так. И об этом надо всегда помнить.
Где-то здесь была ссылка на статью Mazzy по поводу поиска по внешнему ключу в связанном справочнике. Не могу найти.
Суть в том, что таблица-справочник цепляется по JOIN к основной таблице и в Grid отображаются напрямую поля из таблицы-справочника. Никаких дисплейных методов и дополнительных полей.
Работают все штатные механизмы поиска и фильтрации. Более того, через расширенное окно поиска можно задать критерии отбора по полям, не отображаемым на форме.
Недостаток такого метода в том, что он не подходит для внешних объединений, когда код может быть, но может и не быть. И есть некоторые проблемы при модификации внешнего кода. Надо не забыть принудительно обновить текущую запись в связанной таблице.
|