Имя: Пароль:
1C
1С v8
Операция не допускается, если объект закрыт.
0 Droning1C
 
17.03.20
17:00
Соединение              = Новый COMОбъект("ADODB.Connection");
    Команда              = Новый COMОбъект("ADODB.Command");
    RecordSet            = Новый COMОбъект("ADODB.RecordSet");
    
    Соединение.ConnectionString = "Provider=SQLOLEDB; Data Source = "+серверSQL+";Initial Catalog="+базаSQL+";UID="+пользовательSQL+"; PWD="+парольSQL+";";
    Соединение.ConnectionTimeOut = 15;
    Соединение.CommandTimeOut     = 30;    
    Попытка
        Соединение.Open(); АутентификацияПрошла = Истина;
    Исключение
        Сообщить("Ошибка при подключении к базе данных 3TEC."+Символы.ПС+ОписаниеОшибки());
        Возврат Неопределено;
    КонецПопытки;         
    
    Команда.ActiveConnection = Соединение;        
    Команда.CommandType = 4;
    Команда.CommandText = "dbo.ui_WH_AddCell";
    
    ПараметрСклад = Команда.CreateParameter("@WH_Code",200,1,10,);
    ПараметрТипЯчейки = Команда.CreateParameter("@RowType",200,1,1,);
    ПараметрРяд = Команда.CreateParameter("@RowNumber",3,,,);
    ПараметрУровень = Команда.CreateParameter("@Level",3,,,);
    ПараметрЯчейка = Команда.CreateParameter("@CellNumber",3,,,);
    
    Команда.parameters.append(ПараметрСклад);
    Команда.parameters.append(ПараметрТипЯчейки);
    Команда.parameters.append(ПараметрРяд);
    Команда.parameters.append(ПараметрУровень);
    Команда.parameters.append(ПараметрЯчейка);
    
    Команда.Parameters(0).value = "SGP_RD";
    Команда.Parameters(1).value = ТипЯчейкиИзм;
    Команда.Parameters(2).value = РядИзм;
    Команда.Parameters(3).value = УровеньИзм;
    Команда.Parameters(4).value = ЯчейкаИзм;
    
    Попытка
        
        RecordSet = Команда.Execute();
        //Recordset.Open();
        
    Исключение Соединение.Close();
        
        Сообщить("Ошибка при получении информации в базе данных 3TEC1."+Символы.ПС+ОписаниеОшибки());
        
    КонецПопытки;
    



Добрый день! Хранимая процедура sql добавляет строку в таблицу бд по переданным в нее параметрам. При вычислении выражения RecordSet выдается ошибка - Произошла исключительная ситуация (ADODB.Recordset): Операция не допускается, если объект закрыт.    

Что я делаю не так и какие еще данные нужно предоставить для помощи в решении проблемы, если предоставленных не хватает?
1 mikecool
 
17.03.20
17:02
рекорд сет видимо открыть надо
2 mikecool
 
17.03.20
17:02
или прочитать с отборами
3 Droning1C
 
17.03.20
17:06
(1) у меня в попытке написано //Recordset.Open(); Пытался, но результат был таким же. Поэтому закомментил. Или я неправильно пишу?
4 Droning1C
 
17.03.20
17:07
(2) а можно подробнее?
5 Droning1C
 
17.03.20
17:14
Первый раз этим занимаюсь, сорри, если совсем глупый вопрос.
6 Droning1C
 
17.03.20
17:33
ПараметрСклад = Команда.CreateParameter("@WH_Code",200,1,10,);   Предположил, что параметры нужно называть без собаки, но результат все тот же. На стороне sql процедура точно рабочая.
7 Droning1C
 
17.03.20
17:36
Если написать так  

RecordSet.Open();
RecordSet = Команда.Execute();

То выдается другая ошибка - Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (ADODB.Recordset): Невозможно использование подключения для выполнения операции. Оно закрыто или не допускается  в данном контексте.
8 mikecool
 
17.03.20
17:37
(4) нет у меня подробностей, я так никогда не делал
а почему не воспользоваться внешним источником данных?
9 Droning1C
 
17.03.20
17:43
(8) Честно говоря, не знаю. Возможно на то есть причины. Все разошлись, спросить не у кого)