Как отловить результат выполнения хранимой процедуры sql???

1. my_work_ksv@mail.ru 06.12.17 11:31 Сейчас в теме
Все интернеты перерыл!!!!

Как в 1с отловить результат выполнения хранимой процедуры???

Некая обработка выполняет следующий код:


Connection = Новый COMОбъект("ADODB.Connection");
	
	Catalog = Новый COMОбъект("ADOX.Catalog");  
	
	Command = Новый COMОбъект("ADODB.Command");
	Command.CommandTimeOut = 600;
	
	Попытка
		Catalog.ActiveConnection = СтрокаСоединение;
		Connection.Open(СтрокаСоединение);
		Command.ActiveConnection = Connection;	  
	Исключение
		СообщениеОбОшибке = "Не удалось соединиться c мобильной базой: " + СтрокаСоединение + ". " + ОписаниеОшибки();
		ВызватьИсключение СообщениеОбОшибке;
	КонецПопытки;
	
	
	
	Command.CommandText = СтрокаЗапроса;
		
		
	РезультатВыполнения = Command.Execute();  
Показать



Код стандартный. Хотелось бы в переменной "РезультатВыполнения" увидеть результат выполнения процедуры (успех или код ошибки).



P.S. Когда запускаем текст нашей хранимой процедуры в консоли SQL сервера = она возращает (-1)..типа успешно выполнена.


как эту минус единицу получить в 1С?


Заранее спасибо за подсказки.
+
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. ImHunter 315 06.12.17 11:59 Сейчас в теме
(1) Прочитать значение Command.Parameters(0).Value. Может я немного ошибаюсь в синтаксисе. Смысл в том, что нужно первым (нулевым) параметром идет результат выполнения ХП.
my_work_ksv@mail.ru; +1
4. my_work_ksv@mail.ru 07.12.17 07:19 Сейчас в теме
Путь верный....но коллекция Command.Parameters пуста....(((

Вычитал в интернетах, что можно:

1. Создать параметр с типом ReturnValue (в параметр такого типа автоматически вернется ретурн хранимой процедуры).

2. Передать его на вход ХП.

3. А после ее выполнения его прочитать.


CreateParameter (Name, Type, Direction, Size, Value)


"Direction" в нашем случае ставлю равным 4 (Indicates that the parameter represents a return value.)

"Type" = 3 (Indicates a four-byte signed integer)


Param1 = Command.CreateParameter("RETURN_VALUE", 3, 4, , NULL);
Command.Parameters.Append(Param1);

RecordSet = Command.Execute();

RETURN_VALUE = Command.Parameters("RETURN_VALUE").Value;


В отладчие RETURN_VALUE = Неопределено ((((
+
5. ImHunter 315 07.12.17 07:26 Сейчас в теме
(4) Для команды нужно CommandType установить с указанием, что это выполнение ХП. Вроде CommandType=4 должно быть. Тогда в Command.CommandText нужно передавать имя ХП, а параметры передавать через коллекцию Command.Parameters
+
6. my_work_ksv@mail.ru 07.12.17 11:07 Сейчас в теме
Когда ставлю "Command.CommandType = 4" - процедура сыпется....((((
+
7. ImHunter 315 07.12.17 11:10 Сейчас в теме
(6) Чего говорит-то?
+
8. my_work_ksv@mail.ru 08.12.17 08:31 Сейчас в теме
Вод листинг фукнции:

Попытка
	
	Connection = Новый COMОбъект("ADODB.Connection");
	Catalog    = Новый COMОбъект("ADOX.Catalog");  
	Command    = Новый COMОбъект("ADODB.Command");
	
	Попытка
		Catalog.ActiveConnection = СтрокаСоединение;
		Connection.Open(СтрокаСоединение);
		Command.ActiveConnection = Connection;	  
	Исключение
		СообщениеОбОшибке = "Не удалось соединиться c мобильной базой: " + СтрокаСоединение + ". " + ОписаниеОшибки();
		ВызватьИсключение СообщениеОбОшибке;
	КонецПопытки;
	
	Command.CommandTimeOut = 600;
	Command.CommandType    = 4;
	Command.CommandText    = "ИмяХранимойПроцедуры";
	
	Param1 = Command.CreateParameter("RETURN", 3, ТипПараметраАДО("adParamReturnValue"), , NULL);
	Command.Parameters.Append(Param1);		
	
	Param2 = Command.CreateParameter("repIDD", 200, ТипПараметраАДО("adParamInput"), 50, ФорматироватьПоле(ПараметрыВыгрузки.IDDАгент));
	Command.Parameters.Append(Param2);		
	
	Param3 = Command.CreateParameter("ClientIDD", 200, ТипПараметраАДО("adParamInput"), 50, ФорматироватьПоле(ПараметрыВыгрузки.IDDПартнер));
	
       Command.Parameters.Append(Param3);	
Показать



сыпется вот здесь!!!!

 RecordSet           = Command.Execute(); // Выполнение и получение набора данных.	  
	
	

        RETURN_ХП = Command.Parameters("RETURN").Value;
	
	Сообщить("RETURN_ХП = " + RETURN_ХП);
		
	Исключение
		ВызватьИсключение ("Вызов хранимой процедуры с возвратом результата: " + СтрокаЗапроса + Символы.ПС + ОписаниеОшибки());
	КонецПопытки;
Показать




Возможно ошибка в синтаксисе ADO!!!
+
9. ImHunter 315 08.12.17 09:05 Сейчас в теме
(7) Так что ADO пишет-то? По коду я вижу, что идет вызов некой ХП ИмяХранимойПроцедуры. Это что? Кавычки не убраны?
+
10. my_work_ksv@mail.ru 11.12.17 07:15 Сейчас в теме
ADO ни чего не пишет((((

ОписаниеОшибки() = ""
+
11. ArchLord42 83 11.12.17 07:53 Сейчас в теме
(10) если смотрите в отладчике, то оно и будет выводить пустую строку (особенность такая) сначала надо загнать описание ошибки в переменную
my_work_ksv@mail.ru; +1
12. my_work_ksv@mail.ru 14.12.17 02:40 Сейчас в теме
(11) Да, Вы были правы....удалось таким образом поймать ошибку!
+
2. DenisCh 06.12.17 11:46 Сейчас в теме
http://www.sql.ru/faq/faq_topic.aspx?fid=416

Вот посмотри, может, поможет чем
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот