Имя: Пароль:
1C
1С v8
Проблема с вятягиванием результата запроса
0 ВежливаяТварь
 
29.08.12
11:34
Добрый день. Уже второй день мучаюсь с доступом из 1с в SQl, некоторых успехов конечно достиг, но вот при вытягивании результата запроса с помощью recordset выдаёт ошибку
{Форма.Форма.Форма(973)}: Ошибка при вызове метода контекста (EOF): Произошла исключительная ситуация (ADODB.Recordset): Операция не допускается, если объект закрыт. не могли бы вы подсказать как справится с этой проблемой. Сам текст запроса в sql работает и возвращает результат.

Сам кусок кода:

ТекстЗапроса="exec dbo.swra_Sales_Desktop @Date_From="+"'"+Формат(ДатаНачалаПроверки,"ДФ=ггггММдд")+"', @Date_To="+"'"+Формат(ДатаКонцаПроверки,"ДФ=ггггММдд")+"'";
   
   ТаблицаЗагрузки= Новый ТаблицаЗначений;
   ТаблицаЗагрузки.Колонки.Добавить("Поле");
   
   ServerName=СокрЛП("192.168.2.56");    //имя или IP-адрес сервера
   DSN=СокрЛП("RB_ATS");        //имя базы данных
   UID=СокрЛП("sa");    //логин пользователя
   PWD=СокрЛП("SW_Desktop");                //пароль

   ConnectString="Provider=SQLOLEDB;Data Source="+ServerName+";DatabaseName="+DSN+";Initial Catalog="+DSN+";UID="+UID+";PWD="+PWD;
   Соединение=Новый COMОбъект("ADODB.Connection");
   Соединение.ConnectionTimeOut=600;
   Попытка              
       Соединение.Open(ConnectString);
   Исключение
       Предупреждение("Не удалось соединиться с базой данных!");
       Сообщить(ОписаниеОшибки());
       Возврат Неопределено;
   КонецПопытки;
   
   Cmd=Новый COMОбъект("ADODB.Command");
   Rs=Новый COMОбъект("ADODB.RecordSet");
   Cmd.ActiveConnection=Соединение;
   Cmd.CommandTimeOut=600;
   Cmd.CommandType=1;    //запрос на языке SQL

   Cmd.Commandtext=СокрЛП(ТекстЗапроса);
      Попытка
       Rs.ActiveConnection=Соединение;
       Rs=Cmd.Execute();
   Исключение
       Сообщить(ОписаниеОшибки());
       Возврат Неопределено;
   КонецПопытки;
   
   КоличествоПолей=Rs.Fields.Count();
   Попытка
       Пока Rs.EOF()=0    Цикл
           НоваяСтрока = ТаблицаЗагрузки.Добавить();
           Для i=0 по КоличествоПолей-1 Цикл
               НоваяСтрока.Поле = СокрЛП(Rs.Fields(i).Value);
           КонецЦикла;
           Rs.MoveNext();
       КонецЦикла;
   Исключение
       Сообщить(ОписаниеОшибки());
       Возврат Неопределено;
   КонецПопытки;
   Rs.Close();
   Соединение.Close();
   Возврат ТаблицаЗагрузки;