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



Возвращаемое значение веб-снрвиса

Возвращаемое значение веб-снрвиса
Я
   Zombi
 
26.09.18 - 08:27
Создал веб сервис, к операции привязал функцию, где пишу:

    Возврат("Ок");

Пока больше ничего. В веб-сервисе тип возвращаемого значения "string (http://www.w3.org/2001/XMLSchema)". Веб сервис возвращает "Неопределено". Что не так?
 
 
   lEvGl
 
1 - 26.09.18 - 08:34
типа параметра выходной должен быть
   Остап Сулейманович
 
2 - 26.09.18 - 08:35
(0) Что за синтаксис такой "Возврат("Ок");"?
Это через кода Возврат стал функцией?
   lEvGl
 
3 - 26.09.18 - 08:36
))
   Zombi
 
4 - 26.09.18 - 08:50
(2) Точно. Сделал так:

    Возвращаем = "Ок";
    
    Возврат Возвращаем;

Все равно веб-сервис возвращает "неопределено"
   Zombi
 
5 - 26.09.18 - 08:50
(1) А как тип параметра выходным сделать?
   lEvGl
 
6 - 26.09.18 - 08:51
ну так в свойствах параметра
   lEvGl
 
7 - 26.09.18 - 08:52
направление передачи
должен быть хоть один выходной или входной-выходной
   Zombi
 
8 - 26.09.18 - 08:56
(7) У меня сейчас 1 параметр, это текст, который я передаю в веб-сервис(ему сделал тип входной-выходной, так же возвращает неопределено). Мне чтобы вернуть что то нужно еще один параметр создать?
   Остап Сулейманович
 
9 - 26.09.18 - 08:57
(0) Давай сначала.
1. "Веб сервис возвращает "Неопределено"."
Не может Веб-сервис возвращать значения. Возвращать значения может только операция. Код обработчика операции - в студию.
2. У операции кроме возвращаемого значения могут быть параметры. Как у обычных функций. Они никак не влияют на результат, возвращаемый операцией. Но. Их можно изменять внутри обработчика операции.
   Nikoss
 
10 - 26.09.18 - 08:59
(6) параметры у веб-сервиса есть только на входящие. Все что возвращает веб-сервис это то что в Возврат ...

(4) откуда обращение к веб-сервису? код процедуры? скорее всего куда-то не туда обращаешься
 
 Рекламное место пустует
   Остап Сулейманович
 
11 - 26.09.18 - 09:00
(8) Упрощенно так.
Изменение параметров с направлением "входной" по идее не должно отражаться на вызывающей стороне. Это как передача параметра по значению. Параметр с направлением "выходной" - это аналог передачи по ссылке.
   Zombi
 
12 - 26.09.18 - 09:00
(9) Пока обработчик операции такой:

Функция Update(List)
    
    ЕстьОшибки = Ложь;
    Возвращаем = "Ок";
    
    Возврат Возвращаем;

КонецФункции
   Остап Сулейманович
 
13 - 26.09.18 - 09:04
(12) Странно. Должен на вызывающей стороне поймать либо рантайм ошибку (это если не удалось создать проксю к Веб-сервису или обратился к несуществующей операции).  Либо "Ок".

Для чистоты эксперимента попробуй вот так :

Функция Update(List)
    Возврат "Ок";
КонецФункции
   Остап Сулейманович
 
14 - 26.09.18 - 09:05
+ (13) Убери из параметров операции вот этот вот "List". Для чистоты.
   Evgenchik
 
15 - 26.09.18 - 09:14
к веб -сервису можно и отладкой подключится и посмотреть, что там происходит. Попадает ли вообще в эту процедуру?
   Zombi
 
16 - 26.09.18 - 09:24
(13) Убрал параметр List и сервис вернул "Ок"
   Zombi
 
17 - 26.09.18 - 09:27
Добавил снова параметр List в операцию и функцию, снова ничего не возвращает. Что за проблема с ним?
   Остап Сулейманович
 
18 - 26.09.18 - 09:28
(17) Тип параметра "Лист" - в студию.
   Zombi
 
19 - 26.09.18 - 09:31
(18)
Имя List
Синоним List

ТипЗначения string (http://www.w3.org/2001/XMLSchema)

Возможно пустое Ложь
Направление передачи Входной
   Остап Сулейманович
 
20 - 26.09.18 - 09:32
(19) При вызове операции Веб-сервиса у Листа какое значение?
   Остап Сулейманович
 
21 - 26.09.18 - 09:34
+ (20) Раз он "Возможно пустое Ложь" - он должен быть обязательно задан при вызове. А раз "ТипЗначения string (http://www.w3.org/2001/XMLSchema)"- он должен быть строкой.

При вызове должно быть типа такого :

ЗначениеПараметраЛист = "Привет";
Результат = Прокся.Update(ЗначениеПараметраЛист);
   Zombi
 
22 - 26.09.18 - 09:35
(20)     СтрокаВыгрузки = "815bc792-8120-11e3-aa44-00155d656303";
    Попытка
        Результат=Прокси.Update(СтрокаВыгрузки);
//        Прокси.Update(СтрокаВыгрузки);

    Исключение
        
    КонецПопытки;
   Остап Сулейманович
 
23 - 26.09.18 - 09:36
(22) Вроде все правильно. Для отладки вынеси код за Попытка-Исключение. Хоть будешь получать внятные описания ошибок.
   ptiz
 
24 - 26.09.18 - 09:37
(12) Это точно ВЕСЬ код процедуры?
   Zombi
 
25 - 26.09.18 - 09:40
(23) А без попытки возвращает "Ок". Почему веб сервис вызывает исключение попытки, если все нормально проходит?
   Остап Сулейманович
 
26 - 26.09.18 - 09:43
(25) Это уже са-а-апсем другая пестня. С Веб-сервисом у тебя все в порядке. Ошибки где-та на вызывающей стороне.
   Zombi
 
27 - 26.09.18 - 09:45
(26) Спасибо за помощь!
   Остап Сулейманович
 
28 - 26.09.18 - 09:46
+ (26) Я бы начал с проверок переменных "Результат" и "СтрокаВыгрузки". Возможно такие идентификаторы имеют либо реквизиты, либо элементы, ...
   Zombi
 
29 - 26.09.18 - 09:47
Еще вопрос: Если 1 строку передать то тип параметра string (http://www.w3.org/2001/XMLSchema) , а если передать нужно:

    СтрокаВыгрузки = Новый ТекстовыйДокумент;
    СтрокаВыгрузки.ДобавитьСтроку("815bc792-8120-11e3-aa44-00155d656303");
    Результат=Прокси.Update(СтрокаВыгрузки);

это какой тип параметра нужно использовать?
   Остап Сулейманович
 
30 - 26.09.18 - 09:55
(29) Я бы сделал так
1. В свойствах Веб-сервиса - Прочее - Пакеты ХДТО добавил "http://v8.1c.ru/8.1/data/core";
2. Параметру операции назначил тип ValueStorage (http://v8.1c.ru/8.1/data/core)
3. Вызов выглядел бы примерно так :
СтрокаВыгрузки = Новый ХранилищеЗначения(СтрокаВыгрузки, Новый СжатиеДанных(9));
Прокся.Апдате(СтрокаВыгрузки);
4. В обработчике операции :
ЛистТекст = Лист.Получить();
   Остап Сулейманович
 
31 - 26.09.18 - 10:02
+ (30) Оно правда не совсем православно /*зачеркнуто "канонично"*/. Но зато универсально.
1. В ХранилищеЗначения можно уложить хоть черта лысого.
2. Само сериализуется.
3. Позволяет сжимать данные при обмене.
Главное - чтобы принимающая сторона могла из него получить данные нужного типа. И вот в этом и состоит неканоничность. По идее описание самого Веб-сервиса должно давать представление о типах передаваемых параметров. В случае с ХранилищемЗначения - там может быть что угодно. Хотя в описаниях типов в "http://v8.1c.ru/8.1/data/core"; + "http://v8.1c.ru/8.1/data/enterprise/current-config"; есть все необходимое для каноничного определения сервисов.
   Остап Сулейманович
 
32 - 26.09.18 - 10:05
+ (31) 
В "http://v8.1c.ru/8.1/data/core"; - есть все "платформенные" типы.
В "http://v8.1c.ru/8.1/data/enterprise/current-config"; - есть все "пользовательские" типы текущей конфигурации.
В случае обмена между аналогичными базами есть все.
   Zombi
 
33 - 26.09.18 - 10:14
Спасибо. Буду ковырять.
 
 


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