Имя: Пароль:
1C
1С v8
Как лучше организовать передачу веб-сервису значений?
0 vladimir80
 
31.05.17
03:04
Всем привет! Нужно на постоянной основе иметь возможность получать от вебсервиса абсолютно различные данные. Для этого создал простенькую функцию, которая принимает на вход текст запроса и возвращает таблицу значений.

Хочется расширить функционал и передавать кроме запроса еще и параметры. Подскажите, как лучше это организовать? В первом приближении видится, что надо передавать соответствие, которое в цикле устанавливать в параметры запроса. Но как это сделать встроенными средствами, без создания пакетов и т.п. - не знаю. Сервис будут дергать не только 1с-ки, но и сайты.
1 zvial
 
31.05.17
05:04
Сайты будут передавать в качестве параметра текст запроса? И получать таблицу значений? А что они потом с ней делать будут?
В общем, можно все сериализовать. В XML )
2 vi0
 
31.05.17
05:48
(0) с точки зрения безопасности не очень красиво
3 vladimir80
 
31.05.17
12:52
(1) Да. Простой пример, передача кода/гуида плана обмена для получения списка номенклатуры, зарегистрированной к обмену по этому сайту, гуида номенклатуры, для которой надо извлечь картинки и т.п.

обратно и так отдается таблица значений в xml, проблем с ее разбором нет. У меня проблема скорее в том, как подсунуть список параметров в xml, как его сформировать текстом и получить в 1с именно в определенном типе, к примеру - соответствие.

(2) Ну это не публичный сервис, такое решение обусловлено невозможностью часто менять конфигурацию, а количество объектов, которые должны получать данные - порядка 10, и задачи получения данных постоянно видоизменяются.
4 ptiz
 
31.05.17
13:06
Структуру - в ХранилищеЗначения со сжатием, и его - сериализовать в xml.
5 vi0
 
31.05.17
13:14
(3) "Ну это не публичный сервис"
тем более
не правильнее логику выборок сделать на сервере? а клиентам сообщать название выборки, параметры и структуру результата
собственно, как это и делается по классике

у клиентской и серверной части будут разные разработчики?
6 vladimir80
 
31.05.17
16:04
(5) Клиент (владелец баз и сайтов-клиентов) - я. То есть это внутренний механизм для собственных нужд. Почему через веб-сервис объяснять долго, просто так надо. Именно по этому и не хочется усложнять, а писать кучу методов под каждый чих в источнике, потом дописывая их обработку в приемнике - ну как то избыточно, имхо.
7 vladimir80
 
31.05.17
17:09
(4) Ок, в этом случае передаются ДД на вход. А вот как их преобразовать в функции сервиса обратно в структуру? Лыжи совсем не едут...
8 Бычье сердце
 
31.05.17
17:19
(0)

1. Создаешь новый параметр в сервисе типа структуры (Structure (http://v8.1c.ru/8.1/data/core))
2. Далее передаешь параметр в следующем виде:
Сериализатор = Новый СериализаторXDTO(ФабрикаXDTO);
Сериализатор.ЗаписатьXDTO(Параметры);
//Параметры тип структура
ВебСервис.ПолучитьТаблицу(ТекстЗапроса, Сериализатор.ЗаписатьXDTO(ПараметрыWebОперации));
3. В самом вебсервисе Сериализатор.ПрочитатьXDTO(Параметры);

Ну далее по циклу параметры загоняешь в запрос.
9 Бычье сердце
 
31.05.17
17:22
Надеюсь понятно объяснил)))
Передаем параметр Сериализатор.ЗаписатьXDTO(Параметры)
В вебсервисе Сериализатор.ПрочитатьXDTO(Параметры);
10 vladimir80
 
31.05.17
17:23
(9) Спасибо, сейчас попробую
11 Бычье сердце
 
31.05.17
17:29
(10)
Это будет работать между 1С. Если с сайтом обмен делать, то надо скорей всего через XML.
12 Юрий Лазаренко
 
31.05.17
17:38
(11) Только не через XML, а через JSON. И не через веб-сервис, а через http-сервис, которому в качестве параметров можно передать произвольную строку (тот же JSON). Работать будет быстрее.
13 vladimir80
 
31.05.17
18:19
(9) Спасибо еще раз, помогло между 1с. Между сайтами чуть позже опробую, технология понятна, основная ошибка была в том, что пытался писать и читать xml, а не xtdo.

(12) Есть ощущение, что произвольную строку можно передать куда угодно. А по поводу скорости - обязательно попробую. Спасибо!
14 Юрий Лазаренко
 
31.05.17
18:22
(13) Можно и веб-сервис произвольную строку передать, не спорю, мы так еще 8 лет назад делали - до сих пор работает, куда ж он денется.
15 Юрий Лазаренко
 
31.05.17
18:23
(13) Плюс http-сервиса как раз в том, что он одинаково хорошо работает как при запросе от 1С, так и при запросе с сайта. Ему ж пофигу, кто строку формировал - строка она и есть строка.