Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Хранимые процедуры SQL. Обработка результата
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
TipsyKID
Есть хранимая процедура в SQL, в ответ она присылает три XML файла.
Код :
Функция ВыполнитьЗапросКФункцииSQL(СоединениеSQL,ИмяФункцииSQL,СтруктураПараметров,ID_РегламентногоЗадания)                        
    ИмяФункцииSQLДляВыводаВЛог = ИмяФункцииSQL;
    
    ФункцияSQL = Новый COMObject("ADODB.Command");                    
    ФункцияSQL.ActiveConnection = СоединениеSQL;                    
    ФункцияSQL.CommandType = 4;                    
    ФункцияSQL.CommandText = ИмяФункцииSQL;                    
    //
    Попытка
      РезультатФункции = ФункцияSQL.Execute(ИмяФункцииSQL);                    
      ЗаписатьВЛог("Вызов функции : " + ИмяФункцииSQLДляВыводаВЛог + "
      |" + Строка(РезультатФункции),Справочники.БП_СтатусыОбменаССайтом.ВызовФункцииУспех,ID_РегламентногоЗадания);
    Исключение
        //ОписаниеОшибки()
      ЗаписатьВЛог("Вызов функции : " + ИмяФункцииSQLДляВыводаВЛог + "
      |"+ОписаниеОшибки() ,Справочники.БП_СтатусыОбменаССайтом.ВызовФункцииОшибка,ID_РегламентногоЗадания);
      Возврат Неопределено;
   КонецПопытки;
    Сообщить(РезультатФункции);                        
    
    возврат РезультатФункции;                      
КонецФункции


После я обрабатываю результат :
РезультатФункции.MoveFirst();
пока НЕ РезультатФункции.EOF() цикл
    //....
Конеццикла;


Но таким образом я получаю только одну хмл. (первую) и в цикле "РезультатФункции.EOF()" по кусочкам её считываю.
Подскажите как добраться до остальных файлов-ответов.
vadim007
Могу только погадать - до хранимых процедур еще не дорос wink.gif
1. Из текста самой процедуры я не вижу, что она должна возвращать три файла. Почему три? Почему файлы, а не строки?
2. Если имеется в виду вызов
    РезультатФункции = ФункцияSQL.Execute(ИмяФункцииSQL);

то здесь, насколько понимаю, возвращается строка, и не файл(ы).
3. Что выводит строка
     Сообщить(РезультатФункции); ?

4. Если все-же РезультатФункции - ссылка на файл с результатом работы запроса, и вызов приведенного куска кода производится 1 раз, то справедливо предположить, что в файле ожидается три строки XML. Тогда нужно смотреть, как хранимая процедура производит запись в файл строк XML - ставит-ли в конце каждой строки коды CR+LF.
TipsyKID
Цитата(vadim007 @ 18.08.15, 19:50) необходимо зарегистрироваться для просмотра ссылки
Могу только погадать - до хранимых процедур еще не дорос wink.gif

Гадать не получится, тут нужен опыт работы с хранимыми процедурами.
Цитата(vadim007 @ 18.08.15, 19:50) необходимо зарегистрироваться для просмотра ссылки
1. Из текста самой процедуры я не вижу, что она должна возвращать три файла. Почему три? Почему файлы, а не строки?

Имелось ввиду хранимая процедура SQL возвращает 2-а файла.
Процедура её вызывает и передает результат в обработчик.
sava1
Попробуйте
КвоЗаписей = Неопределено;
Пока РезультатФункции.State=0 Цикл
        РезультатФункции = РезультатФункции.NextRecordset(Записей);
        // а здесь уже перебираем записи рекордсета

КонецЦикла;
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.