|
Не работает Попытка/Исключение | ☑ | ||
---|---|---|---|---|
0
Ivan093
24.01.12
✎
07:47
|
Всем привет!
Кто-нибудь сталкивался с таким: платформа 8.2.13.219, в обработке используется соединение со сторонней базой sql через ado. Дак вот если есть ошибка при выполнении запроса, например таймаут, то несмотря на код, обернутый в Попытку/Исключение, все равно 1с выдает ошибку и выполнение кода останавливается. Можно это как-нибудь побороть? |
|||
1
DrShad
24.01.12
✎
07:48
|
а код где?
|
|||
2
Ivan093
24.01.12
✎
07:51
|
Вот код:
Функция ВыполнитьЗапросКМонитору(ТекстЗапроса) Экспорт RecordSet = Новый COMОбъект("ADODB.RecordSet"); RecordSet.CursorType = 1; //ctOpenForwardOnly RecordSet.CursorLocation = 1; //clUseClient ПодключениеМонитора = Новый COMObject("ADODB.Connection"); ПодключениеМонитора.ConnectionString = мПараметрыПодключения.СтрокаПодключения; //ПодключениеМонитора.KeepConnection = true; ПодключениеМонитора.ConnectionTimeout = 120; ПодключениеМонитора.CommandTimeout = 300; ПодключениеМонитора.CursorLocation = 3; Попытка ПодключениеМонитора.Open(); СоединениеУстановлено = Истина; Исключение #Если Клиент Тогда Сообщить("Не удалось подключиться к базе монитора!", СтатусСообщения.Внимание); Сообщить(ОписаниеОшибки()); #КонецЕсли СоединениеУстановлено = Ложь; КонецПопытки; Если НЕ СоединениеУстановлено Тогда Возврат RecordSet; КонецЕсли; Command = Новый COMОбъект("ADODB.Command"); Command.ActiveConnection = ПодключениеМонитора; Command.CommandText = ТекстЗапроса; Попытка RecordSet = Command.Execute(); Исключение #Если Клиент Тогда Сообщить("Не удалось выполнить запрос к базе монитора!", СтатусСообщения.Внимание); Сообщить(ОписаниеОшибки()); RecordSet = Новый COMОбъект("ADODB.RecordSet"); #КонецЕсли КонецПопытки; Возврат RecordSet; КонецФункции |
|||
3
Ivan093
24.01.12
✎
07:52
|
База файловая пока.
|
|||
4
Ivan093
24.01.12
✎
07:53
|
Несмотря ан то, что RecordSet = Command.Execute(); находится в попытке, 1с выдает ошибку при таймауте, а такие ситуации бывают...
|
|||
5
Ivan093
24.01.12
✎
07:54
|
По логике, при ошибке выполнения запроса, мне надо вернуть пустой RecordSet.
|
|||
6
Ivan093
24.01.12
✎
07:55
|
Пробовал обернуть вызов функции в попытку -- такая же ситуация:
Попытка ВыполнитьЗапросКМонитору(ТекстЗапроса); Исключение КонецПопытки |
|||
7
Рэйв
24.01.12
✎
08:05
|
(4)сообщение о таймауте тебе скуль пишет.А 1С видимо это не воспринимает как ошибку. Ну вышло время ожидания да вышло, типа ничего критичного.
|
|||
8
Ivan093
24.01.12
✎
08:27
|
(7) хм, похоже на то, если так то плохо...
|
|||
9
Ivan093
24.01.12
✎
08:28
|
Хотя с другой стороны, сообщение то от скуля попадает в 1С не просто же так...
|
|||
10
Ivan093
24.01.12
✎
08:29
|
У кого есть ado в обработках, попробуйте, у вас так же будет?
|
|||
11
Alex375
24.01.12
✎
08:38
|
Есть подобная же проблема на платформе 2.14.540... Пока не знаю где копать. :(
|
|||
12
Alex375
24.01.12
✎
08:39
|
Правда подключаюсь не к SQL, а к другой 1С базе по COM-соединению. Так что думаю суть не в том, что SQL вызывает ошибку.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |