Имя: Пароль:
1C
 
XDTO в веб сервисе
0 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:
},

}
}
3 arsik
 
гуру
15.03.18
10:58
4 arsik
 
гуру
15.03.18
10:59
5 ejikbeznojek
 
15.03.18
11:09
(4) Может обманывают?)
https://prnt.sc/irg21h
6 arsik
 
гуру
15.03.18
11:11
(5) Ты его создать не можешь на уровне конфигурации, но программно нормально все работает. В ссылке, в модуле 2, как раз показано как это делать.
7 ejikbeznojek
 
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..."
]
}
8 ejikbeznojek
 
15.03.18
11:23
(6) Ща попробую)))
9 Ц_У
 
15.03.18
11:25
(7) это в base64?
10 cw014
 
15.03.18
11:28
"В мобильной конфе я не могу создавать такие пакеты."
Ничего не понял. А разве пакеты нужны в обоих базах?
11 ejikbeznojek
 
15.03.18
11:30
СписокКартинок=Документ.Фото.Получить();
МассивКартинок=новый Массив;
Для каждого СтрСписка из СписокКартинок цикл                МассивКартинок.Добавить(строка(СтрСписка.значение));                    
КонецЦикла;        СтруктураДокумента.Вставить("МассивКартинок",МассивКартинок);
записьJSON = новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(записьJSON,СтруктураДокумента);

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

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

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

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

Тип: Строка.

Описание:

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

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

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