Вход | Регистрация

1С:Предприятие ::

Метки: 

Очистка переменной с типом "РезультатЗапроса"

Я
   SkAt
 
15.09.18 - 16:24
Добрый день! Как очистить переменную с типом "РезультатЗапроса"? Ну вот понадобилось! Прехватываю через расширение и чтобы дальше выборка не выполнялась, мне нужно ее вычистить. Как?
Пример:
Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ...";
Результат=Запрос.Выполнить();
//именно в этом месте "Результат" сделать пустым

Выборка=Результат.Выбрать();
Пока Выборка.Следующий() Цикл...

Заранее спасибо!
 
 
   AneJIbcuH
 
1 - 15.09.18 - 16:29
(0) Может пустым запросом переопределить её? Т.е. ты хочешь, чтобы дальше код продолжился, но ошибку не вывалил?
   SkAt
 
2 - 15.09.18 - 16:32
(1) ДА, именно при Выборке идет вывод ошибки. Мне требуется этого избежать. А есть пример адекватного заведомо пустого запроса? А то у меня так:

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
ЗаказКлиента.Ссылка КАК Ссылка
ИЗ
Документ.ЗаказКлиента КАК ЗаказКлиента
ГДЕ
ЗаказКлиента.Номер = ""Хрень""";
РезультатЗапроса = Запрос.Выполнить();
   МимохожийОднако
 
3 - 15.09.18 - 16:34
(2) Ошибка какая?
   RomanYS
 
4 - 15.09.18 - 16:35
"ВЫБРАТЬ 0 ГДЕ Ложь"

Но тебе нужно точно не это (запрос с пустым результатом).
   SkAt
 
5 - 15.09.18 - 16:36
(3) Это роли не играет. В целом идет проверка получения предоплаты по заказу клиента. Если предоплаты нет и обеспечение "Отгрузить" тогда ошибка. Клиент хочет у услуг эту проверку убрать.
   SkAt
 
6 - 15.09.18 - 16:38
(4) Проверим сейчас.... Почему бы и нет?
   МимохожийОднако
 
7 - 15.09.18 - 16:39
(5) Если есть "ошибка", то надо её исправить, СкрытныйТыНаш. Вместо пустого результат возвращай Неопределено.
   SkAt
 
8 - 15.09.18 - 16:42
(7) Мы понимаем, что об ошибках нас предупреждают не просто так. А клиент хочет. У Неопределено нет метода "Выбрать()". Так что не катит... Но спс.
   AneJIbcuH
 
9 - 15.09.18 - 16:44
(5) Тогда вообще не понятно, что ты там делаешь...
   МимохожийОднако
 
10 - 15.09.18 - 16:44
(8) Добавь после Выбрать() метод Прервать()
 
 Рекламное место пустует
   SkAt
 
11 - 15.09.18 - 16:47
(10) Вот процедура, в нее передается результат запроса:

Процедура СообщитьОбОшибкахПроведенияПоРегиструРасчетыСКлиентами(Объект, Отказ, РезультатЗапроса)

    ШаблонСообщения = НСтр("ru = 'Нарушены условия оплаты, необходимые для обеспечения/отгрузки по заказу %Заказ%,
        |Требуется %СуммаЗаказа% %Валюта% оплачено %СуммаОплаты% %Валюта%'");

    Выборка = РезультатЗапроса.Выбрать();
    Пока Выборка.Следующий() Цикл

        ТекстСообщения = СтрЗаменить(ШаблонСообщения, "%Заказ%",      Строка(Выборка.ЗаказКлиента));
        ТекстСообщения = СтрЗаменить(ТекстСообщения, "%Валюта%",      Строка(Выборка.Валюта));
        ТекстСообщения = СтрЗаменить(ТекстСообщения, "%СуммаЗаказа%", Строка(Выборка.СуммаЗаказа));
        ТекстСообщения = СтрЗаменить(ТекстСообщения, "%СуммаОплаты%", Строка(Выборка.СуммаОплаты));

        ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения, Объект, ,, Отказ);

    КонецЦикла;

КонецПроцедуры

И есть расширение, где с директивой "Перед" у этой процедуры, я подменяю значение результат запроса и передаю выполнение основной процедуре. Т.к. конфа на поддержке - в нее не залезешь. И Прервать; не получится
   SkAt
 
12 - 15.09.18 - 16:54
Просто изначально хотел узнать: есть стандартный метод типа как у таблиц ТЗ.Очистить();?? А то переопределять запросом как-то неэтетично))
   МимохожийОднако
 
13 - 15.09.18 - 16:57
Сделай ВМЕСТО  с копированием нужного кода
   SkAt
 
14 - 15.09.18 - 17:04
(13) Разницы нет: ВМЕСТО, ПЕРЕД, ПОСЛЕ в данном случае. В идеале нужно просто чтобы эта процедура НЕ выполнялась, т.к. именно в ней Отказ в истину возводится и сообщение выводится.
   МимохожийОднако
 
15 - 15.09.18 - 17:06
(14) Тогда иди в предыдущую процедуру, которая "ненужную" процедуру вызывает
   SkAt
 
16 - 15.09.18 - 17:06
В общем, ставлю как (4):

&Перед
Процедура СообщитьОбОшибкахПроведенияПоРегиструРасчетыСКлиентами(Объект, Отказ, РезультатЗапроса)

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ 0 ГДЕ Ложь";
РезультатЗапроса = Запрос.Выполнить();

КонецПроцедуры

Всем спасибо!
   SkAt
 
17 - 15.09.18 - 17:07
(15) В предыдущей море других ошибок обрабатывается. И в типовой код не залезешь, там вообще без вариантов.


Список тем форума
Рекламное место пустует Рекламное место пустует
AdBlock убивает бесплатный контент. 1Сергей
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует