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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.09.2006, 07:48   #1  
kras is offline
kras
Участник
 
30 / 10 (1) +
Регистрация: 09.03.2006
фильтр CRMAF_ в отчетах
добрый день.
при разработке отчета в RSS для CRM необходимо использовать 2 набора данных, которые используют фильтр CRMAF_Filtered<EntityName>.
первый датасет получает id объекта и передает его во второй, который, собственно, выводит всю необходимую информацию.
вот примеры запросов наборов данных:
1. SELECT TOP 1 invoiceid FROM FilteredInvoice СRMAF_FilteredInvoice
2. SELECT invoicenumber, name FROM FilteredInvoice WHERE (invoiceid=@CRM_InvoiceID)
@CRM_InvoiceID - скрытый параметр, который содержит id объекта.

насколько я понял в результате должны быть выведены сведения по тому счету, из которого отчет был запущен.
после размещения такого отчета через CRM при запуске выдается следующая ошибка
An error has occurred during report processing. (rsProcessingAborted) Get Online Help
Cannot set the command text for data set 'DataSet1'. (rsErrorSettingCommandText) Get Online Help
Error during processing of the CommandText expression of dataset ‘DataSet1’. (rsQueryCommandTextProcessingError) Get Online Help


DataSet1 - набор данных, где запрашивается id объекта. причем если в запросе убрать alias СRMAF_FilteredInvoice ошибки нет. но, естественно, отчет работает неверно, т.к. возвращаемый запросом id не соответствует id выбранному счету.

причем если использовать подотчет все работает как и должно.
вопрос: что это за ошибка? можно ли подробнее о префиксе CRMAF и как с ним работать?

заранее благодарен.
Старый 21.09.2006, 08:22   #2  
kras is offline
kras
Участник
 
30 / 10 (1) +
Регистрация: 09.03.2006
up ))
Старый 10.10.2006, 06:56   #3  
ShadowXXX is offline
ShadowXXX
Участник
 
11 / 11 (1) +
Регистрация: 01.09.2006
Нужно использовать:

DECLARE @SQL nVarchar(4000)
'SELECT TOP 1 invoiceid FROM ' & @СRM_FilteredInvoice
EXECUTE(@SQL)


Так должно получиться
Старый 11.12.2006, 10:56   #4  
kras is offline
kras
Участник
 
30 / 10 (1) +
Регистрация: 09.03.2006
Цитата:
Сообщение от ShadowXXX Посмотреть сообщение
Нужно использовать:

DECLARE @SQL nVarchar(4000)
'SELECT TOP 1 invoiceid FROM ' & @СRM_FilteredInvoice
EXECUTE(@SQL)


Так должно получиться
ну как бы получается ))
параметр @CRM_FilteredInvoice через CRM отрабатывается.

и как мне теперь полученый id счета передать в качестве параметра в другой датасет? Ибо обратиться к этому полю в дизайнере отчета не могу, т.к. запрос составной.
если бы было SET @SQL = 'SELECT TOP 1 invoiceid FROM FilteredSalesOrder' тогда дизайнер отчета к полю invoiceid обращается, а так нет. ((

P.S.: извиняюсь за столь мгновенный ответ, тогда придумал другое решение, а вот сейчас опять эта проблемка всплыла

Последний раз редактировалось kras; 12.12.2006 в 07:58. Причина: неверная формулировка
Старый 15.12.2006, 07:35   #5  
kras is offline
kras
Участник
 
30 / 10 (1) +
Регистрация: 09.03.2006
Доброго!
Придумал решение для этой задачки. Только не улыбайтесь ))
Вобщем в дизайнере отчетов объявляем параметр CRM_FilteredInvoice. При запуске отчета из карточки счета он будет содержать следующую строку:
select invoice.* from FilteredInvoice as invoice where (invoice.invoiceid = N'{9E6B4647-077A-DB11-8591-00112F8E3A33}')
Следовательно необходимо выдернуть этот GUID.
создаем еще один параметр CRM_invid, значение которого по умолчанию будет
=Mid(Parameters!CRM_FilteredInvoice.Value,StartIndex,38)
StartIndex - номер символа в строке где начинается id
т.о. вырезаем из строки id счета. теперь его можно использовать в других датасетах.

НО есть один (хотя скорее всего больше) недостаток:
когда пользователь изменяет фильтр по умолчанию, изменяется и значение параметра CRM_FilteredInvoice. Поэтому выдергивать GUID приведенным выше способом не рационально. необходимо реализовать поиск id в строке по шаблону.

вот такая вот ерундовина. если у кого есть вариант попроще, напишите пожалуйста.

Последний раз редактировалось kras; 15.12.2006 в 07:57.
Старый 15.12.2006, 12:44   #6  
kras is offline
kras
Участник
 
30 / 10 (1) +
Регистрация: 09.03.2006
поиск GUID в строке (Visual Basic)
создаем в отчете функцию, которая будет искать в любой строке соответствие id:
Public Function getGUID(strin As String) As String
Dim r As System.Text.RegularExpressions.Regex
r = New System.Text.RegularExpressions.Regex("{\w{8}-\w{4}-\w{4}-\w{4}-\w{12}}")
If r.Match(strin.ToUpper).Success Then
Return r.Match(strin.ToUpper).ToString
Else
Return "00000000-0000-0000-0000-000000000000"
End If
End Function
затем значению параметра CRM_invid присваиваем:
=Code.getGUID(Parameters!CRM_FilteredSalesOrder.Value)
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как наложить фильтр на форму выбора значений? if_maks Dynamics CRM: Разработка 18 21.07.2009 12:11
Crm 4.0 фильтр для мультилукапа по fetchxml Age17 Dynamics CRM: Разработка 15 15.12.2008 13:58
Про фильтр в отчетах tatra Dynamics CRM: Разработка 2 29.01.2008 09:07
Как сделать фильтр в отчете tatra Dynamics CRM: Разработка 2 15.01.2008 09:28
Предварительная фильтрация в отчётах (CRMAF) SeregaK Dynamics CRM: Разработка 10 06.11.2007 13:33
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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