Axapta: проверка доступа к возвращаемому значению из метода отображения - PullRequest
3 голосов
/ 02 декабря 2009

Надстройка Dynamics AX 2009 Best Practice выдает следующую ошибку при переопределении метода отображения.

"TwC: Validate access to return value from the display/edit method."

Вот мой метод отображения.

display ABC_StyleName lookupModuleName(ABC_StyleSettings _ABC_StyleSettings)
{
    ;
return ABC_Styles::find(_ABC_StyleSettings.StyleID).StyleName;
}

Я предполагаю, что он хочет, чтобы я проверил конфигурацию или ключ безопасности перед возвратом результата. Любые предложения / примеры с чего начать?

Спасибо

1 Ответ

5 голосов
/ 03 декабря 2009

Это напоминание о том, что вам нужно подумать, должен ли пользователь иметь доступ к данным, которые вы возвращаете из функции. Для полей таблицы ядро ​​обычно делает это для вас на основе групп безопасности, в которых находится пользователь, и ключей безопасности, установленных в полях.

Чтобы проверить, имеет ли пользователь доступ к полю, используйте функцию hasFieldAccess. Чтобы увидеть, как это используется, посмотрите на методы таблицы BankAccountStatement.openingBalance() или CustTable.openInvoiceBalanceMST(). Существуют и другие вспомогательные функции для проверки ключей безопасности, такие как hasMenuItemAccess, hasSecuritykeyAccess и hasTableAccess.

.

В вашем случае добавьте этот код:

if(!hasFieldAccess(tablenum(ABC_Styles),fieldnum(ABC_Styles,StyleName)))
{
    throw error("@SYS57330");
}

Даже после добавления этого кода вы все равно получите ошибку Best Practice. Чтобы сообщить компилятору, что вы обратились к проблеме, вам необходимо добавить следующий комментарий непосредственно перед объявлением функции:

//BP Deviation Documented
...