Имя: Пароль:
1C
 
Как нужно возвращать структуру веб-сервисом?
0 vi0
 
22.02.17
12:50
1. нужно использовать XDTO-пакеты 0% (0)
2. не нужно использовать XDTO-пакеты 0% (0)
Всего мнений: 0

Создаем веб-сервис с пакетом http://v8.1c.ru/8.1/data/core.
В операции у возвращаемого значения тип указываем Structure.
Фактически в операции возвращаем значение
СериализаторXDTO.ЗаписатьXDTO(Новый Массив).

И все проходит без ошибок. Почему так? Это корректное поведение?
Как нужно организовывать веб-сервис, чтобы возвращать тот или иной тип?
1 Fragster
 
гуру
22.02.17
12:51
ошибка будет на вызывающей стороне (если это 1с)
2 vi0
 
22.02.17
12:51
не будет, я проверял
3 DrShad
 
22.02.17
12:53
вызывающая сторона кто?
4 vi0
 
22.02.17
12:53
5 Fragster
 
гуру
22.02.17
12:54
результат = Прокси.Метод
и результат прям массив?
6 vi0
 
22.02.17
12:57
результат типа ОбъектXDTO
после выполнения
СериализаторXDTO.ПрочитатьXDTO(ОбъектXDTO1)
получается массив
платформа 8.3.9.1850
7 Fragster
 
гуру
22.02.17
12:58
демонически обновлял?
8 Fragster
 
гуру
22.02.17
12:58
был он когда-то массивом?
9 vi0
 
22.02.17
13:01
да, нет
чистую базу создал
могу прикрепить сюда
10 Fragster
 
гуру
22.02.17
13:04
прикрепи к письму в техподдержку 1с. у нас тут только психологическая поддержка.
11 vi0
 
22.02.17
13:04
скажу больше, любое сериализованное значение проходит
проверял число, дату, структуру, массич
12 vi0
 
22.02.17
13:04
я напишу в 1с, да
интересно и тут перетереть
13 DrShad
 
22.02.17
13:06
(12) веб сервисами пользуюсь, но никогда не заморачивался с типами - мне тупо нужен был всегда JSON массив, а с ним проблем нет он тупо передается как строка
14 vi0
 
22.02.17
13:07
(13) почему именно JSON массив?
15 DrShad
 
22.02.17
13:08
(14) с ним легко работать
16 Fragster
 
гуру
22.02.17
13:08
(14) потому что кое-кто путает http и web сервисы
17 DrShad
 
22.02.17
13:09
(16) нифига я не путаю
18 Fragster
 
гуру
22.02.17
13:09
(15) в веб сервисах хорошо, что структура данных прибивается гвоздями. в этом плане я не одобряю (0), кстати
19 vi0
 
22.02.17
13:10
(15) чем именно JSON легче чем xml сериализация?
20 vi0
 
22.02.17
13:10
(18) ээ.. не одобряешь что именно?
21 DrShad
 
22.02.17
13:11
(16) вот запрос к веб-сервису  http://SSMaker.ru/8a0eedd0/

а вот ответ  http://SSMaker.ru/feab8bac/
22 Fragster
 
гуру
22.02.17
13:11
(17) а нафига? я понимаю, когда из жабаскрипта вызываешь - там json актуален, и хттп сервисы проще, но в вебсервисах-то зачем?
23 Fragster
 
гуру
22.02.17
13:11
(21) это хттп сервис
24 DrShad
 
22.02.17
13:12
(19) мне на стороне сайта с ним легче работать, а объяснять долго
25 DrShad
 
22.02.17
13:12
(23) это веб-сервис
спорим?
26 Fragster
 
гуру
22.02.17
13:13
(25) ты вызываешь php, как ты в пхп крутишь данные - мне неизвестно. объекты XDTO на стороне php преобразуются в объекты php, при указании класса - еще и с методами. то, что ты делаешь - можно сделать и без лишней прослойки из php.
27 Fragster
 
гуру
22.02.17
13:14
только http сервисами
28 DrShad
 
22.02.17
13:15
(26) можно, но сделано как сделано, увы
29 DrShad
 
22.02.17
13:17
да и вызывается не php как таковой, а юзается его SOAP-Client
30 Fragster
 
гуру
22.02.17
13:17
более того, эти самые объекты XDTO после преобразования в объекты php, потом замечательно сериализуются средствами php при необходимости, а на стороне php мы работаем с объектами без лишних телодвижений
31 Fragster
 
гуру
22.02.17
13:18
(29) как раз из-за того, что в js нету своего соап клиента. так вот, без прослойки это можно сделать на http сервисах 1с и будет работать быстрее (и сам вызов http сервиса и отсутствие прослойки)
32 DrShad
 
22.02.17
13:19
(31) совет давно понятен, но работает - не трожь
со временем перепишем
33 Fragster
 
гуру
22.02.17
13:22
(32) ну так не надо свои костыли выдавать за правильную архитектуру
34 DrShad
 
22.02.17
13:23
(33) а где я претендовал на правильность?
35 Fragster
 
гуру
22.02.17
13:23
(34) в (13)
36 DrShad
 
22.02.17
13:24
(35) может еще раз перечитать (13)?
37 Fragster
 
гуру
22.02.17
13:26
(20) при формировании своего пакета (xsd схемы) мы прибиваем гвоздями структуру данных, при использовании Массива, json и прочего - мы "договариваемся" о структуре данных.
и тогда получается, что при расширении структуры начальная документация, даже если и была - становится не актуальной, а на актуализацию все забивают. А в случае жесткой схемы - мы вынуждены её модифицировать, получая самодокументируемость.
38 Fragster
 
гуру
22.02.17
13:27
(37)+ конечно, неполную, но лучше, чем ничего
39 Fragster
 
гуру
22.02.17
13:27
(36) я прочитал (13) как "забей на схемы, используй строку с json"
40 DrShad
 
22.02.17
13:35
(39) ну так это же не мои проблемы )))
41 vi0
 
22.02.17
13:36
(37) ты имеешь ввиду, что всегда при использовании непримитивных типов нужно делать свой XDTO-пакет в дереве метаданных и его указывать в веб-сервисе?
чтобы клиент мог через фабрику читать xdto-пакеты?
42 Fragster
 
гуру
22.02.17
13:40
(41) что-то типа того. для сервисов, предназначенных для одинаковых конфигураций объекты конфигурации можно юзать из current-config, но всякие структуры - да, прибивать гвоздями в пакете с именами и типами свойств.
43 vi0
 
22.02.17
13:41
(42) типа того или именно так?
что ты подразумевал под самодокументируемостью?
44 Fragster
 
гуру
22.02.17
13:44
(43) именно так! самодокументируемость - то, что не надо глядеть в код для получения состава передаваемой информации. То, что клиент (в которого загружен пакет) понимает, что что-то на сервере изменилось, и, возможно, надо менять алгоритмы взаимодействия. Ну, по крайней мере, произвести их инспекцию и задать вопросы разработчикам серверной стороны.
45 vi0
 
22.02.17
13:53
(44) хм.. мне кажется, если подобное происходит, то это недоработки серверной части. недоработки в том смысле, что не оповестили клиента
для этого нужно скорее вводить версионность структуры возвращаемых данных
к примеру часть клиентов уже перешла на следующую версию, часть нет, и мы возвращаем разные структуры
46 Fragster
 
гуру
22.02.17
13:56
(45) версионность нужна, да. независимо от того, прибиваем, или нет, гвоздями.
47 dubraver
 
22.02.17
14:30
У клиента должна быть xsd схема, для десериализации объекта. Если xml пришедший из web- сервиса не проходит проверку схемой, то значит изменилась схема на сервере и необходимо об этом оповестить клиента.
48 vi0
 
27.02.17
05:28
(47) А не поздно ли оповещать клиента, если xml уже не прошел проверку на клиенте?
49 vi0
 
01.03.17
05:17
(0) 1с сказала - так и нужно. ошибки нет
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс