Почта: info@105.ooo
Телефон: 8-800-333-6-105
Адрес: Московская область, г. Дубна,
ул. Программистов, дом 4, стр.1

Как в СКД (Система Компоновки Данных) вывести все, если не заполнен параметр запроса

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

Способ 2. Использование условия на уровне отбора СКД
Второй способ — настроить условие на уровне отбора в СКД, чтобы отбор применялся только в случае, когда параметр заполнен.
Шаги для настройки:
1.В настройках СКД перейдите в раздел Отборы.
2.Создайте новый отбор по полю, которое нужно фильтровать, например, "Товар".
3.В качестве условия отбора задайте выражение, проверяющее, задан ли параметр.
Пример выражения:
1C
?(&Товар = НЕОПРЕДЕЛЕНО, Истина, Товар = &Товар)
Как это работает:
  • Если параметр "Товар" не задан (&Товар = НЕОПРЕДЕЛЕНО), то выражение возвращает Истина, и отбор не применяется.
  • Если параметр задан, то применяется условие фильтрации по товару: Товар = &Товар.
Таким образом, условие отбора будет учитываться только тогда, когда параметр задан. Если параметр не указан, фильтр не активируется, и отчет выведет все данные.
НАШИ КОНТАКТЫ
info@105.ooo
Почта:
Московская область, г. Дубна, ул. Программистов, дом 4, стр. 1
Адрес:
Контакты генерального директора
Оводков Василий Юрьевич
Телефон/WhatsApp:
vovodkov@koderline
8-800-333-6-105
Телефон:
Бесплатный звонок
+7 968 948-79-59
Почта: