Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Web сервис не возвращает таблицу значения

Web сервис не возвращает таблицу значения
Я
   ETurdymuratov
 
02.08.18 - 11:06
всем привет, создал простой веб сервис, назначил тип возвращаемого значения ValueStorage (http://v8.1c.ru/8.1/data/core), в процедуре веб сервиса простой код:

    Запрос = Новый Запрос;

    Запрос.Текст = "ВЫБРАТЬ
                   |    Контрагенты.ИдентификационныйКодЛичности КАК ИИН,
                   |    ТиповойОстатки.Субконто1 КАК Контрагент,
                   |    ТиповойОстатки.Субконто3 КАК Договор,
                   |    ТиповойОстатки.СуммаОстатокКт
                   |ИЗ
                   |    РегистрБухгалтерии.Типовой.Остатки(&НаДату, Счет В ИЕРАРХИИ (&Счет), , ) КАК ТиповойОстатки
                   |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты
                   |        ПО ТиповойОстатки.Субконто1 = Контрагенты.Ссылка
                   |ГДЕ
                   |    Контрагенты.Комментарий ПОДОБНО &Комментарий";
    Запрос.УстановитьПараметр("НаДату", ТекущаяДата());
    СЗ1 = Новый СписокЗначений;
    СЗ1.Добавить(ПланыСчетов.Типовой.НайтиПоКоду("3511"));
    СЗ1.Добавить(ПланыСчетов.Типовой.НайтиПоКоду("3517"));
    Запрос.УстановитьПараметр("Счет", СЗ1);
    //Список значений
    Запрос.УстановитьПараметр("Комментарий", id);
    РезультатЗапроса = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    ТЗ = Новый ТаблицаЗначений;
    ТЗ.Колонки.Добавить("ИИН", Новый ОписаниеТипов("Строка"));
    ТЗ.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка"));
    ТЗ.Колонки.Добавить("Договор", Новый ОписаниеТипов("Строка"));
    ТЗ.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число"));
    
    ТипXDTOТипОбъекта1 = ФабрикаXDTO.Тип("http://172.16.103.89";, "Student");  
    ТипОбъекта1 = ФабрикаXDTO.Создать(ТипXDTOТипОбъекта1);

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        СтрТЗ = ТЗ.Добавить();    
        СтрТЗ.ИИН = ВыборкаДетальныеЗаписи.ИИН;
        СтрТЗ.Наименование = ВыборкаДетальныеЗаписи.Контрагент;
        СтрТЗ.Договор = ВыборкаДетальныеЗаписи.Договор;
        СтрТЗ.Сумма = ВыборкаДетальныеЗаписи.СуммаОстатокКт;
        
        ОбъектXdto=СериализаторXDTO.ЗаписатьXDTO(СтрТЗ);
    КонецЦикла;

    Возврат ОбъектXdto;

проверяю через SoapUI ругается <soap:Text xml:lang="ru_RU">Неверный формат.</soap:Text>
 
 
   ETurdymuratov
 
1 - 02.08.18 - 11:07
помогите разобраться
   ETurdymuratov
 
2 - 02.08.18 - 11:10
в коде подправил, 

ОбъектXdto=СериализаторXDTO.ЗаписатьXDTO(ТЗ);

запарился, проблема та же
   Mankubus
 
3 - 02.08.18 - 11:16
>> ТипXDTOТипОбъекта1 = ФабрикаXDTO.Тип("http://172.16.103.89";;, "Student");   


     ТипОбъекта1 = ФабрикаXDTO.Создать(ТипXDTOТипОбъекта1);
<
зачем это написано если нигде не используется?
   ETurdymuratov
 
4 - 02.08.18 - 11:19
(3) да исправил на Возврат ТЗ; и так пробовал Возврат ОбъектXdto;  не помогло
   Вафель
 
5 - 02.08.18 - 11:27
тз нельзя так сериализовать. нужно построчно/пообъектно
   ETurdymuratov
 
6 - 02.08.18 - 11:28
(5) можно вообще не сереализовывая просто вернуть ТЗ?
   Вафель
 
7 - 02.08.18 - 11:28
(6) нет конечно
   ETurdymuratov
 
8 - 02.08.18 - 11:47
(7) как это построчно?
я переделал вот так:
    ЗаписьXML = Новый ЗаписьXML();
    ЗаписьXML.УстановитьСтроку();
    СериализаторXDTO.ЗаписатьXML(ЗаписьXML, ТЗ);
    СтрокаXML = ЗаписьXML.Закрыть();    

    Возврат ЗаписьXML;

ошибка та же
   Мыш
 
9 - 02.08.18 - 11:52
(8) Сделать из таблицы значений массив структур, например
   Мыш
 
10 - 02.08.18 - 11:53
+(9) Или структуру массивов. Компактнее будет.
 
 Рекламное место пустует
   Necessitudo
 
11 - 02.08.18 - 11:54
Эм, ValueStorage  это ХранилищеЗначения. С чего ты решил что ТЗ возвращать надо?
   ETurdymuratov
 
12 - 02.08.18 - 11:56
(11) что надо возвращать?
   ETurdymuratov
 
13 - 02.08.18 - 11:57
(9) сделал, ошибка другая уже:
Внутренняя ошибка. Ошибка инициализации библиотеки модулей
   ETurdymuratov
 
14 - 02.08.18 - 11:58
(11) пробовал и ТЗ и ОбъектXdto и МассивСтруктур(ошибка другая)
   ETurdymuratov
 
15 - 02.08.18 - 12:06
попробовал поменять тип возвращаемого значения на Array (http://v8.1c.ru/8.1/data/core) после того как код передлал чтобы возвращал массив структур, ругается "Внутренняя ошибка. Ошибка инициализации библиотеки модулей"
   Necessitudo
 
16 - 02.08.18 - 12:33
Слушай, возвращай просто String -  а в него запихни JSON.
   ETurdymuratov
 
17 - 02.08.18 - 12:35
(16) в смысле использовать функцию ЗначениеВСтрокуВнутр ?
   ETurdymuratov
 
18 - 02.08.18 - 12:41
(16) переделал так:

    Ответ = РезультатЗапроса.Выгрузить();
    Запись = Новый ЗаписьJSON;
    Запись.УстановитьСтроку();
    ЗаписатьJSON(Запись, Ответ);
    Возврат Запись.Закрыть();    

soap ругается "Неверный формат"
   Вафель
 
19 - 02.08.18 - 12:42
возвращать нужно то что указано в схеме
   Necessitudo
 
20 - 02.08.18 - 12:48
(18) Поставь возвращаемое значение - String.
   ETurdymuratov
 
21 - 03.08.18 - 07:42
(20) Не верный формат


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует