24.03.2008, 18:03 | #1 |
MCTS
|
Оповещения. Переход к источнику оповещения.
Здравствуйте!
Заметил такую особенность в работе стандартного механизма оповещения в AX 4.0. Например, если настроить оповещение на изменение поля таблицы "Договоры" (RContractTable - неважно, у клиентов или поставщиков), то позже из этого оповещения (форма "Просмотр оповещений" - EventAlertInbox) нельзя перейти к той записи, у которой было изменено поле. Открывается форма договоров, выделяется поле грида, в котором было изменение, но выбрана первая запись, а не та, на которой было сгенерировано оповещение. На других формах функционал отрабатывает корректно - переходит к нужной записи. После анализа кода, выяснилось то отличие таблицы договоров от других таблиц, которое приводит к такому поведению. Это - составной первичный ключ. В классе EventContextInformation за поиск записи на форме отвечает метод find(), в самом начале которого идет проверка - canUseFindRecord(), который в случае с RContractTable возвращает false. Этот false, в свою очередь, определяется методом canUseLookup() того же класса, который также возвращает false из-за вот этой проверки: X++: di = this.getPrimaryIndex(); if (! di || di.numberOfFields() != 1) return false; Может, у кого-нибудь есть идеи, зачем так сделано? Зачем таблицы с составным первичным ключом обрабатываются иначе, чем те, у которых первичный ключ содержит одно поле. Может, в этом и есть какой-то смысл, но функционал при этом работает не корректно. Исправить-то можно, конечно, но хотелось бы разобраться. |
|
Теги |
оповещения, ax4.0 |
|
|