1. Для кода
используй [code][/code] или
[code=e1cv8][/code]!!!
2. Пиши код аккуратней (отступы) - легче будет разобраться
3. Всю конструкцию
Если НЕ ЗначениеЗаполнено(МОЛ) Тогда
Если ОтобратьПоПустомуМОЛ = Истина Тогда
Запрос.УстановитьПараметр("МОЛ",МОЛ);
...;
Иначе
...;
КонецЕсли;
ИначеЕсли ЗначениеЗаполнено(МОЛ) Тогда
Запрос.УстановитьПараметр("МОЛ",МОЛ);
...;
КонецЕсли;
логичней (для простоты чтения кода) заменить
Если ЗначениеЗаполнено(МОЛ) ИЛИ (ОтобратьПоПустомуМОЛ = Истина) Тогда
Запрос.УстановитьПараметр("МОЛ",МОЛ);
...;
Иначе
...;
КонецЕсли;
4. Строки для замены лучше оформлять как параметры, тогда можно будет легко использовать конструктор запросов. Вместо:
"...
|ГДЕ
| ...
| УсловиеНаМОЛ
| УсловиеНаМестонахождение
|...";
лучше написать
"...
|ГДЕ
| ...
| И &УсловиеНаМОЛ
| И &УсловиеНаМестонахождение
|...";
и тогда:
Если ЗначениеЗаполнено(ПодразделениеОрганизаций) Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&УсловиеНаМестонахождение", "(МестонахождениеОССрезПоследних.Местонахождение = &Местонахождение)");
Запрос.УстановитьПараметр("Местонахождение", ПодразделениеОрганизаций);
Иначе
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&УсловиеНаМестонахождение", "ИСТИНА");
КонецЕсли;
Выполнишь все пожелания - в результате думаю легко будет найти ошибку, ибо тут скорее ошибка от неаккуратности (где-то опечатка или что-то подобное)