Здравствуйте!
Часто в текстах с запросами в стандартных конфигураций встречаются похожие конструкции:
...ГДЕ ЗарплатаКВыплатеОрганизаций.Организация = &Организация...
Если Организация.Пустая() Тогда
Запрос.Текст= СтрЗаменить(Запрос.Текст, "ГДЕ ЗарплатаКВыплатеОрганизаций.Организация = &Организация", "");
т.е. Если Организация в отборе не указана, то убрать её и из текста условий.
Вопрос: Чем это может быть объяснено, т.к. небольшие изменения в условии запроса - выведут из строя весь запрос алгоритмом замены или не произойдёт сама замена, т.к. между "ГДЕ" и "Зарпла..." может появиться " И ".
Почему не целесообразней использовать следующую конструкцию или её аналог:
ГДЕ (&Организация = &ПустаяОрганизация ИЛИ ЗарплатаКВыплатеОрганизаций.Организация = &Организация)
Запрос.УстановитьПараметр("ПустаяОрганизация", Справочники.Организации.ПустаяСсылка());
Запрос.УстановитьПараметр("Организация", Организация);
Как убрать параметр ПустаяОрганизация и задать это прямо в тексте запроса?
А может есть ещё более изящные конструкции, типа:
ГДЕ 1=1
Если НЕ Организация.Пустая() Тогда
Запрос.Текст= СтрЗаменить(Запрос.Текст, "1=1", "ЗарплатаКВыплатеОрганизаций.Организация = &Организация");