Имя: Пароль:
1C
1С v8
Передача больших данных через Веб-сервис. 100Мбайт.
0 simol
 
15.10.12
15:19
Делаю обмен между двумя базами с помощью Веб-сервисов.

На узле отправителя формирую пакет следующим образом

   ЗаписьXML = Новый ЗаписьXML;
   ......
   ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(УзелОбмена, ЗаписьСообщения.НомерСообщения);
   Пока ВыборкаИзменений.Следующий() Цикл
       Данные = ВыборкаИзменений.Получить();
       ЗаписатьДанные(ЗаписьXML, Данные);
   КонецЦикла;
   .....
   Возврат Новый ХранилищеЗначения(ЗаписьXML.Закрыть(), Новый СжатиеДанных(9));


Тип возвращаемого сервисом значения ValueStorage (http://v8.1c.ru/8.1/data/core)

Есть ли ограничения на размер передаваемого хранилища? А то выгрузки в 50Мбайт проходят, а 100Мбайт завершаются ошибкой: bad allocation

Предполагаю, что приходит обрезанные данные
1 simol
 
15.10.12
15:46
Ау, гуры обменов, где вы?
2 acsent
 
15.10.12
15:48
лучше закачивай на ftp и передавай ссылку
3 simol
 
15.10.12
15:51
(2)Дело в том. что это обмен по образу и подобию реализованному в Мобильной платформе. Потому такому варианту обменов суждено жить и хочется разобраться в чем проблема.
4 H A D G E H O G s
 
15.10.12
15:51
Есть такое 60 метров уже падает
5 H A D G E H O G s
 
15.10.12
15:52
Порежь на куски текстовик
6 simol
 
15.10.12
15:55
(5)Собирание кусков, полученных разными вызовами сервисов как-то туманно представляется.
(4)А официальное объяснение 1с не попадалось?
7 simol
 
15.10.12
15:56
(2)Кстати да, на крайняк можно большие файлы через FTP передать. Но хочется запустить сервисом
10 simol
 
15.10.12
15:57
(8)Так все сразу и пишутся, или я не понял комментарий?
11 Fragster
 
гуру
15.10.12
15:57
(10) эт я туплю.
12 simol
 
15.10.12
15:58
(9)Передаются даже вложенные файлы и не получается передать единственный элемент с большим вложением.
13 Fragster
 
гуру
15.10.12
15:59
попробуй пилить по 1000 объектов
14 Fragster
 
гуру
15.10.12
16:00
и передавать в веб сервис массив этих хранилищ
15 Fragster
 
гуру
15.10.12
16:01
вообще сколько у тебя объектов в выборке? может просто меняться чаще?
16 Fragster
 
гуру
15.10.12
16:03
наверное дело в том, что 100 метров распаковываются в несколько гигов, что в память 32битного процесса не влезает - и все.
17 H A D G E H O G s
 
15.10.12
16:07
(16) нет.
18 H A D G E H O G s
 
15.10.12
16:07
Это что то внутреннее, при работе с base64
19 Fragster
 
гуру
15.10.12
16:09
(17) а может дело в используемой 1сом зиповской библиотеки... проведите эксперимент с 2.1 гиговым XML
20 Fragster
 
гуру
15.10.12
16:09
base64???
21 Fragster
 
гуру
15.10.12
16:09
(19) вон, 7.7 тоже ровнехонько на 2 гигах выгрузки загибалась
22 Lama12
 
15.10.12
16:13
(0)У нас тоже проблемы с большим объемом по вэб сервисам.
Только связываем 1С и MS Project server.
Большенство решений которые удалось найти в интернете предлагают резать на кусочки. Но это не всегда получается.
23 Fragster
 
гуру
15.10.12
16:15
Вот это падает на 26 итерации, о чем тут может быть речь?


   МегаСтрока = "ф";
   Д = 1;
   Для Сч = 1 по 100 Цикл
       МегаСтрока = МегаСтрока + МегаСтрока;
   КонецЦикла;
24 H A D G E H O G s
 
15.10.12
16:26
(20) Ну да. Как ты в XML поместишь недопустимые символы?
25 H A D G E H O G s
 
15.10.12
16:27
Да и в принципе в ХранилищахЗначений все в base64 храница вроде.
26 H A D G E H O G s
 
15.10.12
16:27
Даже после сжатия.
27 Fragster
 
гуру
15.10.12
16:28
(24) да не, я знаю, что хранилище идет в base64 в XML, я про то, что в принципе не создатьхранилище с содержимым больше 2 гигов

(25) а не зип?
28 Fragster
 
гуру
15.10.12
16:28
(26) наверное это сериализатор его так представляет, все таки, а как оно на самом деле - хз.
29 H A D G E H O G s
 
15.10.12
16:36
Надо лезть в SQL
30 H A D G E H O G s
 
15.10.12
16:37
Хотяяя, счаст слазью.
31 simol
 
15.10.12
17:09
(30)Как там?
32 Fragster
 
гуру
15.10.12
17:47
(31) там в поле с типом imageлежит бинарник. а вот что в бинарнике - хз
33 acsent
 
15.10.12
17:48
в sql конечно бинарник, но в вебсервисе он передается как base64
34 simol
 
15.10.12
19:05
Чтобы узнать размер ЗаписьXML сразу узнать можно или нужно в строку и СтрДлина или в двоичные и Размер или в файл и размер файла?
35 H A D G E H O G s
 
15.10.12
19:16
В Image - бинарные, нет base64
36 simol
 
17.10.12
12:35
Сделал переброс данных более 50 Мб через FTP
37 QLgKR
 
17.10.12
13:18
(0) суть в том, что платформа читает SOAP сообщение целиком всегда. И если сообщение большое, то может не хватить памяти для обработки.
Нужно резать на куски и передавать частями.
38 Широкий
 
17.10.12
13:22
Упаковать в zip и передать двоичные данные