1. Возьмем текущий отчет Журнал рабочего времени. (Проанализируем какие данные он использует для построения).
1.1. Построим таблицу SQL в которой будут необходимые данные для построения этого отчета, по которой без перебора, интерации, и цикла(Очень важный пункт) мы сможем построить такой же отчет. (Для начала таблицу можно заполнить вручную, чуть позже при создании сервиса, который будет заполнять её будем брать реальные данные и уже изучать исходник того, откуда из таблиц берутся эти данные).
2. Просматривать отчет ЖРВ через веб, для этого создать сервис который будет по предварительной таблице (п1.1) строить отчет по параметрам фильтрации (поступивших с web формы) и передавать его для отображения на Web.
3. Разработать сервис, предварительного построителя отчета, который будет заполнять таблицу п.1.1. на постоянной основе, проверяя актуальность в ней данных, отлавливать изменения в основных таблицах. (В этот момент мы предоставим исходники того, как работает в настоящий момент построения отчетов, что бы можно было видеть в какие таблицы что записывается, откуда что берется и т.д.)
Для тестового задания необходимо 1, 1.1, 2 пункты.
Так как в отчете нужно просто показывать данные из таблицы, то выбрал самый быстрый способ - загружать данные в отчете.
Запрос для получения данных:
DECLARE @CMD nvarchar(max)
SET @CMD = 'SELECT [Employee], [Date], [Department], [Position], [PlanStart], [Norm], [WorkedOut], [Late], [Details] FROM [Report]'
SET @CMD = @CMD + ' WHERE CONVERT(date, [Date]) >= ''' + CAST(CONVERT(date, @PeriodFrom) as varchar(255)) + '''' +
' AND CONVERT(date, [Date]) <= ''' + CAST(CONVERT(date, @PeriodTo) as varchar(255)) + ''''
IF (@Department <> 'Все')
BEGIN
SET @CMD = @CMD + ' AND Department = ''' + @Department + ''''
END
IF (@Position <> 'Все')
BEGIN
SET @CMD = @CMD + ' AND Position = ''' + @Position + ''''
END
IF (@Employee <> 'Все')
BEGIN
SET @CMD = @CMD + ' AND Employee = ''' + @Employee + ''''
END
EXEC sp_executesql @CMD
Для отображения отчетов используется Stimulsoft Reports.Web для ASP.NET MVC http://www.stimulsoft.com/ru/products/reports-web