Пользовательский отчет CRM
Я сделал пользовательский отчет CRM с пользовательским кодом, и при загрузке я получаю сообщение об ошибке: "На сервере отчетов включена поддержка RDLSandboxing, и отчет содержит пользовательский код. Удалите элемент кода из определения отчета ".
Теперь мой вопрос: возможно ли отключить RDLS и бокс?
Если да, то с чего мне начать?
Вот код, используемый в отчете
Public Function Divider(ByVal Dividend As Decimal, ByVal Divisor As Decimal)
If IsNothing(Divisor) Or Divisor = 0 Then
Return 0
Else
Return Dividend / Divisor
End If
End Function
3 ответа
Вы не можете ничего изменить в песочнице RDL при использовании CRM Online. Вот несколько ссылок, которые содержат больше информации по теме.
- Песочница RDL для Microsoft Dynamics CRM Online
- Пользовательский код, разрешенный для использования в Microsoft Dynamics CRM Online FetchXML Reports
Вам придется изменить свой пользовательский код на любой из принятых методов и классов, поскольку у вас нет доступа к серверу отчетов.
Отчеты в CRM Online не допускают пользовательский код. Загрузка отчета, содержащего любой пользовательский код, приведет к ошибке, которую вы получаете
Полученное сообщение об ошибке указывает на то, что на сервере отчетов CRM включен RDLSandboxing, который является важной функцией безопасности, помогающей защитить сервер отчетов CRM от вредоносного кода. Отключать эту функцию не рекомендуется. Чтобы устранить эту ошибку, вам следует удалить пользовательский код из определения отчета и использовать вместо него встроенные выражения или функции. Например, вы можете использовать выражение для выполнения операции деления. Вы можете добиться того же результата, что и ваш пользовательский код, не нарушая функцию безопасности RDLSandboxing, используя встроенные выражения или функции. После удаления и замены пользовательского кода выражением вы сможете без проблем загрузить и запустить отчет.
Код:-
=IIF(IsNothing(Fields!Divisor.Value) OR Fields!Divisor.Value = 0, 0,
Fields!Dividend.Value / Fields!Divisor.Value)