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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.08.2007, 13:37   #1  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Вечные проблемы с фильтром
Доброго времени суток, коллеги. Насколько я понял все испытывают проблемы с выводом фильтра и его параметров в отчетах. Для себя я пришел к выводу, что, видимо, нет "идеологически" правильного решения этой проблемы. Остается только взлом:
берем CRMReports\viewer\viewer.aspx и правим.
Например этот участок кода:

var iFormRequestLength = getFormRequestLength (renderForm) + 200;
if (iFormRequestLength < 2048)
{
returntrue;
}
else
{

iFormRequestLength = iFormRequestLength - iSummaryLen + getRSEncodedLength(LOCID_RPTVIEW_NOSUMMARY);
if (iFormRequestLength < 2048)
{
setFormParameter (renderForm,
"CRM_FilterText", LOCID_RPTVIEW_NOSUMMARY);
returntrue;
}
else
{
alert(LOCID_RPTVIEW_FILTERTOOLONG);
returnfalse;
}

повинен в том что выводится всеми нами любимая строчка "Не предоставляется из-за ограничений по размеру".
Кроме того все мы уже столкнулись с удивительным фактом того, что мы не можем сформировать привычную "шапку" отчета, так как параметры доступны нам только в виде неудобоваримой строчки вида: "Продукты: дата создания...".
Выход: делаем врезку и скриптом выковыриваем нужные параметры. Остается проблема: как передать их в отчет?
Другово решения я не нашел. Или есть еще идеи?
Старый 20.08.2007, 11:56   #2  
Lud is offline
Lud
Участник
 
47 / 10 (1) +
Регистрация: 28.03.2007
Записей в блоге: 1
Уже не раз сталкивалась с такой проблемой.
Если нужно выводить что-то в шапке, делаю через параметры.
Старый 20.08.2007, 12:33   #3  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Цитата:
Сообщение от Lud Посмотреть сообщение
Уже не раз сталкивалась с такой проблемой.
Если нужно выводить что-то в шапке, делаю через параметры.
Параметры убивают всю красоту типа календариков и лукапов. Кроме того с параметрами типа DateTime есть масса проблем: они могут вставляться в виде dd.MM.yyyy, а считываться в виде mm/dd/yy и в результате куча проблем! Я особо не копал в это направлении, но похоже перехватывать и преобразовывать их самостоятельно не получится.
Старый 20.08.2007, 14:19   #4  
Lud is offline
Lud
Участник
 
47 / 10 (1) +
Регистрация: 28.03.2007
Записей в блоге: 1
Точно не могу сказать, но вроде бы в 2005 студии есть в параметрах lookup.
Старый 21.08.2007, 08:34   #5  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Цитата:
Сообщение от Lud Посмотреть сообщение
Точно не могу сказать, но вроде бы в 2005 студии есть в параметрах lookup.
Это не от студии зависит, а от самого репорт сервиса, да и не о том речь!
Старый 21.08.2007, 09:40   #6  
Lud is offline
Lud
Участник
 
47 / 10 (1) +
Регистрация: 28.03.2007
Записей в блоге: 1
Это точно
Старый 28.08.2007, 15:45   #7  
AndreyS is offline
AndreyS
Moderator
Сотрудники Microsoft Dynamics
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
283 / 61 (3) ++++
Регистрация: 18.05.2006
2Enot Poloskun:
"Кроме того с параметрами типа DateTime есть масса проблем: они могут вставляться в виде dd.MM.yyyy, а считываться в виде mm/dd/yy и в результате куча проблем!"

Был выпущен специальный патч для решения данной проблемы. См. статью KB936305
Старый 26.11.2007, 09:15   #8  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Thumbs up
Пост старый и никого, кроме меня, похоже эта проблема не волнует , но все же решил поделиться своим открытием... Нормальную шапку отчета все же можно выводить!
В студии, в свойствах отчета: меню Report -> Report Properties. Есть такая вкладка Code. Сюда можно поместить свой код, причем не на скрипотвых языках, а на полноценном Visual Basic .NET (если конечно считать этот язык полноценным). Вот таким кодом, например, можно выковыривать свои параметры из строки фильтра:

Код:
    Const defaultVal As String = "Не указано"
    Const backspace As Char = Chr(10)
    Const newline As Char = Chr(13)
    Const space As Char = Chr(32)

    Function getParameter(ByVal filterText As String, ByVal className As String, ByVal attributeName As String, ByVal expression As String) As String
        Dim result As String = defaultVal
        Dim pos As Integer = filterText.IndexOf(className, StringComparison.OrdinalIgnoreCase)
        If (pos <> -1) Then
            pos = filterText.IndexOf(attributeName, pos + className.Length, StringComparison.OrdinalIgnoreCase)
            If (pos <> -1) Then
                pos = filterText.IndexOf(expression, pos + attributeName.Length, StringComparison.OrdinalIgnoreCase)
                If (pos <> -1) Then
                    Dim startPos As Integer = pos + expression.Length
                    pos = filterText.IndexOf(Chr(10), pos + expression.Length)
                    result = filterText.Substring(startPos, pos - startPos).Trim(New Char() {backspace, newline, space})
                End If
            End If
        End If
        Return result
    End Function
Далее вызываем его из полей отчета:
Code.GetParameter(Parameters!CRM_FilterText.Value, "Заказ", "Дата создания", "в указанную дату или ранее")

Достаточно удобное и простое решение. Есть тем не менее и более правильный способ: есть возможность создать и использовать в любом отчете целую библиотеку с любыми удобными для вас функциями и константами! Кроме того, так вам будет доступна вся мощь .NET и снимается ограничение на кодирование только на Basic. Я пошел именно этой дорогой.
Короече, если кому-то интересно подробнее об этом можно узнать тут:

http://msdn2.microsoft.com/ru-ru/library/ms155798.aspx
http://msdn2.microsoft.com/en-us/library/ms153561.aspx
http://msdn2.microsoft.com/en-us/library/ms155034.aspx
http://www.microsoft.com/Rus/Msdn/pu...RSCstCode.mspx Если что, спрашивайте.

Последний раз редактировалось Артем Enot Грунин; 26.11.2007 в 09:22.
За это сообщение автора поблагодарили: Roman08 (1).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Проблемы с кодировкой при импорте из .cvs DImaNec Dynamics CRM: Функционал 9 13.03.2009 09:07
Проблемы в работе Outlook-клиента для CRM 4.0 Maxoon Dynamics CRM: Администрирование 7 30.07.2008 23:14
Проблемы с установкой aloha Dynamics CRM: Администрирование 10 18.06.2008 06:43
Проблемы чтения почты в MS Outlook? Alexey-IT Dynamics CRM: Функционал 4 24.07.2007 19:33
Проблемы с E-mail Router в CRM 3.0 Jul_Sol Dynamics CRM: Администрирование 11 02.06.2006 17:43

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

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

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