Вызов хранимой процедуры из 1с через ado

1. Irken_1 30.03.12 10:09 Сейчас в теме
Добрый день!
У меня вызвать процедуру получилось, но как обработать данные я не очень разобралась.
Сейчас ругается на Пока RecordSet.EOF() = 0 Цикл
ошибка такая:
{Обработка.ПередачаИзмененийBTS.Форма.Форма.Форма(103)}: Ошибка при вызове метода контекста (EOF)
Пока RecordSet.EOF() = 0 Цикл
по причине:
Произошла исключительная ситуация (ADODB.Recordset): Операция не допускается, если объект закрыт.

код такой:
Command = Новый COMObject("ADODB.Command");

Command.ActiveConnection = ADOConnection;
Command.CommandText = "PR_Print_SummaryStatement";

Command.CommandType = 8;
ParamOrg = Command.CreateParameter("@OrganizationID", 72, 1, 0, "73167096-974F-495E-9CED-6885E07408AB");
Command.Parameters.Append(ParamOrg);
//

////Param3 = Command.CreateParameter("@DateStart", 7, 1, 4, формат(Дата(2012,03,01),"ДФ=yyyy-MM-dd"));
Param3 = Command.CreateParameter("@DateStart", 7, 1, 4, Дата(2012,03,01));
Command.Parameters.Append(Param3);
////Param2 = Command.CreateParameter("@DateEnd", 7, 1, 4, Формат(Дата(2012,03,20),"ДФ=yyyy-MM-dd"));
Param2 = Command.CreateParameter("@DateEnd", 7, 1, 4, Дата(2012,03,20));
Command.Parameters.Append(Param2);

//
RecordSet = Новый COMОбъект("ADODB.RecordSet");
RecordSet = Command.Execute();
Пока RecordSet.EOF() = 0 Цикл
счетчик = счетчик + 1;
Сообщить(счетчик );
RecordSet.MoveNext();
КонецЦикла;
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. rasta 30.03.12 10:56 Сейчас в теме
Попрбуй после execute открыть рекордсет: RecordSet.open(), после обработки закрыть есс-но
3. Irken_1 30.03.12 11:08 Сейчас в теме
4. Irken_1 30.03.12 17:44 Сейчас в теме
Выяснила что проблема в параметрах. Если процедура без параметров то вызывается и выдает данные. Все супер.
Может подскажите что написано не так в передаче параметров?
нужно передать строку. Про даты я пока не спрашиваю.
уже писала и
ParamOrg = Command.CreateParameter("@OrganizationID", 129, 1, 36, "73167096-974F-495E-9CED-6885E07408AB");
все равно не помогает.
5. alex_bob 246 30.03.12 18:05 Сейчас в теме
Может быть не нужна собака в имени параметра?
6. Irken_1 30.03.12 18:14 Сейчас в теме
не помогает, и без собаки выдает пусто.:-(
7. Irken_1 30.03.12 19:19 Сейчас в теме
Может кому пригодится
параметры можно передавать так:
ТекстЗапроса = "exec PR_Print_SummaryStatement '" + "73167096-974F-495E-9CED-6885E07408AB"+"','"+Param3+"','"+ Param2+"'";
Command.CommandText = ТекстЗапроса;
RecordSet = Command.Execute();

где в текст запроса передается:
"exec ИмяХранимойПроцедуры, парам1, парам2, парам3"
Inkeeper; Мах; Magic David; +3 Ответить
9. Magic David 27.05.13 18:00 Сейчас в теме
(7) Irken_1,
Спасибо!
Если все параметры можно представить как текст, то такой метод значительно проще и красивее.

Проверено, работает :-) Только тип команды при этом нужно использовать другой, например adСmdТext(1) или adCmdUnknown (8).
8. Buxxter 42 23.05.12 15:00 Сейчас в теме
После создания параметра его нужно добавить в коллекцию параметров:
ParamOrg = Command.CreateParameter("@OrganizationID", 129, 1, 36, "73167096-974F-495E-9CED-6885E07408AB");
Command.Parameters.Append(ParamOrg);
10. Mitreski 15.08.14 10:05 Сейчас в теме
Command.CommandType = 8;


Если поставить
 Command.CommandType = 4; 


то сработает

4 - хранимая процедура, 8 - тип параметра неизвестен
11. Samir 16 25.05.21 14:25 Сейчас в теме
А как получить третий параметр типа курсор?
передать 2 и получить 1
12. Samir 16 25.05.21 15:37 Сейчас в теме
Оставьте свое сообщение

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