|
Как передать текст ошибки из веб-сервиса? | ☑ | ||
---|---|---|---|---|
0
vi0
25.09.16
✎
06:22
|
Поделитесь, кто как передает текст ошибки из веб-сервсиса в случае различных своих проверок данных?
В случае с внешним соединением есть удобная типовая функция СообщитьОбОшибке, правда текст выводится пользователю не очень читабельный, зато минимум усилий со стороны разработчика. А как в случае с вызовами веб-сервсиса? Процедура СообщитьОбОшибке(ТекстСообщения, Отказ = Ложь, Заголовок = "", Статус = Неопределено) Экспорт #Если ВнешнееСоединение Тогда ВызватьИсключение (ТекстСообщения); #Иначе ... |
|||
1
Armando
25.09.16
✎
08:41
|
ВызватьИсключение для вебсервиса тоже работает
|
|||
2
vi0
25.09.16
✎
09:41
|
(1) конечно работает, но здесь ты не сможешь использовать директиву для внешнего соединения, как в примере (0), поэтому и спрашиваю, какой есть опыт
|
|||
3
TreeDogNight
25.09.16
✎
09:46
|
Вы из 1й базы вызываете метод Веб-сервиса 2й базы, и в случае ошибки хотите вывести сообщение в 1й базе или во 2й?
|
|||
4
vi0
25.09.16
✎
09:47
|
(3) в вызывающей базе, т.е. в 1й
|
|||
5
TreeDogNight
25.09.16
✎
10:52
|
Что вам мешает получить из метода текст ошибки (в случае её возникновения) и сообщить этот текст в 1й базе?
|
|||
6
Mauser
25.09.16
✎
10:55
|
(5) Он хочет минимум усилий со стороны разработчика.
|
|||
7
vi0
25.09.16
✎
11:26
|
(5) так можно
интересен опыт других |
|||
8
Mauser
25.09.16
✎
11:35
|
(7) Можно по разному. В каждом конкретном случае - свои требования. Надо ли тебе отслеживать отдельно таймауты и 500 - iis поломан, 500 - ховнокодер поделил на ноль и 200 - у тебя кривой склад, но можешь продолжать и т.п. Как со стороны вызывающего, так и со стороны сервера.
У тебя же в (0) подход однозначен - есть удобная функция, я не осилил подобную для веб-сервиса, а расскажите мне. |
|||
9
vi0
25.09.16
✎
12:01
|
(8) не нужно так нервничать, уважаемый
вопрос в (0) у меня простой: > Поделитесь, кто как передает текст ошибки из веб-сервсиса |
|||
10
TreeDogNight
25.09.16
✎
13:00
|
(9) В методах Веб-сервисов я обычно возвращаю сереализованную JSON-структуру. Если во время исполнения алгоритма метода возникает какая-то ошибка, я возвращаю структуру с ключем "Error" и текстом ошибки, и уже на стороне вызывающей базы проверяю принятую структуру на содержание данного ключа. Если он есть, то просто сообщаю значение этого ключа.
|
|||
11
vi0
25.09.16
✎
13:26
|
(10) И результат веб-сервисов всегда структура?
|
|||
12
TreeDogNight
25.09.16
✎
13:44
|
(11) Да.
|
|||
13
vi0
26.09.16
✎
07:28
|
а есть аналог #Если ВнешнееСоединение для веб-сервиса?
в курсе кто? |
|||
14
Mauser
26.09.16
✎
07:49
|
(13) Конечно в курсе - в СП описаны все варианты.
|
|||
15
vi0
26.09.16
✎
10:06
|
(14) что ты не угомонишься никак
|
|||
16
Остап Сулейманович
26.09.16
✎
10:10
|
(13) А зачем это? Модуль ВЕБ-сервиса и так выполняется только в веб-сервисе. Или имеется ввиду вызов (например) общего модуля от имени ВЕБ-сервиса? Так передай ему параметром фишку, что оно вызвано из ВЕБ-сервиса. Или о чем терки?
|
|||
17
vi0
26.09.16
✎
10:14
|
(16) интересно, можно ли идентифицировать веб-сервис штатными средствами
|
|||
18
Остап Сулейманович
26.09.16
✎
10:18
|
(17) Ф-у-у-ух. Ну прям сразу все стало понятно.
"идентифицировать веб-сервис штатными средствами" Где? 1. На стороне клиента (который вызвал операцию ВЕБ-сервиса) 2. На стороне сервиса в общем (например) модуле. 3. В модуле самого ВЕБ-сервиса 0_0 |
|||
19
vi0
26.09.16
✎
10:21
|
(18) ну если читать токль (17) то правда понять трудно
выше, например в (0) или (13) все написал |
|||
20
Жан Пердежон
26.09.16
✎
10:22
|
(18) забей, чел за 11 лет на мисте так и не научился вопросы формулировать; уже все рассказали, но он все равно ждет какого-то чуда
|
|||
21
Остап Сулейманович
26.09.16
✎
10:27
|
(19) Если читать (0) - то ни о какой "идентификации" ВЕБ-сервиса речь не идет.
Чем не устраивает вариант в (10)? Еще есть классика жанра - возвращаемая из ВЕБ-сервиса переменная с текстом ошибки. Если она пустая - ошибок нет и делать ничего не нужно. Если метод ВЕБ-сервиса заполнил эту переменную - на принимающей стороне 1. ВызватьИсключение с текстом ошибки принятой от ВЕБ-Сервиса. 2. ПоказатьПредупреждение с теми же исходными 3. ... |
|||
22
Остап Сулейманович
26.09.16
✎
10:27
|
+ (21) Зачем дополнительно идентифицировать ВЕБ-сервис я понять затрудняюсь. Или вы не уверены в том, кого вызывали?
|
|||
23
vi0
26.09.16
✎
10:36
|
(22) > Зачем дополнительно идентифицировать ВЕБ-сервис я понять затрудняюсь
Например, операция веб-сервиса использует уже существующие процедуры содержащие в себе проверки и вызывающие процедуру СообщитьОбОшибке. Как я написал в (0) в случае вызова этих процедур по внешнему соединению вызывается исключение, т.к. есть идентификация контекста внешнего соединения. |
|||
24
Жан Пердежон
26.09.16
✎
10:58
|
(22) под "идентификацией" он подразумевает что-то типа следующего на стороне сервера:
ЭтоВебСервис = Ложь; Для каждого Соединение из ПолучитьСоединенияИнформационнойБазы() Цикл Если Соединение.НомерСоединения = НомерСоединенияИнформационнойБазы() Тогда ЭтоВебСервис = Соединение.ИмяПриложения ="WSConnection"; КонецЕсли; КонецЦикла; |
|||
25
vi0
26.09.16
✎
11:16
|
неплохо
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |