09.07.2014, 20:12 | #1 |
Участник
|
axforum blogs: Как использовать адрес сервера отчетов в гиперссылках
Источник: http://axforum.info/forums/blog.php?b=8142
============== В одном из своих отчетов я формирую гиппер сылку для открытия формы записи. Проблема в том, что отчет разворачивается не в CRM, где для этого есть специальный параметр CRM_URL, а в SharePoint. Впрочем, это не мешает создать такой параметр самостоятельно. В моем случае SSRS работает в режиме интеграции SharePoint, так что адрес сервера равен адресу сайта SP, поэтому адрес узла можно получить через глобальную переменную Globals!ReportServerUrl. Единственный проблема - это то, что адрес SSRS в режиме интеграции имеет формат: Код: http:///_vti_bin/ReportServer Впрочем, нужную нам часть несложно получить при помощи VB функции, которую придется встроить в отчет: X++: Public Function GetHostUrl(ByRef uri As String) As String If String.IsNullOrEmpty(uri) Then Return String.Empty Else Return New Uri(uri).GetLeftPart(UriPartial.Authority) End If End Function При ее написании выяснился интересный нюанс. Даже если вы задаете адрес сервера отчетов в настройках проекта, при отладке в студии значение параметра Globals!ReportServerUrl все равно будет Nothing. В принципе, это не страшно, для формирования значения параметра можно использовать выражение вида: X++: =IIF(String.IsNullOrEmpty(Globals!ReportServerUrl), "http://test server uri", Code.GetHostUrl(Globals!ReportServerUrl)) Но вот тут-то и кроется коварство SSRS. Как выяснилось, функция IIF не реализует короткое замыкание, поэтому обе части выражения - и та что соответствует истине и та часть, которая соответствует ложному результату, будут выполнены в любом случае. Иными словами, если Globals!ReportServerUrl = Nothing наш код все равно выполнится, хотя результат не будет использован. Как выяснилось, MS это делает в целях улучшения производительности. Именно поэтому, я делаю в коде проверку входного параметра на NULL, в противном случае код валился бы с ошибкой при отладке в студии. Будьте бдительны! Источник: http://axforum.info/forums/blog.php?b=8142
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору. |
|
|
|