ГДЕ
ВЫБОР
КОГДА АдрПомещения_ФизЛица.ДатаНачала = ДАТАВРЕМЯ(1,1,1)
ТОГДА АдрПомещения_ФизЛица.ДатаНачала <= &ДатаЗапросаКонецМесяцаДата
ИНАЧЕ ИСТИНА
КОНЕЦ И ВЫБОР
КОГДА АдрПомещения_ФизЛица.ДатаОкончание = ДАТАВРЕМЯ(1,1,1)
ТОГДА АдрПомещения_ФизЛица.ДатаОкончание >= &ДатаЗапросаНачалоМесяцаДата
ИНАЧЕ ИСТИНА
КОНЕЦ
(7) вместо ИЛИ я использую в условиях Выбор ...Когда. Уже много раз убеждался, что на больших таблицах - это более эффективно, особенно если разложить ветки КОГДА по приоритету вероятности условий.
(9) Лет пять назад меня тут же по этому поводу поправляли. К сожалению, не могу найти и статью о медленной работе CASE по сравнению с "прямым" сравнением, не гуглится что-то.
Но можно почитать эту статью - https://its.1c.ru/db/v8std#content:658:hdoc.
Там нет подтверждения моим словам полностью, но по крайней мере показывает несостоятельность примера предложенного в (3).
В типовых часто используется динамическая сборка запроса. А если речь про СКД, то условие можно поместить в фигурные скобки, тогда оно будет выполняться, только если параметры заполнены.
(13) Динамической сборки текста запроса нужно, по возможности, избегать. Это затрудняет анализ кода/текста запроса. Когда-то вроде встречал это и в рекомендациях от 1С.
По условиям в СКД поддерживаю.
Если попытаться ещё оптимизировать, то в запросе из (12) можно заменить ДАТАВРЕМЯ(1,1,1) на параметр с пустой датой, чтобы не тратилось время на формирование даты при выполнении самого запроса. (Хотя там должна вроде как срабатывать оптимизация, но один раз, как миниум, datetime будет выполнено.)