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

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

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

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

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

(4) откуда обращение к веб-сервису? код процедуры? скорее всего куда-то не туда обращаешься
11 Остап Сулейманович
 
26.09.18
09:00
(8) Упрощенно так.
Изменение параметров с направлением "входной" по идее не должно отражаться на вызывающей стороне. Это как передача параметра по значению. Параметр с направлением "выходной" - это аналог передачи по ссылке.
12 Zombi
 
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". Для чистоты.
15 Evgenchik
 
26.09.18
09:14
к веб -сервису можно и отладкой подключится и посмотреть, что там происходит. Попадает ли вообще в эту процедуру?
16 Zombi
 
26.09.18
09:24
(13) Убрал параметр List и сервис вернул "Ок"
17 Zombi
 
26.09.18
09:27
Добавил снова параметр List в операцию и функцию, снова ничего не возвращает. Что за проблема с ним?
18 Остап Сулейманович
 
26.09.18
09:28
(17) Тип параметра "Лист" - в студию.
19 Zombi
 
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(ЗначениеПараметраЛист);
22 Zombi
 
26.09.18
09:35
(20)     СтрокаВыгрузки = "815bc792-8120-11e3-aa44-00155d656303";
    Попытка
        Результат=Прокси.Update(СтрокаВыгрузки);
//        Прокси.Update(СтрокаВыгрузки);
    Исключение
        
    КонецПопытки;
23 Остап Сулейманович
 
26.09.18
09:36
(22) Вроде все правильно. Для отладки вынеси код за Попытка-Исключение. Хоть будешь получать внятные описания ошибок.
24 ptiz
 
26.09.18
09:37
(12) Это точно ВЕСЬ код процедуры?
25 Zombi
 
26.09.18
09:40
(23) А без попытки возвращает "Ок". Почему веб сервис вызывает исключение попытки, если все нормально проходит?
26 Остап Сулейманович
 
26.09.18
09:43
(25) Это уже са-а-апсем другая пестня. С Веб-сервисом у тебя все в порядке. Ошибки где-та на вызывающей стороне.
27 Zombi
 
26.09.18
09:45
(26) Спасибо за помощь!
28 Остап Сулейманович
 
26.09.18
09:46
+ (26) Я бы начал с проверок переменных "Результат" и "СтрокаВыгрузки". Возможно такие идентификаторы имеют либо реквизиты, либо элементы, ...
29 Zombi
 
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"; - есть все "пользовательские" типы текущей конфигурации.
В случае обмена между аналогичными базами есть все.
33 Zombi
 
26.09.18
10:14
Спасибо. Буду ковырять.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.