Вход | Регистрация


XDTO в веб сервисе

XDTO в веб сервисе
Я
   ejikbeznojek
 
15.03.18 - 10:36
Привет всем.
У меня есть самописное конфа на мобильной платформе. Которая обменивается данными с обычной базой через веб сервис. Но я там навелосипедил. У меня в WS функция с набором примитивных параметров (с типами строка, число, base64  для передачи фоточек). Для того чтобы передать список товаров из приложения, я собираю длинную текстовую строчку с разделителями. И передаю в 1 из параметров с типом строка.
А для картинок я сделал цикл, в котором для каждой картинки вызывается фунция WS и перезаписывается документ.
Для каждого СтрСписка из СписокКартинок цикл
DD=СтрСписка.значение;
ДанныеЗаявки=Прокси.Save("DD",Документ.Адрес.Контрагент,DD,Строка(Документ.дата),Префикс,Документ.Номер,ТекАдрес,Документ.Адрес.Родитель.Наименование,Документ.Адрес.Город,Документ.Адрес.Улица,Документ.Адрес.Дом,Организация,ВремяРаботы,ЮрАдрес);                            
КонецЦикла;

Сейчас это всё работает и жалоб ни у кого нет. Но у меня появилось свободное время и я решил переделать по человечески.
Я сделал в базе на сервере пакет XDTO. В котором описал некую структуру https://prnt.sc/irfnxs
пока что упрощённо. Но этот пакет он же только в базе на сервере. В мобильной конфе я не могу создавать такие пакеты. Как мне создать некую структуру, чтобы передать с мобильной конфы на сервер всё одной кучей?
 
 
   Ц_У
 
1 - 15.03.18 - 10:49
отдай json
   Ц_У
 
2 - 15.03.18 - 10:55
Что-то вроде этого

{
number: 1
picture: "base64"
items:
{
{name:
code:
count:
},
{name:
code:
count:
},

}
}
   arsik
 
3 - 15.03.18 - 10:58
   arsik
 
4 - 15.03.18 - 10:59
   ejikbeznojek
 
5 - 15.03.18 - 11:09
(4) Может обманывают?)
https://prnt.sc/irg21h
   arsik
 
6 - 15.03.18 - 11:11
(5) Ты его создать не можешь на уровне конфигурации, но программно нормально все работает. В ссылке, в модуле 2, как раз показано как это делать.
   ejikbeznojek
 
7 - 15.03.18 - 11:22
(2) Блин, он двоичные данные картинки в строке передаёт. Когда я их пытался передавать текстом у меня не очень быстро всё работало.

У меня вот такой текст получился. Для документа с 2мя фотками. Даже пробовать боюсь на сервере это всё читать))


{
"Номер": "000000001",
"дата": "2018-03-15T11:20:39",
"МассивТоваров": [
{
"КодНоменклатуры": "0000000001",
"Количество": 1
},
{
"КодНоменклатуры": "0000000002",
"Количество": 3
}
],
"МассивКартинок": [
"FF D8 FF E0 00 10 4A 46 49 46 00 01 01 00 00 48 00 48 00 00 FF E1 00 58 45 78 69 66 00 00 4D 4D 00 2A 00 00 00 08 00 02 01 12 00 03 00 00 00 01 00 01 00 00 87 69 00 04 00 00 00 01 00 00 00 26 00 00 00 00 00 03 A0 01 00 03 00 00 00 01 00 01 00 00 A0 02 00 04 00 00 00 01 00 00 09 90 A0 03 00 04 00 00 00 01 00 00 0C C0 00 00 00 00 FF ED 00 38 50 68 6F 74 6F 73 68 6F 70 20 33 2E 30 00 38 42 49 4D 04 04 00 00 00 00 00 00 38 42 49 4D 04 25 00 00 00 00 00 10 D4 1D 8C D9 8F 00 B2 04 E9 80 09 98 EC F8 42 7E FF C0 00 11 08 0C C0 09 90 03 01 22 00 02 11 01 03 11 01 FF C4 00 1F 00 00 01 05 01 01 01 01 01 01 00 00 00 00 00 00 00 00 01 02 03 04 05 06 07 08 09 0A 0B FF C4 00 B5 10 00 02 01 03 03 02 04 03 05 05 04 04 00 00 01 7D 01 02 03 00 04 11 05 12 21 31 41 06 13 51 61...",
"FF D8 FF E0 00 10 4A 46 49 46 00 01 01 00 00 48 00 48 00 00 FF E1 00 58 45 78 69 66 00 00 4D 4D 00 2A 00 00 00 08 00 02 01 12 00 03 00 00 00 01 00 01 00 00 87 69 00 04 00 00 00 01 00 00 00 26 00 00 00 00 00 03 A0 01 00 03 00 00 00 01 00 01 00 00 A0 02 00 04 00 00 00 01 00 00 09 90 A0 03 00 04 00 00 00 01 00 00 0C C0 00 00 00 00 FF ED 00 38 50 68 6F 74 6F 73 68 6F 70 20 33 2E 30 00 38 42 49 4D 04 04 00 00 00 00 00 00 38 42 49 4D 04 25 00 00 00 00 00 10 D4 1D 8C D9 8F 00 B2 04 E9 80 09 98 EC F8 42 7E FF C0 00 11 08 0C C0 09 90 03 01 22 00 02 11 01 03 11 01 FF C4 00 1F 00 00 01 05 01 01 01 01 01 01 00 00 00 00 00 00 00 00 01 02 03 04 05 06 07 08 09 0A 0B FF C4 00 B5 10 00 02 01 03 03 02 04 03 05 05 04 04 00 00 01 7D 01 02 03 00 04 11 05 12 21 31 41 06 13 51 61..."
]
}
   ejikbeznojek
 
8 - 15.03.18 - 11:23
(6) Ща попробую)))
   Ц_У
 
9 - 15.03.18 - 11:25
(7) это в base64?
   cw014
 
10 - 15.03.18 - 11:28
"В мобильной конфе я не могу создавать такие пакеты."
Ничего не понял. А разве пакеты нужны в обоих базах?
 
 Рекламное место пустует
   ejikbeznojek
 
11 - 15.03.18 - 11:30
СписокКартинок=Документ.Фото.Получить(); 
МассивКартинок=новый Массив;
Для каждого СтрСписка из СписокКартинок цикл                МассивКартинок.Добавить(строка(СтрСписка.значение));                    
КонецЦикла;        СтруктураДокумента.Вставить("МассивКартинок",МассивКартинок);
записьJSON = новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(записьJSON,СтруктураДокумента);

СтрСписка.значение это двоичные данные. Когда я их пытался вставлять без преобразования к строке, он мне при ЗаписатьJSON ругался на недопустимый тип данных.
   ejikbeznojek
 
12 - 15.03.18 - 11:32
(10) Я пока не понял ещё. Я с ними 1й раз работаю)))
   Ц_У
 
13 - 15.03.18 - 11:33
Глобальный контекст (Global context)
Base64Строка (Base64String)
Синтаксис:

Base64Строка(<Значение>)
Параметры:

<Значение> (обязательный)

Тип: ДвоичныеДанные.
Двоичные данные, которые необходимо закодировать по алгоритму base64.
Возвращаемое значение:

Тип: Строка.

Описание:

Получает строку, закодированную по алгоритму base64.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
   cw014
 
14 - 15.03.18 - 11:33
(12) А как у тебя сейчас устроено? В обоих базах одинаковые пакеты XDTO что ли?
   Ц_У
 
15 - 15.03.18 - 11:34
И если это картинка товара, то передавай ее вместе с товаром а не отдельным массивом
   ejikbeznojek
 
16 - 15.03.18 - 11:45
(14) Сейчас без всяких XDTO. Просто примитивными типами всё передаю в функцию на WS. В несколько заходов.
(15) Это картинка полки, на которой что-то лежит. Она не относится к самой номенклатуре.
   ejikbeznojek
 
17 - 15.03.18 - 13:12
(13) Вроде бы всё нормально заработало.
Спасибо.

Список тем форума
Рекламное место пустует  Рекламное место пустует
Ошибка? Это не ошибка, это системная функция.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует