powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / Вызов хранимой процедуры
6 сообщений из 6, страница 1 из 1
Вызов хранимой процедуры
    #36802348
Gennadiy83
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем, здравствуйте!!!
Помогите разобраться, пытаюсь из внешней обработки (платформа 1С:Бухгалтерия 8.1) вызвать хранимую процедуру (MS SQL Server 2008). При попытке обратиться к результатам выдает ошибку, что объект закрыт. Пробовал вызывать без параметров (т.к. есть значения по умолчанию) - такая же проблема. Просматривал в дебагере свойства объекта RecordSet - есть поля со значением "Ошибка чтения". Запросы выполняю без проблем, а с хронимкой возникли проблемы. Помогите.

Параметры хранимки следующие:
ALTER PROCEDURE [dbo].[CR_Buh_Block_Otchet]
(
@us int = 1,
@login nvarchar(50) = 'SERVER\sasha5',
@serviceDate DateTime='01.01.2010',
@registerType int = -1, -- "0" - регистр "Рассчитанные услуги", "1" - регистр "Бухгалтерские документы"
@dateList varchar(max)='13.05.2010'

Вызов хранимки делаю так:

RecordSet = Новый COMОбъект("ADODB.RecordSet");
Command.ActiveConnection = Connection;
Command.CommandText = "CR_Buh_Block_Otchet";
Command.CommandType = 4;

adInteger = 3;
adVarChar = 200;
adDate = 7;
adParamInput = 1;

Param1 = Command.CreateParameter("@us", adInteger, adParamInput, 4, 1);
Command.Parameters.Append(Param1);
Param2 = Command.CreateParameter("@login", adVarChar, adParamInput, 50, "SMOLENSK\polyak_gg");
Command.Parameters.Append(Param2);
Param3 = Command.CreateParameter("@serviceDate", adDate, adParamInput, 4, "01.01.2010"); Command.Parameters.Append(Param3);
Param4 = Command.CreateParameter("@registerType", adInteger, adParamInput, 4, 1);
Command.Parameters.Append(Param4);
Param5 = Command.CreateParameter("@dateList", adVarChar, adParamInput, 500, "20100513");
Command.Parameters.Append(Param5);

RecordSet = Command.Execute();

Пока RecordSet.EOF() = 0 Цикл
счетчик = счетчик + 1;
Сообщить(счетчик );
RecordSet.MoveNext();
КонецЦикла;

Спасибо за помощь.
...
Рейтинг: 0 / 0
Вызов хранимой процедуры
    #36802354
Gennadiy83
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дополню:
параметр хранимки @dateList - одна дата, либо строка дат, разделенных запятыми.
...
Рейтинг: 0 / 0
Вызов хранимой процедуры
    #36803075
set nocount on
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Вызов хранимой процедуры
    #36804611
VladimirKr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gennadiy83,
А из SSMS процедура выдает данные?
Если да, то, не видел текста процедуры, но скорее всего, процедура возвращает несколько выходных наборов, первый из которых пустой.
Варианты несколько:
1. set nocount on в начало процедуры. Может помочь (убирает служебные сообщения, порождающие выходные наборы).
2. Более универсальный, листаем выходные наборы:
Код: plaintext
1.
2.
3.
RecordSet = Command.Execute();
Пока (RecordSet.State= 0 ) цикл
  RecordSet=RecordSet.NextRecordset();
КонецЦикла;
...
Рейтинг: 0 / 0
Вызов хранимой процедуры
    #36804848
Паля
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gennadiy83,
кстати
RecordSet = Новый COMОбъект("ADODB.RecordSet");
<..>
RecordSet = Command.Execute();
это небольшая тупишка.
...
Рейтинг: 0 / 0
Вызов хранимой процедуры
    #36806336
Gennadiy83
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladimirKrGennadiy83,
А из SSMS процедура выдает данные?
Если да, то, не видел текста процедуры, но скорее всего, процедура возвращает несколько выходных наборов, первый из которых пустой.
Варианты несколько:
1. set nocount on в начало процедуры. Может помочь (убирает служебные сообщения, порождающие выходные наборы).
2. Более универсальный, листаем выходные наборы:
Код: plaintext
1.
2.
3.
RecordSet = Command.Execute();
Пока (RecordSet.State= 0 ) цикл
  RecordSet=RecordSet.NextRecordset();
КонецЦикла;


Огромное спасибо! Использовал set nocount on и проблема решилась.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Вызов хранимой процедуры
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]