Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 1, свеженьких 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Хранимые процедуры SQL. Обработка результата          
TipsyKID Подменю пользователя
сообщение 18.08.15, 16:24
Сообщение #1

Оратор
Иконка группы
Группа: Местный
Сообщений: 413
Из: Киев
Спасибо сказали: 161 раз
Рейтинг: 0

Есть хранимая процедура в 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()" по кусочкам её считываю.
Подскажите как добраться до остальных файлов-ответов.

Сообщение отредактировал TipsyKID - 18.08.15, 16:26


Signature
Специалист : Технологическая платформа 8.х, Бухгалтерия для Украины, Управление торговлей для Украины, Зарплата и Управление Персоналом для Украины

vadim007 Подменю пользователя
сообщение 18.08.15, 18:50
Сообщение #2

Почти крутой
Иконка группы
Группа: Местный
Сообщений: 1298
Из: Донецк
Спасибо сказали: 207 раз
Рейтинг: 0

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

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

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

TipsyKID Подменю пользователя
сообщение 19.08.15, 9:41
Сообщение #3

Оратор
Иконка группы
Группа: Местный
Сообщений: 413
Из: Киев
Спасибо сказали: 161 раз
Рейтинг: 0

Цитата(vadim007 @ 18.08.15, 19:50) *
Могу только погадать - до хранимых процедур еще не дорос wink.gif

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

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


Signature
Специалист : Технологическая платформа 8.х, Бухгалтерия для Украины, Управление торговлей для Украины, Зарплата и Управление Персоналом для Украины

sava1 Подменю пользователя
сообщение 19.08.15, 9:59
Сообщение #4

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2570
Из: Проскуров
Спасибо сказали: 634 раз
Рейтинг: 614.2

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

КонецЦикла;


Сообщение отредактировал sava1 - 19.08.15, 9:59

Спасибо сказали: TipsyKID, vadim007,

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 17.08.22, 14:42
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!