Записи с меткой «Reporting Services»
Ссылка на запись в CRM из отчета Reporting Services
Для формирования ссылки на форму записи в Dynamics CRM из отчетов, как вариант, можно использовать следующее выражение:
=iif(IsNothing(Parameters!CRM_URL.Value) , Nothing, Parameters!CRM_URL.Value+”?ID=”+Fields![GUID Field].Value.ToString+”&LogicalName=[Entity Type Name]#”)
Лучше описанного в SDK тем, что не привязываемся к коду сущности, который может быть различным между разными инстансами системы.
В выражении:
- CRM_URL – текстовый параметр, заполняется CRM при формировании отчета
- [GUID Field] – поле с GUID открываемой записи
- [Entity Type Name] – текстовое наименование типа записи (account, contact, new_warehouse и пр.)
Выражение используется в параметре Jump to URL у элемента отчета.
Решение проблемы со стандартным фильтром CRM в сложных отчетах Reporting Services
При разработке комплексных отчетов для Dynamics CRM мы часто сталкиваемся с задачей сделать несколько запросов, в которых используется один и тот же фильтр CRM (CRMAF_). Если в запросах указать CRMAF_ для одного и того же типа записи несколько раз, то при формировании отчета пользователю приходится несколько раз выбрать одинаковые критерии фильтрации для одинакового типа записи.
Мы решаем эту проблему следующим образом. В каждом запросе (DataSet) отчета создаем временную таблицу с выборкой id нужного типа записи и далее используем эту таблицу для запроса вместо стандартного CRMAF_.
Пример для сущности Account:
--Get Customers ID From CRM Filter
DECLARE @SQL nvarchar(4000);
DECLARE @Accounts TABLE
(
accountid uniqueidentifier
)
SET @SQL = 'SELECT accountid FROM ('+@CRM_FilteredAccount+') AS Accounts;'
INSERT INTO @Accounts EXEC (@SQL);
--Select Accounts Data
SELECT
*
FROM FilteredAccount AS Account
WHERE
EXISTS (SELECT * FROM @Accounts AS AccountsFilter WHERE AccountsFilter.accountid=Account.accountid);
@CRM_FilteredAccount – стандартная переменная CRM, которая создается в шаблоне отчета для каждого фильтра, указанного в запросе как “CRMAF_”. В данном случае, эта переменная создается для записей типа Account, а для контактов будет @CRM_FilteredContact.
В результате можно использовать @Accounts в комплексном запросе и отсутствует проблема со стандартным фильтром CRM.