IE2017

Методика расчета отклонений данных между любыми двумя датами в отчете на СКД

Программирование - Практика программирования

Иногда требуется сравнить данными между двумя указанными датами. В данной статье описана методика расчета таких отклонений между двумя, указанными пользователем датами (с помощью СКД).

                Расчет отклонений (разницы) по показателям между двумя выбранными датами в таблице на СКД и создание отчета в нестандартном виде

                Хочу поделиться своим опытом решения подобного вопроса. Постановка задачи стояла таким образом, чтобы отчет формировался в виде таблицы по датам, и по указанным же пользователем датам справа от дат календаря выводилась сумма отклонений между показателями указанных дат.

                Первое, что нам понадобится – разумеется, в схеме СКД создать два набора данных – один с датами календаря, а другой с самим запросом по получению нужных данных. Во втором запросе не забываем указать параметры дат календаря для связи обоих наборов.

                Хочу обратить внимание на поле «Отклонение» во втором запросе. Оно еще нам понадобится для построения нужного вида отчета.

На закладке «связи наборов данных» указываем необходимое, при этом источник – это запрос по датам.

                Теперь нам следует указать два параметра для указания дат отклонений. Добавим на закладке два параметра – «ДатаОтклоненийНач» и «ДатаОтклоненийКон».

                Переходим на закладку «Вычисляемые поля». Добавляем вычисляемое поле для необходимого показателя. Назовем его, к примеру, «ОтклонениеОстаткаДенег». И в выражении укажем:

                Определим ресурсы, и не забудем продублировать выражение, описанное для вычисляемого поля, для поля «Отклонение остатка денег».

                Необходимое отклонение получено. Теперь остается только настроить правильно форму требуемого отчета. Перед этим попробуем предварительно создать отчет в виде таблицы, где в строках укажем организацию, а в колонках даты календаря. В качестве выходных полей для таблицы укажем оба ресурса – Остаток денег, и отклонение остатка денег. Больше ничего пока настраивать не будем, и попробуем сформировать отчет.

Итак, видим, что необходимые данные по отклонениям посчитаны, но правильно они посчитаны только в общем итоге справа. Лишние, промежуточные данные по датам календаря нам выводить пользователю не нужно. Займемся настройкой необходимого вида.

Добавляем еще одну колонку «Отклонение» (это поле из запроса, которое мы определили ранее), но она не должна быть вложена в колонку «Дата календаря».

Теперь для строк «организация» удалим в выбранных поля «Автополе», и добавим поля «Организация» и «Остаток денег». Для колонки «Дата календаря» сделаем то же самое, но поля будут «Дата календаря» и «Остаток денег». А вот для колонки «Отклонение» после удаления автополей добавим поля «Отклонение» и «Отклонение остатка денег». Снова формируем отчет.

Требуемый вид получен. Осталось только отключить показ итогов по колонке Отклонение. Это можно сделать в настройке таблицы отчета для колонки «Отклонение» (другие настройки – расположение общих итогов = «нет»).

Итого: данная методика позволяет считать отклонения между любыми датами в отчете.

               

Скачать файлы

Наименование Файл Версия Размер
Методика расчета отклонений данных между любыми двумя датами в отчете на СКД:
.erf 7,26Kb
16.05.17
4
.erf 7,26Kb 4 Скачать

См. также

Комментарии
1. Сергей Ожерельев (Поручик) 3592 13.05.17 21:50 Сейчас в теме
2. Татьяна Федорова (tata_1211) 32 13.05.17 22:02 Сейчас в теме
3. Armando Armando (Armando) 1378 13.05.17 23:56 Сейчас в теме
Возможно это дело вкуса, но выражение вычисляемого поля я бы сделал на мой взгляд более понятным:
Сумма(ВычислитьВыражениеСГруппировкойМассив("ОстатокДенег", , "ДатаКалендаря = &ДатаОтклоненийКон"))
- Сумма(ВычислитьВыражениеСГруппировкойМассив("ОстатокДенег", , "ДатаКалендаря = &ДатаОтклоненийНач"))
rayastar; Serj1C; Liris; Lo1jke; +4 Ответить 1
4. Татьяна Федорова (tata_1211) 32 14.05.17 00:03 Сейчас в теме
Не думаю. Позднее аргументирую.
5. Татьяна Федорова (tata_1211) 32 14.05.17 08:32 Сейчас в теме
Да, Вы правы. Так тоже работает. И мне Ваше решение кажется более изящным. Спасибо, возьму на вооружение
6. Татьяна Федорова (tata_1211) 32 14.05.17 08:33 Сейчас в теме
(4)вопрос с возражением снят
7. John Irwin (Irwin) 60 04.08.17 12:56 Сейчас в теме
Запрос из НаборДанных2 будет выполняться столько раз, сколько дат в наборе ДатыКалендаря. Эффективнее в одном запросе (пример остатков на каждый день в статье: https://infostart.ru/public/306536/ , п.6).
Оставьте свое сообщение