Имя: Пароль:
1C
1С v8
Передача строки большого объёма с сервера на клиент
0 mefisto666series
 
30.08.16
18:54
Доброго времени суток, господа. Есть такая задача: Нужно выгрузить цены в xml. На сервере метод фарширует таблицу значений ценами, получается порядка 150000 записей. Затем, там же на сервере, перебирая эту таблицу получаем текст XML. полученный текстXML, просматриваемый через вычислить выражение содержит 2353 строки и заканчивается многоточием. ВОзможно, это связано с особенностями отображения. Всё вышеописанное происходит вместе с получением кучи других классификаторов по аналогичной схеме. На основании всех выбранных данных так же формируется текст xml, всё это собирается в структуру и отправляется на клиент с целью записи в файл. В этой ситуации при возврате структуры на клиент получаю ошибку "Ошибка преобразования данных XDTO". Хотя структура кроме строк ничего в себе не содержит. Почему именно цены? если цены не передавать или передавать пустую строку, всё ок. Даже если искусственно снизить количество записей до где-то 100 000, всё равно нормально выгружается. В чем дело? Может, как-то можно обойти, или причина вообще в другом? Код, если надо, могу предоставить.
1 Defender aka LINN
 
30.08.16
18:57
А почему бы сразу файлы не передавать?
2 Господин ПЖ
 
30.08.16
18:59
150000 в xml запихивать - маньяки
3 mefisto666series
 
30.08.16
19:05
(1) ну так сервер же? Можно получить имя временного файла, в него запихнуть, но как к нему доступ на клиенте получить? или в base64 его? Но объем все равно будет большой.
4 Неверный Параметр И
 
30.08.16
19:08
Предлагаю для полного счастья повторить это в веб-клиенте...
Ну чудесатьте ж вы на сервере, отдайте клиенту готовый файл, он его сразу себе файловую систему положит и будет по уши рад. Для кого временное хранилище придумали?
5 H A D G E H O G s
 
30.08.16
19:11
Записывать в файл через ЗаписьXML сразу, без всяких текстовых строк, этот файл класть во врем.хран, на клиент отдавать адрес врем.хран.
6 Зая Бусечка
 
30.08.16
19:13
+5 и зиповать его
7 H A D G E H O G s
 
30.08.16
19:16
(6) Без вас зазипуют.
8 Torquader
 
30.08.16
23:03
У меня, когда надо было много передать с сервера на клиента, использовался массив - то есть каждая строка исходного текста - это элемент массива - он прекрасно летит с сервера, а на клиенте мы его "склеиваем".
9 youalex
 
30.08.16
23:05
(6) в хз можно пихнуть со сжатием
10 Defender aka LINN
 
30.08.16
23:43
(3) "ну так сервер же?"
То есть, когда ты с сервера Microsoft, находящегося на другом континенте, получаешь в пользование какой-нибудь MS Office, а то и целый MSSQL - это нормально. А с одной машины в локальной сети передать на другую XML-файл - то это уже как-то сложно и вообще колдунством попахивает?
11 H A D G E H O G s
 
30.08.16
23:52
(9) Плохая идея.
12 youalex
 
31.08.16
00:29
(11) почему? (не придираюсь, на самом деле - интересно)
13 H A D G E H O G s
 
31.08.16
00:39
(12) Будет происходить та же сериализация в
ЗначениеВСтрокуВнутр()
Потом сжатие при Новый СжатиеДанных
Потом сериализация в XDTO
потом сжатие (но не уверен) протоколом передачи платформы
и все в обратном порядке на клиенте.

Через временное хранилище все на порядки быстрее (но механизмом не интересовался, так как скорость удовлетворяла).
14 assasu
 
31.08.16
05:27
(0) я делал обмен с 20Г файлом xml. все работало. думаю проблема не в размере , а в "заканчивается многоточием". На каком то этапе файл ломается.
15 mefisto666series
 
31.08.16
10:24
(14) ЗаписьXML.Закрыть()
16 Неверный Параметр И
 
31.08.16
10:34
(14) Нет. Окно дебаггера для просмотра строк, оно поумнее некоторых будет.
17 mefisto666series
 
31.08.16
10:50
(16) да, я думаю оно просто ограничивает объем выводимого текста
18 H A D G E H O G s
 
31.08.16
11:44
(15) выводи в файл, а не в текстовую переменную.
19 youalex
 
31.08.16
19:28
(13) ясно, спасибо.