Всем добрый день, делаю первые шаги в написании отчетов. Раньше работал с проектом, где встроенный был FastReport 2.5 и использовались "родные" визуальные компоненты... поэтому вопросов куча, попробую поточнее сформулировать на примере.
Версия TS XRM 3.3.0.49, MS SQL Server 2008 R2 Express
Задача: визуализировать запрос, который выбирает небольшую статистику по сотрудникам из раздела задачи.
Пример Запроса, который я написал в MS SQL Management Stadio
SELECT c.ID, c.Name,
(SELECT COUNT(t1.ID) FROM dbo.tbl_Task AS t1 WHERE c.ID=t1.OwnerID
AND t1.TypeID = 'CED7CC70-81CB-4AB1-A9F2-521998B14723'/*Тип задачи - Звонок*/
AND t1.StartDate >= '01.03.2011'
AND t1.StartDate = '31.03.2011'
AND t1.StatusID = 'F598ECDB-4EEF-4FA8-9E69-A36B053501E5'/*Выполнена*/
AND t1.ProjectID IS NULL AND t1.OpportunityID IS NULL ) AS Q_TaskOfCall
FROM dbo.tbl_Contact AS c
WHERE EXISTS(SELECT t.ID FROM dbo.tbl_Task AS t WHERE c.ID=t.OwnerID
AND t.StartDate >= '01.03.2011'
AND t.StartDate = '31.03.2011')
ORDER BY c.Name
Хотелось бы при вводе первоначальных данных иметь возможность задать
- Интервал дат для фильтра по дате начала задачи
- Сотрудника в т.ч. по нескольким из списка.
Сервисы типа sq_StatisticByTask и ds_StatisticByTask я сделал.
В сервисе sq_StatisticByTask я добавил два параметра "BDATE"- Начальная дата периода, Конечная дата периода "EDATE" с типом Дата/Время, для отладки поставил туда значения явно.
Подзапросы оформил в виде объекта "Колонка с текстом SQL"
(SELECT COUNT(t1.ID)
FROM dbo.tbl_Task AS t1
WHERE tbl_Contact.ID=t1.OwnerID
AND t1.TypeID = 'CED7CC70-81CB-4AB1-A9F2-521998B14723'/*Тип задачи - Звонок*/
AND t1.StartDate >= :BDATE
AND t1.StartDate = :EDATE
AND t1.StatusID = 'F598ECDB-4EEF-4FA8-9E69-A36B053501E5'/*Выполнена*/
AND t1.ProjectID IS NULL AND t1.OpportunityID IS NULL)
Судя по работе в предпросмотре, в подзапрос параметры передаются.
Начал делать сервис fr_StatisticByTask подключил датасет, хотел использовать стандартное окно фильтрации, НО в поля фильтра можно добавить только поля, которые явно заданы в датасете, или я ошибаюсь? Соответственно вопрос: можно ли передать из стандартного окна фильтрации даты, которых нет в запросе датасета явно? Или вариант писать только свое окно фильтрации?