![]() |
![]() |
![]() |
|
(8.2) sql-запрос из 1С - вызов процедуры и селект в одном запросе | ☑ | ||
---|---|---|---|---|
0
vechiy
06.12.12
✎
12:45
|
Вот, столкнулся со следующей проблемой:
Выполняю запросец: СтрокаSQL = "DECLARE @RC int |DECLARE @Staff_Id int |DECLARE @dtOut datetime |DECLARE @Text nvarchar(max) |DECLARE @Type_Oper int |DECLARE @dtIn datetime |DECLARE @Res int | |SET @Staff_Id = 'param1' |SET @dtOut = 'param2' |SET @Text = 'param3' |SET @Type_Oper = '2' |SET @dtIn = '' | |EXECUTE @RC = [name] | @Staff_Id | ,@dtOut | ,@Text | ,@Type_Oper | ,@dtIn | ,@Res OUTPUT | select @Res"; Recordset.Open(СтрокаSQL,SQLConnection,2,4); Recordset.MoveFirst(); //код состояния исполнения запроса Сообщить(Recordset.Fields("@Res").Value); Recordset.MoveNext(); SQLConnection.Close(); Проблема в том, что не удается получить Recordset.Fields("@Res").Value при вызове запроса из 1С. В студии все отлично работает. В 1С без обращения к записям тоже все работает (и селект в том числе) Ошибка следующая: Ошибка при выполнении обработчика - 'ОбработкаПроведения' по причине: {ОбщийМодуль.ОграничениеДоступа.Модуль(484)}: Ошибка при вызове метода контекста (Fields) по причине: Произошла исключительная ситуация (ADODB.Recordset): В коллекции не удается найти элемент, соответствующий требуемому имени или порядковому номеру. |
|||
1
vechiy
06.12.12
✎
12:46
|
Проблема, мне кажется, в том, что @Res - это параметр. Интересует, возможно ли в принципе его получить? Или что я делаю не так?
|
|||
2
Maxus43
06.12.12
✎
12:48
|
незнаю в чем проблема, но знаю что это нарушение лицензионного соглашения. в турму!
|
|||
3
МихаилМ
06.12.12
✎
12:53
|
как минимум обернать в set nocount (читать доки)
и select @Res as Res |
|||
4
vechiy
06.12.12
✎
13:17
|
(3)
Сработало, спасибо Но на похожем запросе не помогает: СтрокаSQL = "DECLARE @RC int | DECLARE @Staff_Id int | DECLARE @Type_Oper int | DECLARE @Res int | | SET @Staff_Id = '' | SET @Type_Oper = '2' | | EXECUTE @RC = [name] | @Staff_Id | ,@Type_Oper | ,@Res | | -- Возвращаемые значения | | select @Res as Res"; Ошибка та же, Произошла исключительная ситуация (ADODB.Recordset): В коллекции не удается найти элемент, соответствующий требуемому имени или порядковому номеру. |
|||
5
Sammo
06.12.12
✎
13:24
|
(4) проверь на пустой рекордсет.
Например Если RecordSet.EOF() Тогда RecordSet.Close(); Возврат; КонецЕсли; |
|||
6
vechiy
06.12.12
✎
13:29
|
нет, тут, походу, проблема в запросе который вызывается в процедуре)
а рекордсет тут пустым быть не может вроде как |
|||
7
Sammo
06.12.12
✎
13:33
|
+ в 4 на Res нет output - это правильно?
|
|||
8
vechiy
06.12.12
✎
14:44
|
(7) вот это как раз неправильно, переделывают запросец
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |