Приветствую!
Народ, никому не встречался такой баг, или хрен знает, может я не понимаю чего-то, уже забыл когда работал последний раз с штатным объектом "Запрос". Вообщем, прислал пользователь ошибку сегодня, ругается на текст запроса при выполнении запроса через штатный объект. Проверил, все работает. Оказывается, пользователь открывал внешний отчет, в котором возникла ошибка при выполении запроса. После этой ошибки первый запуск любого другого запроса(правильного!) тоже выдает ошибку. Например:
Процедура Сформировать()
гНачДата = '01.01.2013';
гКонДата = '01.01.2013';
Если фОшибка = 1 Тогда
Сообщить("1111111111111111111111111111111111");
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса = "
|Обрабатывать Все;
|Период с гНачДата по гКонДата;
|ОбрабатыватьДокументы Все;
|Док = Документ..ТекущийДокумент;
|Группировка Док упорядочить по Док.ДатаДок;
|";
Если Запрос.Выполнить(ТекстЗапроса) = 0 тогда
Предупреждение("Запрос не выполнен!");
Возврат;
КонецЕсли;
КонецЕсли;
Сообщить("2222222222222222222222222222222222222222");
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса = "
|Обрабатывать Все;
|Период с гНачДата по гКонДата;
|ОбрабатыватьДокументы Все;
|Док = Документ.РасходнаяНакладная.ТекущийДокумент;
|Группировка Док упорядочить по Док.ДатаДок;
|";
Если Запрос.Выполнить(ТекстЗапроса) = 0 тогда
Предупреждение("Запрос не выполнен!");
Возврат;
КонецЕсли;
КонецПроцедуры
На форму вывести флажок "фОшибка, ну и кнопка "сформировать"".
1) запускаем с флажком фОшибка = 1, получаем ошибку, выполнение останавливается на первом "Если Запрос.Выполнить(ТекстЗапроса) = 0 тогда". Все правильно.
2) убираем флажок, выполяем код, опять получаем ошибку, уже на правильном запросе. Хотя ее там как я понимаю быть не должно
3) без флажка запускаем еще раз, все ок, выполняется запрос без ошибки. А только что на нем же имели ошибку.
Че это такое?