Необходимо иметь возможность создавать отчет с необязательной фильтрацией по параметрам. В имеющемся отчете задана только схема компоновки данных.
Для параметров заданы соотв. типы. Значения по умолчанию пробовал задавать или не задавать -- как в "Параметры", так и "Настройки->Параметры" (илл. 1,2). Для поля подразделенния значение по умолчанию выбирал либо "ПустаяСсылка" соотв. справочника, либо ничего.
При выборе в форме только одного параметра (илл. 3), в зависимости от варианта ниже, либо отчет получается пустым, либо возникает ошибка "Не задано значение параметра <параметр>".
{ГДЕ
(Сотрудники.Подразделение В ИЕРАРХИИ (&ГоловноеПодразделение)),
(ГОД(ЗаданиеНаРаботу.ДатаВыполненияРабот) = &Год)}
Такое условие исключается только если ВСЕ параметры не заданы. Задание своего блока "{ГДЕ}" для каждого параметра ничего не меняет.
* https://wiki.programstore.ru/1s-skd-parametry-i-neobyazatelnye-parametry/ -- не указывать "Псевдоним" в конструкторе отчета в "Компоновка данных->Условия" (нужно удалить псевдонимы, сгенерированные UI конструктора) -- в варианте выше убирает ошибку "поле не заполнено", если какой-то из параметров не выбран, но на применение/неприменение условий не влияет.
ГДЕ
ВЫБОР КОГДА &ГоловноеПодразделение = ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка)
ТОГДА ИСТИНА ИНАЧЕ Сотрудники.Подразделение В ИЕРАРХИИ (&ГоловноеПодразделение) КОНЕЦ
или
ГДЕ
(&ГоловноеПодразделение = ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка)
ИЛИ Сотрудники.Подразделение В ИЕРАРХИИ (&ГоловноеПодразделение))
ошибка "Не задано значение параметра".
* Выбирать в запросе всё, а фильтрацию делать в настройках отбора.
Невозможно. В отборе нельзя сравнивать с параметром, а только с явно заданным конкретным значением (илл. 4).
* в "голом" отчете на СКД нет никакого кода, нечего редактировать. (Эта тема, видимо, обширная, достаточно ссылки на релевантный материал, как кастомизировать отчеты на СКД.)
* У отчета, сгенерированного по СКД, вообще нет ни форм, ни модулей, ни даже обработчиков в св-вах, редактировать/переопределять нечего. Каких-то примеров переопределения логики для вставки в модуль объекта также не нагуглил.
* Насколько вижу, в моем случае для "голого" отчета используется общая форма "ФормаОтчета" из БСП, указанная в "Конфигурация->Свойства->Основная форма отчета", и логика формирования находится в модуле этой формы. Из логики этого модуля я также не могу ничего переопределить в своем отчете, т.к. при создании в отчете своей формы создается совсем другая, независимая форма, никак не связанная с общей. Более того, у стандартных кнопок командной панели этой новой формы нет никаких св-в, и у формы нет никаких релевантных генерации отчета событий и никаких команд -- опять переопределять нечего!
* Непонятно, как проверять, что параметр не выбран. "ЗначениеЗаполнено(<Реквизит формы>)" проверяет, что указано в соотв. поле ввода, но меня интересует не оно, а галка рядом с ним. В форме названия полей/реквизитов посмотреть не могу, т.к. эти поля автогенерируемые.
{ГДЕ
(Сотрудники.Подразделение В ИЕРАРХИИ (&ГоловноеПодразделение)),
(ГОД(ЗаданиеНаРаботу.ДатаВыполненияРабот) = &Год)}
Когда я в "Параметры" для подразделения выбрал значением по умолчанию не ничего и не ПустаяСсылка, а пустую строку (отображается как "<Пустое значение>") (см. илл.)
(4)
{ГДЕ
Сотрудники.Подразделение,
(ГОД(ЗаданиеНаРаботу.ДатаВыполненияРабот)) КАК ГодДатыВыполненияРабот}
затем в настройках СКД добавить в отбор эти поля
для подразделения ВидСравнения = В группе
для года - Равно
и ещё в наборе данных для поля ГодДатыВыполненияРабот установить формат редактирования ЧГ=0
после этого включить эти отборы в пользовательские настройки
{ГДЕ
(Сотрудники.Подразделение В ИЕРАРХИИ (&ГоловноеПодразделение)),
(ГОД(ЗаданиеНаРаботу.ДатаВыполненияРабот) = &Год)}
Когда я в "Параметры" для подразделения выбрал значением по умолчанию не ничего и не ПустаяСсылка, а пустую строку (отображается как "<Пустое значение>") (см. илл.)
(4)