Версия для печати темы (https://pro1c.org.ua/index.php?s=77c6be07abf79ea040b60aad2bc9a119&showtopic=24668)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование обычных форм 1С 8.2 и не интерфейсной логики _ Хранимые процедуры SQL. Обработка результата

Автор: TipsyKID 18.08.15, 16:24

Есть хранимая процедура в 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 18.08.15, 18:50

Могу только погадать - до хранимых процедур еще не дорос wink.gif
1. Из текста самой процедуры я не вижу, что она должна возвращать три файла. Почему три? Почему файлы, а не строки?
2. Если имеется в виду вызов

    РезультатФункции = ФункцияSQL.Execute(ИмяФункцииSQL);

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

4. Если все-же РезультатФункции - ссылка на файл с результатом работы запроса, и вызов приведенного куска кода производится 1 раз, то справедливо предположить, что в файле ожидается три строки XML. Тогда нужно смотреть, как хранимая процедура производит запись в файл строк XML - ставит-ли в конце каждой строки коды CR+LF.

Автор: TipsyKID 19.08.15, 9:41

Цитата(vadim007 @ 18.08.15, 19:50) http://pro1c.org.ua/index.php?act=findpost&pid=102119
1. Из текста самой процедуры я не вижу, что она должна возвращать три файла. Почему три? Почему файлы, а не строки?

Имелось ввиду хранимая процедура SQL возвращает 2-а файла.
Процедура её вызывает и передает результат в обработчик.

Автор: sava1 19.08.15, 9:59

Попробуйте

КвоЗаписей = Неопределено;
Пока РезультатФункции.State=0 Цикл
        РезультатФункции = РезультатФункции.NextRecordset(Записей);
        // а здесь уже перебираем записи рекордсета

КонецЦикла;

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua