|
Очистка переменной с типом "РезультатЗапроса" | ☑ | ||
---|---|---|---|---|
0
SkAt
15.09.18
✎
16:24
|
Добрый день! Как очистить переменную с типом "РезультатЗапроса"? Ну вот понадобилось! Прехватываю через расширение и чтобы дальше выборка не выполнялась, мне нужно ее вычистить. Как?
Пример: Запрос=Новый Запрос; Запрос.Текст="ВЫБРАТЬ..."; Результат=Запрос.Выполнить(); //именно в этом месте "Результат" сделать пустым Выборка=Результат.Выбрать(); Пока Выборка.Следующий() Цикл... Заранее спасибо! |
|||
1
AneJIbcuH
15.09.18
✎
16:29
|
(0) Может пустым запросом переопределить её? Т.е. ты хочешь, чтобы дальше код продолжился, но ошибку не вывалил?
|
|||
2
SkAt
15.09.18
✎
16:32
|
(1) ДА, именно при Выборке идет вывод ошибки. Мне требуется этого избежать. А есть пример адекватного заведомо пустого запроса? А то у меня так:
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ ЗаказКлиента.Ссылка КАК Ссылка ИЗ Документ.ЗаказКлиента КАК ЗаказКлиента ГДЕ ЗаказКлиента.Номер = ""Хрень"""; РезультатЗапроса = Запрос.Выполнить(); |
|||
3
Мимохожий Однако
15.09.18
✎
16:34
|
(2) Ошибка какая?
|
|||
4
RomanYS
15.09.18
✎
16:35
|
"ВЫБРАТЬ 0 ГДЕ Ложь"
Но тебе нужно точно не это (запрос с пустым результатом). |
|||
5
SkAt
15.09.18
✎
16:36
|
(3) Это роли не играет. В целом идет проверка получения предоплаты по заказу клиента. Если предоплаты нет и обеспечение "Отгрузить" тогда ошибка. Клиент хочет у услуг эту проверку убрать.
|
|||
6
SkAt
15.09.18
✎
16:38
|
(4) Проверим сейчас.... Почему бы и нет?
|
|||
7
Мимохожий Однако
15.09.18
✎
16:39
|
(5) Если есть "ошибка", то надо её исправить, СкрытныйТыНаш. Вместо пустого результат возвращай Неопределено.
|
|||
8
SkAt
15.09.18
✎
16:42
|
(7) Мы понимаем, что об ошибках нас предупреждают не просто так. А клиент хочет. У Неопределено нет метода "Выбрать()". Так что не катит... Но спс.
|
|||
9
AneJIbcuH
15.09.18
✎
16:44
|
(5) Тогда вообще не понятно, что ты там делаешь...
|
|||
10
Мимохожий Однако
15.09.18
✎
16:44
|
(8) Добавь после Выбрать() метод Прервать()
|
|||
11
SkAt
15.09.18
✎
16:47
|
(10) Вот процедура, в нее передается результат запроса:
Процедура СообщитьОбОшибкахПроведенияПоРегиструРасчетыСКлиентами(Объект, Отказ, РезультатЗапроса) ШаблонСообщения = НСтр("ru = 'Нарушены условия оплаты, необходимые для обеспечения/отгрузки по заказу %Заказ%, |Требуется %СуммаЗаказа% %Валюта% оплачено %СуммаОплаты% %Валюта%'"); Выборка = РезультатЗапроса.Выбрать(); Пока Выборка.Следующий() Цикл ТекстСообщения = СтрЗаменить(ШаблонСообщения, "%Заказ%", Строка(Выборка.ЗаказКлиента)); ТекстСообщения = СтрЗаменить(ТекстСообщения, "%Валюта%", Строка(Выборка.Валюта)); ТекстСообщения = СтрЗаменить(ТекстСообщения, "%СуммаЗаказа%", Строка(Выборка.СуммаЗаказа)); ТекстСообщения = СтрЗаменить(ТекстСообщения, "%СуммаОплаты%", Строка(Выборка.СуммаОплаты)); ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения, Объект, ,, Отказ); КонецЦикла; КонецПроцедуры И есть расширение, где с директивой "Перед" у этой процедуры, я подменяю значение результат запроса и передаю выполнение основной процедуре. Т.к. конфа на поддержке - в нее не залезешь. И Прервать; не получится |
|||
12
SkAt
15.09.18
✎
16:54
|
Просто изначально хотел узнать: есть стандартный метод типа как у таблиц ТЗ.Очистить();?? А то переопределять запросом как-то неэтетично))
|
|||
13
Мимохожий Однако
15.09.18
✎
16:57
|
Сделай ВМЕСТО с копированием нужного кода
|
|||
14
SkAt
15.09.18
✎
17:04
|
(13) Разницы нет: ВМЕСТО, ПЕРЕД, ПОСЛЕ в данном случае. В идеале нужно просто чтобы эта процедура НЕ выполнялась, т.к. именно в ней Отказ в истину возводится и сообщение выводится.
|
|||
15
Мимохожий Однако
15.09.18
✎
17:06
|
(14) Тогда иди в предыдущую процедуру, которая "ненужную" процедуру вызывает
|
|||
16
SkAt
15.09.18
✎
17:06
|
В общем, ставлю как (4):
&Перед Процедура СообщитьОбОшибкахПроведенияПоРегиструРасчетыСКлиентами(Объект, Отказ, РезультатЗапроса) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ 0 ГДЕ Ложь"; РезультатЗапроса = Запрос.Выполнить(); КонецПроцедуры Всем спасибо! |
|||
17
SkAt
15.09.18
✎
17:07
|
(15) В предыдущей море других ошибок обрабатывается. И в типовой код не залезешь, там вообще без вариантов.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |