Как правильно настроить параметр даты в СКД для получения остатков на начало месяца?

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

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

Рассмотрим, как правильно настроить параметры, чтобы избежать ошибок и получить корректный результат.

Основные принципы работы с параметрами в СКД

Многие разработчики совершают ошибку, пытаясь использовать конструкцию {&Дата} внутри текста запроса. Важно понимать, что фигурные скобки в запросе СКД предназначены для реализации механизма «автозаполнения» параметров и отборов, но они не являются способом прямого обращения к параметрам виртуальной таблицы. Для того чтобы параметр корректно передавался в виртуальную таблицу, он должен быть объявлен стандартным способом.

Пошаговая настройка параметров для получения остатков

Чтобы отчет работал корректно, пройдем по этапам настройки схемы компоновки данных:

  1. Определение параметра в тексте запроса: Используйте стандартный синтаксис обращения к виртуальной таблице. Вместо попыток использовать сложные конструкции, просто укажите именованный параметр.
    
    ВЫБРАТЬ
        СвободныеОстаткиОстатки.Номенклатура КАК Номенклатура,
        СвободныеОстаткиОстатки.Склад КАК Склад,
        СвободныеОстаткиОстатки.ВНаличииОстаток КАК ВНаличииОстаток
    ИЗ
        РегистрНакопления.СвободныеОстатки.Остатки(&НачалоМесяца, ) КАК СвободныеОстаткиОстатки
    
  2. Настройка параметров на вкладке «Параметры»: После того как вы написали текст запроса, перейдите на закладку «Параметры» в конструкторе СКД. Система автоматически увидит параметр &НачалоМесяца.
    • Убедитесь, что тип данных для параметра установлен как Дата.
    • Если вы хотите, чтобы пользователь не выбирал этот параметр вручную, а он вычислялся автоматически, установите флаг Ограничение доступности.
  3. Вычисление значения через выражение: Чтобы автоматически получать начало месяца, используйте функционал выражений параметров СКД.

    Создайте параметр Период (например, типа СтандартныйПериод), который будет доступен пользователю. Затем в настройках параметра НачалоМесяца в поле Выражение пропишите формулу: НачалоПериода(&Период.ДатаНачала, "Месяц"). Это позволит системе автоматически подставлять нужное значение в виртуальную таблицу.

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

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

Также обратите внимание на Стандартные периоды. Если вы используете параметр Период, который содержит в себе и начало, и конец периода, помните, что виртуальная таблица Остатки принимает только одну дату. Передача интервала вызовет ошибку. Поэтому промежуточное вычисление через функцию НачалоПериода() — это единственный надежный способ «подружить» пользовательский выбор с требованиями виртуальной таблицы.

Рекомендации по оптимизации

Для повышения производительности отчета придерживайтесь следующих правил:

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

← На главную