Когда-то мне была поставлена задача создать некий отчет, который будет предоставлять данные не просто за период, а за период с заданной периодичностью. Поясню: пользователь выбирает период, а также выбирает периодичность отчета, к примеру - месяц, и отчет должен вывести данные в разрезе стольких месяцев, сколько в заданном периоде месяцев. Такие решения есть в универсальном отчете, но это не тот вариант решения, который я для себя считаю приемлемым. Также видел на Инфостарте вариант решения, но и он не показался мне оптимальным. В данной статье я бы хотел поделиться своей реализацией данного вопроса.
Итак, начнем.
Для простоты понимая пример будем строить на одном простом оборотном регистре накопления.
В моем случае это регистр накопления "Незавершенное производство бухгалтерский учет".
Его параметры для примера укажем жестко (не через мягкое накладывание параметров на СКД):
Обратим внимание, периодичность виртуальной таблицы - "Запись".
Далее выбираем период из виртуальной таблицы и нужные нам поля.
Но, как было замечено выше, период нам нужен в разрезе периодичности, поэтому поле "Период" я предлагаю вычислить следующим путем (не совсем красиво, но лучше вариантов я не видел):
Как видно из скриншота, в запрос передается параметр, который пользователь указывает на форме: Значение перечисления "Периодичность" - данное перечисление есть практически во всех типовых решениях.
Его доступные типы укажем на вкладке "Параметры":
Далее, в настройках СКД создаем таблицу, в ней - колонку "Период" (вертикальная группировка):
Далее следует важный момент настройки условного оформления:
Этой настройкой мы форматируем наш период, чтобы все было красиво и радовало глаз)
Вот, собственно, сами форматы:
Месяц: ДФ='ММММ гггг "г."'
День: ДФ = дд.ММ.гггг
Неделя: ДФ = '"Неделя с" дд.ММ.гггг '
Квартал: ДФ = 'к "квартал" гггг "г."'
Год: ДФ = 'гггг "г."'
Декада: ДФ = '"Декада с" дд.ММ.гггг '
Полугодие: ДФ = '"Полугодие с" дд.ММ.гггг'
Вот и все. На выходе имеем замечательную картину: