|
Работа с веб сервисом | ☑ | ||
---|---|---|---|---|
0
iQwerty
27.08.13
✎
13:56
|
Добрый день, в общем даже не знаю как начать, но попробую, надеюсь смогу понятно изложить проблему.
Создаю мобильное приложение(МП). Далее нужна передача данных с МП в основную базу. Скачал кофигурацию 1с:Заказы, скачал дистрибутив платформы исполнения мобильных приложений для ПК, разобрался в ней. Только вот штука такая, он отправляет ДанныеОбмена веб сервису в виде ХранилищеЗначения, в котором ЗаписьXML. (Функция СформироватьПакетОбмена(УзелОбмена) Экспорт ...... Возврат Новый ХранилищеЗначения(ЗаписьXML.Закрыть(), Новый СжатиеДанных(9));) А сам веб сервис я не вижу, потому что он уже опубликован не мной, а значит и не вижу операцию, под именем ЗаписатьДанные (ДанныеОбмена = ОбменМобильныеОбщее.СформироватьПакетОбмена(ЦентральныйУзелОбмена); Прокси.ЗаписатьДанные(КодМобильногоКомпьютера, ДанныеОбмена);) Создаю сам веб сервис, и хочу ему передать свои ДанныеОбмена, только понятия не имею как. Наверное что то будет не понятно, переспрашивайте пожалуйста, очень нужна помощь. Спасибо |
|||
1
iQwerty
27.08.13
✎
13:57
|
черт! ничего не понятно
|
|||
2
iQwerty
27.08.13
✎
14:00
|
то есть проблема как раз с операцией ЗаписатьДанные, что должно быть в ее модуле чтобы она создала например документ, на основание передачи ей параметра ДанныеОбмена
|
|||
3
manyak
27.08.13
✎
14:02
|
||||
4
manyak
27.08.13
✎
14:05
|
у тебя есть основная база,в ней делаешь свой вэб-сервис с нужными тебе функциями, публикуешь вюб-сервис. потом можешь с ним общаться из вне, читать и писать данные будешь запросами к веб-сервису.
|
|||
5
iQwerty
27.08.13
✎
14:10
|
(4) Да, это понятно, и с информацией, что на сайте написана тоже знаком, проблема в создании функции, то есть если бы я через веб сервисе создавал документ с двумя реквизитами номер и дата, то я бы просто написал создал на веб сервере функцию с двумя параметрами и использовал их для создания нового объекта. Но у меня много параметров, включая картинки, и вот в той конфе, которую я изучил веб сервису передают не по одному параметру, а просто XML запись, как один параметр в котором содержится вся структура документа, и вот проблема как эту параметр-структуру использовать, чтобы на его основание создался документ
|
|||
6
manyak
27.08.13
✎
14:20
|
про ту конфу не вкурсе что ты изучаешь, но как вариант там на веб-сервисе прописана функция которая в качестве параметра получает набор записей в xml - и на основе его вносит изменения в данные. значит нужно посмотреть код этой функции в веб сервисе той конфы - как этот xml разбирается на что.
т.е. ты можешь сделать функцию с кучей параметров, а можешь содним параметром - в котором кучей все параметры будут лежать и парситься потом функцией веб-сервиса |
|||
7
manyak
27.08.13
✎
14:21
|
прально понял тебя? :)
|
|||
8
iQwerty
27.08.13
✎
14:22
|
(6) вот все точно описал. "значит нужно посмотреть код этой функции в веб сервисе той конфы - как этот xml разбирается на что" не могу найти ее, а проблему очень верно описал, спасибо за понимание) Так вот найти не могу, может подскажите что нибудь
|
|||
9
Serginio1
27.08.13
✎
14:23
|
Добавь в пакетыXDTO своего вэб сервиса пакет http://v8.1c.ru/8.1/data/core
Функция должна возвращать тип ValueStorage (http://v8.1c.ru/8.1/data/core) Значение=Новый ХранилищеЗначения(ЗаписьXML.Закрыть(), Новый СжатиеДанных(9))) Возврат СериализаторXDTO.ЗаписатьXDTO(Значение) v8: Ошибка при вызове web-сервиса 1C 8.3 (Внутренняя ошибка. Ошибка инициализации б) |
|||
10
iQwerty
27.08.13
✎
14:23
|
(7) на все 100:) просто фантастика)
|
|||
11
iQwerty
27.08.13
✎
14:25
|
(9) попробую разобраться, но две первые ссылки из трех не найдены, можно ещё раз ссылочку на пакет
|
|||
12
iQwerty
27.08.13
✎
14:29
|
(9) а вы точно поняли проблему? она хорошо описана тут (6)
|
|||
13
manyak
27.08.13
✎
14:53
|
раз веб сервис не тобой поднят, значит нет доступа у тебя к нему и просмотру кода тела функций? смысл работы с чужим серваком - ликбез?
|
|||
14
iQwerty
27.08.13
✎
14:55
|
(13) я свой же настраиваю
|
|||
15
iQwerty
27.08.13
✎
14:57
|
(13) не совсем понял (9) сообщение, мб там и есть решение
|
|||
16
iQwerty
27.08.13
✎
15:04
|
то есть мой параметр СериализаторXDTO.ЗаписатьXDTO(Значение), а как с помощью этого параметра создать документ в базе с помощью веб сервиса?
|
|||
17
manyak
27.08.13
✎
15:05
|
Прокси.ЗаписатьДанные(КодМобильногоКомпьютера, ДанныеОбмена)
ну остается как-то искать :) вот это "ЗаписатьДанные" и добраться до кода, другое наверно сложно еще что посоветовать, получается есть робящий сервис - но не можешь найи в нем код приема данных и записи их. |
|||
18
manyak
27.08.13
✎
15:07
|
ну и если не получается добраться до кода, сделай свою функцию записи, в веб сервисе сделай новую функцию, передавай в нее параметры, а в ней по этим параметрам тупой 1с код по программному созданию документа и заполнению реквизитов.
|
|||
19
iQwerty
27.08.13
✎
15:12
|
(18) по параметру не выход, найти тоже не получилось.
Спасибо:) |
|||
20
iQwerty
27.08.13
✎
15:14
|
вот как формируется ЗаписьXML, может быть на основании его как то получится выжить функцию?
Функция СформироватьПакетОбмена(УзелОбмена) Экспорт ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.УстановитьСтроку("UTF-8"); ЗаписьXML.ЗаписатьОбъявлениеXML(); ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения(); ЗаписьСообщения.НачатьЗапись(ЗаписьXML, УзелОбмена); ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance"); ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("v8", "http://v8.1c.ru/data"); ТипДанныхУдаления = Тип("УдалениеОбъекта"); ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(УзелОбмена, ЗаписьСообщения.НомерСообщения); Пока ВыборкаИзменений.Следующий() Цикл Данные = ВыборкаИзменений.Получить(); // Если перенос данных не нужен, то, возможно, необходимо записать удаление данных Если Не ОбменМобильныеПереопределяемый.НуженПереносДанных(Данные, УзелОбмена) Тогда // Получаем значение с возможным удалением данных УдалениеДанных(Данные); КонецЕсли; // Записываем данные в сообщение ОбменМобильныеПереопределяемый.ЗаписатьДанные(ЗаписьXML, Данные); КонецЦикла; ЗаписьСообщения.ЗакончитьЗапись(); Возврат Новый ХранилищеЗначения(ЗаписьXML.Закрыть(), Новый СжатиеДанных(9)); КонецФункции |
|||
21
iQwerty
27.08.13
✎
15:16
|
Процедура ЗаписатьДанные(ЗаписьXML, Данные) Экспорт
// В данном случае, нет данных, которые требуют нестандартной обработки // Записываем данные с помощью стандартного метода ЗаписатьXML(ЗаписьXML, Данные); КонецПроцедуры |
|||
22
iQwerty
27.08.13
✎
15:25
|
попробовал
документ.создать(); документ.заполнить(параметр); документ.записать(); ругается поле дата должно быть заполнено....( |
|||
23
Serginio1
27.08.13
✎
16:50
|
Прокси.ЗаписатьДанные(КодМобильногоКомпьютера,ДанныеОбмена);)
ДанныеОбмена какой имеет тип? |
|||
24
Serginio1
27.08.13
✎
16:59
|
В веб сервисах ты можешь оперировать либо простыми типами
Либо объектам XDTO Можно хранилище передавать как строку Значение=Новый ХранилищеЗначения(ЗаписьXML.Закрыть(), Новый СжатиеДанных(9))) СтрокаДляПараметраФункцииВебСервиса = XMLСтрока(Значение); В вэб сервисе преобразуем Хранилище = XMLЗначение(Тип("ХранилищеЗначения"), СтрокаXML); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |