СКД (Система Компоновки Данных) – это такая мощная хреновина в 1С с кучей непонятных кнопочек, используемая для интерактивного создания отчетов.
В том случае, если нужна фильтрация записей в запросе по нужным пользователю полям, необходимо использование параметров. Есть пара интересных галочек, отвечающих за обязательное/опциональное использование этих самых параметров.
Колонка Использование=Авто/Всегда
Значение Авто – добавится галочка использованиея параметра. Но при этом, если убрать галочку и попытаться сформировать, то произойдет “Ошибка исполнения отчета”.
Чтобы избавиться от ошибки, в коде запроса надо взять в фигурные скобки условие отбора, в котором этот параметр используется (источник). Тогда, при незаполненном параметре условие с ним будет игнорироваться.
1 |
{ГДЕ ПродажиОбороты.Контрагент В ИЕРАРХИИ(&Контрагенты)} |
Но нельзя использовать в одних скобках условие с более чем одним параметром. Как быть? В условии виртуальной таблицы оставить условие с одним параметром в скобках, а остальные вынести в ГДЕ. Причем для каждого условия сделать отдельное ГДЕ, которое и взять в скобки.
1 2 3 4 |
{ГДЕ ПродажиОбороты.Контрагент В ИЕРАРХИИ(&Контрагенты)} {ГДЕ ПродажиОбороты.Номенклатура.ВидНоменклатуры = &ВидНоменклатуры} |
Но!
Скобки надо добавлять в последний момент, когда отчет уже отлажен. Если после добавления скобок вы откроете запрос в Конструкторе запросов, то он склеит все конструкции ГДЕ в одну. И кстати, условия взятые в фигурные скобки в Конструкторе запроса видны не будут, но сохранятся при перезаписи запроса.
Значение Всегда – параметр будет на форме без галочки.
Колонка Запрещать незаполненные значения=True/False
(работает независимо от колонки Использование)
Значение True – отчет не сформируется, пока в параметре не будет введено какое-то значение (будет подчеркиваться красным).
Значение False – отчет будет формироваться с пустым значением параметра в запросе.
Спасибо большое! Полезная статья