Показать сообщение отдельно
Старый 16.02.2018, 10:32   #10  
CDR is offline
CDR
MCTS
MCBMSS
 
236 / 175 (6) ++++++
Регистрация: 27.11.2003
Цитата:
Сообщение от IKA Посмотреть сообщение
Есть таблица - лог.
В ней нужно хранить ссылку на запись в другой таблице (события в которой спровоцировали запись в этот лог) и дать возможность пользователю возможность с записи в этом логе перейти на форму с таблицей-провокатором. Также пользователю нужно показать название таблицы (можо не Label , а TableName)

Таблиц-провокаторов несколько, поэтому в логе нужно хранить RefTableId+RefRecId или же RefTableName+RefRecId

По идее, вроде, обычно в Ax практикуется хранить связку RefTableId+RefRecId , но
1) Если я буду сохранять tableId, то все равно надо display-метод писать, чтобы показать RefTableName на grid формы, то есть, доп накладные расходы. Плюс, мне кажется, что такой метод не будет даже кэшироваться, тк это метаданные (см пример в AifCorrelation форме).
2) Вероятность, что кто-то имя таблицы поменяет - мала, а вот ID-конфликтов, намного выше, поэтому хранить RefTableName кажется надежней

В пользу RefTableId вижу размер поля на стороне DB (int vs nvarchar)....

Почему чаще используется подход хранить RefTableId? Я, быть может, упускаю что-то из виду? Как посоветуете сделать?

Спасибо

AX2012 R3
А вариант с Enum, как в таблице InventTransOrigin, например, чем не устраивает?
Возникновение потребности хранить в БД tableId или classId - первый признак design error. Редкий пользователь попросит вывести ему на форму внутренний идентификатор таблицы или ее системное имя. Как правило, это решение программиста или консультанта, которые смотрят на мир через AOT и которым, соответственно, так проще. Пользователь, обычно, предпочитает видеть человеческое название соответствующего документа или справочника.

К тому же, использование enum дает возможность разделить документы, использующую одну и ту же таблицу (складской журнал проводка от складского журнала инвентаризации или журнал платежей от журнала кассовых ордеров).
__________________
Dynamics AX Experience
За это сообщение автора поблагодарили: mazzy (10).