Как настроить дополнительный отбор по направлению деятельности в бюджетном отчете 1С:ERP

Бизнес-аналитик 1С v8.3 (Управляемые формы) 1С:ERP Управление предприятием Управленческий учет
← На главную

В системе 1С:ERP управление предприятием бюджетные отчеты являются мощным инструментом для план-фактного анализа. Однако пользователи часто сталкиваются с тем, что привычные механизмы настройки отчетов (через "Изменить вариант" в системе компоновки данных) здесь не работают. Это связано с тем, что бюджетный отчет строится динамически на основе настроек справочника Виды бюджетов. Разберем подробно, как добавить отбор по Направлению деятельности в уже существующий отчет.

Особенности архитектуры бюджетных отчетов

Для начала проанализируем, почему нельзя просто добавить поле в отборы, как в обычном бухгалтерском отчете. Типовой бюджетный отчет — это не классический отчет на СКД. Его структура, состав строк, колонок и доступных фильтров определяются в метаданных конкретного Вида бюджета. Когда мы открываем форму отчета, система обращается к программным модулям подсистемы бюджетирования, которые "собирают" отчет из кусочков: правил получения факта, настроек ячеек и заданных измерений. Поэтому и решение задачи всегда лежит в плоскости изменения настроек самого вида бюджета.

Метод 1: Использование измерений в настройках вида бюджета

Это основной и наиболее правильный способ добавления сквозного отбора в шапку отчета. Рассмотрим последовательность действий:

  1. Перейдем в раздел Бюджетирование и планирование — Настройки и справочники — Виды бюджетов.
  2. Найдем и откроем наш отчет (например, "План-факт Прибыли и убытки").
  3. Перейдем на закладку Основные параметры. Здесь мы увидим список измерений, которые доступны для отчета. По умолчанию там всегда присутствуют Организация и Подразделение.
  4. Проверим, добавлено ли Направление деятельности в список измерений отчета. Если нет, его необходимо добавить.
  5. После добавления измерения в структуру отчета, в верхней части панели настроек появится возможность устанавливать фильтр по этому полю.

Важное замечание: Чтобы отбор работал корректно, Направление деятельности должно быть указано как аналитика для всех статей бюджетов, входящих в этот отчет. Если хотя бы одна статья в структуре не поддерживает данную аналитику, система может вести себя некорректно при попытке наложить общий фильтр.

Метод 2: Настройка группировки в структуре бюджета

Если по каким-то причинам добавление через общие измерения невозможно (например, из-за сложной иерархии), мы можем воспользоваться механизмом группировки. Проанализируем этот путь подробнее:

  1. В форме редактирования Вида бюджета перейдем на закладку Структура бюджета.
  2. В левой части окна выберем элемент Группа: Строки и перетащим его в самый верх нашей структуры (сделаем "родительским" элементом для всего отчета).
  3. В настройках этой группы перейдем в раздел Отбор.
  4. Здесь мы можем выбрать поле Направление деятельности и установить интересующее нас значение.

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

Метод 3: Проверка правил получения данных

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

  1. Зайдем в настройки каждой статьи бюджета, которая выводится в отчете.
  2. Откроем Правила получения фактических данных.
  3. Посмотрим на таблицу Дополнительные связи.
  4. Убедимся, что измерение регистра-источника (например, "Направление деятельности" из регистра "Выручка и себестоимость продаж") связано с аналитикой статьи бюджета Направление деятельности.

Если связь не настроена, система "не понимает", какое значение НД соответствует конкретной сумме факта, и фильтр в отчете просто будет игнорировать эти данные.

Когда требуется программная доработка

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

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


// Пример логики добавления отбора в структуру параметров отчета
// Это схематичный код, который внедряется в процедуры формирования отчета
Процедура ПриДобавленииОтборовБюджетногоОтчета(СтруктураПараметров, ТекущийОтбор) Экспорт
    
    Если СтруктураПараметров.Свойство("НаправлениеДеятельности") Тогда
        // Добавляем условие в запрос или в коллекцию отборов СКД, 
        // которая используется "под капотом" генератора отчета
        НовыйЭлемент = ТекущийОтбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        НовыйЭлемент.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("НаправлениеДеятельности");
        НовыйЭлемент.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
        НовыйЭлемент.ПравоеЗначение = СтруктураПараметров.НаправлениеДеятельности;
        НовыйЭлемент.Использование = Истина;
    КонецЕсли;
    
КонецПроцедуры

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

Резюме

Для настройки отбора по Направлению деятельности в типовом отчете 1С:ERP рекомендуем следующий алгоритм:

Такой подход позволит вам сохранить отчет на поддержке и избежать сложностей при обновлении конфигурации.

← На главную