Отчет на СКД: не использовать фильтры по параметрам, которые не заданы (несколько независимых параметров)

1. native-api 16.01.23 14:07 Сейчас в теме
Необходимо иметь возможность создавать отчет с необязательной фильтрацией по параметрам. В имеющемся отчете задана только схема компоновки данных.

Для параметров заданы соотв. типы. Значения по умолчанию пробовал задавать или не задавать -- как в "Параметры", так и "Настройки->Параметры" (илл. 1,2). Для поля подразделенния значение по умолчанию выбирал либо "ПустаяСсылка" соотв. справочника, либо ничего.

При выборе в форме только одного параметра (илл. 3), в зависимости от варианта ниже, либо отчет получается пустым, либо возникает ошибка "Не задано значение параметра <параметр>".

---

Найденная информация и опробованные варианты:
* https://www.mykib.org/article/1s8-primenenie-neobyazatelnyh-parametrov-otcheta-v-skd-isklyuchenie-oshibki-pri-ispolnenii, http://forum.infostart.ru/forum9/topic122169/message1270859/#message1270859 -- заключать всё условие фильтрации по параметрам в фигурные скобки.

{ГДЕ
	(Сотрудники.Подразделение В ИЕРАРХИИ (&ГоловноеПодразделение)),
	(ГОД(ЗаданиеНаРаботу.ДатаВыполненияРабот) = &Год)}


Такое условие исключается только если ВСЕ параметры не заданы. Задание своего блока "{ГДЕ}" для каждого параметра ничего не меняет.

* https://wiki.programstore.ru/1s-skd-parametry-i-neobyazatelnye-parametry/ -- не указывать "Псевдоним" в конструкторе отчета в "Компоновка данных->Условия" (нужно удалить псевдонимы, сгенерированные UI конструктора) -- в варианте выше убирает ошибку "поле не заполнено", если какой-то из параметров не выбран, но на применение/неприменение условий не влияет.

* http://forum.infostart.ru/forum9/topic122169/message1270946/#message1270946 -- short-circuit условие

ГДЕ
	ВЫБОР КОГДА &ГоловноеПодразделение = ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка)
		ТОГДА ИСТИНА ИНАЧЕ Сотрудники.Подразделение В ИЕРАРХИИ (&ГоловноеПодразделение) КОНЕЦ


или

ГДЕ
	(&ГоловноеПодразделение = ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка)
			ИЛИ Сотрудники.Подразделение В ИЕРАРХИИ (&ГоловноеПодразделение))


ошибка "Не задано значение параметра".

* Выбирать в запросе всё, а фильтрацию делать в настройках отбора.

Невозможно. В отборе нельзя сравнивать с параметром, а только с явно заданным конкретным значением (илл. 4).

* http://forum.infostart.ru/forum9/topic122169/message1270969/#message1270969 -- редактировать программную логику формирования отчета: менять схему компоновки в зависимости от параметров. В сообщении предлагается добавлять отбор, но, видимо, можно и изменить текст запроса.

Не смог это попробовать, т.к.

* в "голом" отчете на СКД нет никакого кода, нечего редактировать. (Эта тема, видимо, обширная, достаточно ссылки на релевантный материал, как кастомизировать отчеты на СКД.)
* У отчета, сгенерированного по СКД, вообще нет ни форм, ни модулей, ни даже обработчиков в св-вах, редактировать/переопределять нечего. Каких-то примеров переопределения логики для вставки в модуль объекта также не нагуглил.
* Насколько вижу, в моем случае для "голого" отчета используется общая форма "ФормаОтчета" из БСП, указанная в "Конфигурация->Свойства->Основная форма отчета", и логика формирования находится в модуле этой формы. Из логики этого модуля я также не могу ничего переопределить в своем отчете, т.к. при создании в отчете своей формы создается совсем другая, независимая форма, никак не связанная с общей. Более того, у стандартных кнопок командной панели этой новой формы нет никаких св-в, и у формы нет никаких релевантных генерации отчета событий и никаких команд -- опять переопределять нечего!
* Непонятно, как проверять, что параметр не выбран. "ЗначениеЗаполнено(<Реквизит формы>)" проверяет, что указано в соотв. поле ввода, но меня интересует не оно, а галка рядом с ним. В форме названия полей/реквизитов посмотреть не могу, т.к. эти поля автогенерируемые.
Прикрепленные файлы:
По теме из базы знаний
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. DBV 16.01.23 15:10 Сейчас в теме
(1) а если сделать так:
в запрос добавить условие
{ГДЕ
    Сотрудники.Подразделение,
    (ГОД(ЗаданиеНаРаботу.ДатаВыполненияРабот)) КАК ГодДатыВыполненияРабот}

затем в настройках СКД добавить в отбор эти поля
для подразделения ВидСравнения = В группе
для года - Равно
и ещё в наборе данных для поля ГодДатыВыполненияРабот установить формат редактирования ЧГ=0
после этого включить эти отборы в пользовательские настройки
3. native-api 16.01.23 16:41 Сейчас в теме
Попробовав, вспомнил, что через настройки отбора я тоже уже пробовал.

В настройках отбора нельзя сравнивать с параметром, только с константой (см. илл.).

(Добавил эту инфу в исходное сообщение.)
Прикрепленные файлы:
4. SlavaKron 17.01.23 10:33 Сейчас в теме
(1)
Задание своего блока "{ГДЕ}" для каждого параметра ничего не меняет.
Проверьте еще раз, это должно работать.
5. native-api 18.01.23 16:51 Сейчас в теме
Сработал вариант

{ГДЕ
    (Сотрудники.Подразделение В ИЕРАРХИИ (&ГоловноеПодразделение)),
    (ГОД(ЗаданиеНаРаботу.ДатаВыполненияРабот) = &Год)}


Когда я в "Параметры" для подразделения выбрал значением по умолчанию не ничего и не ПустаяСсылка, а пустую строку (отображается как "<Пустое значение>") (см. илл.)
(4)
Прикрепленные файлы:
Оставьте свое сообщение
Вакансии
Консультант 1С ERP
Москва
зарплата от 200 000 руб. до 250 000 руб.
Полный день

Аналитик 1C
Москва
зарплата от 200 000 руб. до 240 000 руб.
Полный день

Старший программист 1С
Москва
зарплата от 120 000 руб. до 250 000 руб.
Полный день

Руководитель группы разработки 1С
Москва
зарплата от 500 000 руб.
Полный день

Разработчик 1С (от middle до senior), до 300 К gross
Санкт-Петербург
зарплата от 195 000 руб. до 300 000 руб.
Полный день