|

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


Содержание:

1. Как использовать ЕСЛИ в условии фильтра в 1С

2. Как использовать условие на уровне отбора СКД при использовании программы 1С

Предположим, что у нас есть отчет по продажам товаров, и в фильтре предусмотрен параметр выбора конкретного товара. Если пользователь выбрал товар — отчет должен отобразить продажи этого товара. Если товар не выбран — должны быть показаны продажи всех товаров.

Пример параметра:

  • Параметр: Товар
  • Тип: Справочник.Ссылка.Номенклатура
  • Значение по умолчанию: Не указано

Проблема:

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

Существует несколько методов для решения этой задачи в СКД.

Как использовать ЕСЛИ в условии фильтра в 1С

Способ 1. Использование ЕСЛИ в условии фильтра

Первый способ заключается в том, чтобы динамически формировать условие фильтра в зависимости от того, заполнен ли параметр. Для этого можно использовать функцию ЕСЛИ в тексте запроса.

ВЫБРАТЬ

    Продажи.Товар,

    Продажи.Количество,

    Продажи.Сумма

ИЗ

    Документ.ПродажаТоваров КАК Продажи

ГДЕ

    (Продажи.Товар = &Товар ИЛИ &Товар = НЕОПРЕДЕЛЕНО)

В данном запросе используется логика:

  • Если параметр Товар заполнен, то фильтрация будет происходить по конкретному товару (Продажи.Товар = &Товар).
  • Если параметр Товар не заполнен, то условие фильтрации не применяется, так как &Товар = НЕОПРЕДЕЛЕНО вернет истину для всех строк.

Это позволяет вывести все данные, если параметр не был указан.

Как использовать условие на уровне отбора СКД при использовании программы 1С

Способ 2. Использование условия на уровне отбора СКД

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

Шаги:

  1. Откройте настройки СКД и перейдите в раздел Отборы.
  2. Создайте новый отбор по полю, которое нужно фильтровать, например, Товар.
  3. В качестве условия отбора задайте выражение, которое проверяет, заполнен ли параметр.

?(&Товар = НЕОПРЕДЕЛЕНО, Истина, Товар = &Товар)

Здесь используется тернарная операция:

  • Если параметр Товар не задан (&Товар = НЕОПРЕДЕЛЕНО), то отбор не применяется (Истина).
  • Если параметр задан, то будет применяться условие фильтрации по товару (Товар = &Товар).

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

Специалист компании ООО “Кодерлайн”,

Дубровина Елена


Помогла ли вам статья? Оставьте свой комментарий:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Блог про 1С:Предприятие

Copyright © 2024 TopKoder

Мы занимаемся внедрением и обслуживанием программных продуктов 1С.