AXForum  
Вернуться   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Blogs
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 09.07.2014, 20:12   #1  
Blog bot is offline
Blog bot
Участник
 
25,643 / 848 (80) +++++++
Регистрация: 28.10.2006
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, напишите личное сообщение администратору.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
crminthefield: Creating SSL Certificates for CRM Test Environment Blog bot Dynamics CRM: Blogs 0 10.12.2013 02:12
Microsoft Dynamics CRM Team Blog: Creating and Publishing a Web Portal to an Azure Cloud Service Blog bot Dynamics CRM: Blogs 0 17.04.2013 23:11
axforum blogs: Как правильно использовать прайс-листы в CRM (часть 3) Blog bot Dynamics CRM: Blogs 0 22.02.2012 15:11
axforum blogs: Как правильно использовать прайс-листы в CRM (часть 2) Blog bot Dynamics CRM: Blogs 1 14.02.2012 20:52

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 06:38.