Как правильно настроить фильтрацию по периоду в СКД для нефинансовых показателей в 1С:ERP Бюджетировании

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

При работе с подсистемой бюджетирования в 1С:ERP часто возникает задача получения данных для нефинансовых показателей через произвольные запросы в Системе компоновки данных (СКД). Одной из наиболее распространенных проблем является ситуация, когда отчет в режиме Вид бюджета игнорирует выбранный пользователем период и выводит данные за все время существования системы. Рассмотрим подробно, почему это происходит и как правильно настроить связь между формой бюджета и параметрами вашего запроса.

Анализ механизма получения данных в бюджетировании

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

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

Разбор типичных ошибок в тексте запроса

Посмотрим на пример запроса, который часто вызывает сложности. В нем используются виртуальные таблицы оборотов, но при этом данные «расползаются» по всему периоду:


ВЫБРАТЬ
    СебестоимостьТоваровОбороты.Организация КАК Организация,
    СебестоимостьТоваровОбороты.СтоимостьРасход КАК ЗначениеПоказателя,
    СебестоимостьТоваровОбороты.ПериодДень КАК ПериодДень,
    СебестоимостьТоваровОбороты.ПериодМесяц КАК ПериодМесяц,
    СебестоимостьТоваровОбороты.ПериодГод КАК ПериодГод
ИЗ
    РегистрНакопления.СебестоимостьТоваров.Обороты(&НачалоПериода, &КонецПериода, Авто, ) КАК СебестоимостьТоваровОбороты

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

Шаг 1. Настройка параметров в конструкторе СКД

Выясним, как должны быть настроены параметры на закладке Параметры в конструкторе схемы компоновки данных:

  1. Используйте параметры с именами НачалоПериода и КонецПериода с типом Дата.
  2. Убедитесь, что для них не установлен флаг «Ограничение доступности». Они должны быть видны системе.
  3. Если вы используете тип СтандартныйПериод для удобства отладки в консоли, обязательно настройте выражения для &НачалоПериода и &КонецПериода через этот период (например, &СтандартныйПериод.ДатаНачала), но в самом запросе к виртуальным таблицам используйте именно две отдельные даты.

Шаг 2. Выбор правильных полей периода в запросе

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

Рекомендуется выбирать поле ПериодСекунда (или просто Период для остаточных таблиц) и присваивать ему понятный псевдоним. Рассмотрим измененный вариант запроса:


ВЫБРАТЬ
    СебестоимостьТоваровОбороты.Организация КАК Организация,
    СебестоимостьТоваровОбороты.СтоимостьРасход КАК ЗначениеПоказателя,
    СебестоимостьТоваровОбороты.ПериодСекунда КАК Период
ИЗ
    РегистрНакопления.СебестоимостьТоваров.Обороты(&НачалоПериода, &КонецПериода, Авто, ) КАК СебестоимостьТоваровОбороты

Здесь мы явно получаем дату совершения операции, что критически важно для сопоставления с временной шкалой бюджета.

Шаг 3. Настройка источника данных в 1С:ERP

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

  1. Перейдите на закладку Настройка источника данных.
  2. Нажмите кнопку Заполнить по схеме (или «Обновить состав полей»). Это заставит систему перечитать параметры и поля из вашей СКД.
  3. В таблице сопоставления полей найдите строку, соответствующую периоду. В колонке Поле источника должно быть выбрано ваше поле Период, а в колонке Заполнять из — системное значение периода отчета.
  4. Проверьте, что параметры НачалоПериода и КонецПериода подтянулись в список параметров на этой же форме и связаны с границами периода отчета.

Шаг 4. Особенности оборотных и остаточных показателей

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

Вариант А: Оборотный показатель (за период). Система будет использовать обе границы (&НачалоПериода и &КонецПериода). Это подходит для данных о расходах, продажах или себестоимости. В этом случае мы используем виртуальную таблицу .Обороты.

Вариант Б: Остаточный показатель (на дату). Даже если вы укажете период в отчете, система бюджетирования для такого показателя будет брать данные только на Конец периода. В запросе СКД в таком случае используется таблица .Остатки, а параметр &НачалоПериода часто игнорируется или не используется вовсе.

Почему переименование параметров в «ПериодВыборки» приводит к ошибке?

Как мы видели в обсуждении, попытка использовать конструкцию &ПериодВыборки КАК Период в тексте запроса часто приводит к ошибке «Не задано значение параметра». Это происходит потому, что программный код ERP, формирующий отчет, «не знает», что вы решили переименовать стандартные переменные. Он пытается заполнить параметры с именами, прописанными в коде конфигурации. Если он их не находит, запрос уходит в базу данных с пустыми значениями, что либо вызывает ошибку, либо приводит к выборке всех данных без фильтра. Для анализа и проверки фактически передаваемых параметров запроса можно воспользоваться инструментом для выгрузки динамических запросов бюджетирования.

Итоги и рекомендации

Подведем итог алгоритму действий для исправления проблемы «бесконечного» периода:

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

← На главную