|
Возвращаемое значение веб-снрвиса | ☑ | ||
---|---|---|---|---|
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
|
Спасибо. Буду ковырять.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |