|
СжатиеДанных(9) портит XML | ☑ | ||
---|---|---|---|---|
0
perpleks
22.02.17
✎
11:36
|
Есть веб-сервис, который отдает хранилище значения с XML.
Код: ОтветСжатый = Новый ХранилищеЗначения(Сообщение, Новый СжатиеДанных); ОтветСжатый.Получить() Результат: <CatalogObject.ЗначенияСвойствОбъектов xsi:type="CatalogObject.ЗначенияСвойствОбъектов"> <Ref>4e745b2e-a9ff-11e5-fb89-da932d334384</Ref> <DeletionMark>false</DeletionMark> <Owner xsi:type="CatalogRef.СвойстваОбъектов">3695027a-7831-11e3-8927-0007e90f2690</Owner> <Code>Ц00000389</Code> <Description>blablabla</Description> </CatalogObject.ЗначенияСвойствОбъектов> Код: ОтветСжатый = Новый ХранилищеЗначения(Сообщение, Новый СжатиеДанных(9)); ОтветСжатый.Получить() Результат: <CatalogObject.ЗначенияСвойствОбъектов xsi:type="CatalogObject.ЗначенияСвойствОбъектов"> <Ref>4e745b2e-a9ff-11e5-fb89-da932d334384</Ref> <DeletionMark>false</DeletionMark> <Owner xsi:type="CatalogRef.СвойстваОбъектов">3695027a-7831-11e3-8927-0007e90f2690</Owner> <Description>blablabla</Description> </CatalogObject.ЗначенияСвойствОбъектов> WTF? Каждый раз пропадают несколько случайных узлов. Код выполняется на сервере Linux, 8.3.9.1850. На клиенте такого не наблюдается. Такое возможно или я сошел с ума? |
|||
1
banco
22.02.17
✎
11:40
|
передавай обычный текст
|
|||
2
perpleks
22.02.17
✎
11:42
|
Передается на планшеты через мобильный интернет, хотел размер выгрузки как можно меньше сделать
|
|||
3
Lama12
22.02.17
✎
11:44
|
(2) В 1С лучше написать с примером. Хоть исправят.
|
|||
4
Fragster
гуру
22.02.17
✎
11:46
|
а 8 портит? а вообще странно.
|
|||
5
Fragster
гуру
22.02.17
✎
11:46
|
там же зип обыкновенный
|
|||
6
perpleks
22.02.17
✎
11:48
|
С 8 прошло где-то 600 элементов без проблем сейчас.
С 9 наблюдается только если несколько сотен элементов, испорченными оказываются несколько штук, каждый раз разные |
|||
7
perpleks
22.02.17
✎
11:50
|
Ну, т.е. в одном и том же сообщении испорченные одни и те же элементы, вроде бы, если сообщение минимально меняется, вылетают уже другие элементы
|
|||
8
Fragster
гуру
22.02.17
✎
12:07
|
пиши на [email protected], ошибка то очень жесткая
|
|||
9
Жан Пердежон
22.02.17
✎
12:14
|
мда, переходи после такого на Linux
|
|||
10
MrStomak
22.02.17
✎
12:25
|
Используй Fastinfoset вместо сжатия, он компактный вроде.
Вообще по СжатиеДанных и xml я не вижу никакой связи. В этот момент в платформе не должно происходить никакого анализа узлов, чтобы их можно было потерять. Никакого сбора схем xml или чего-то такого. Т.е. "битый" файл не должен выглядеть, как пропавший целый узел xml. Я склонен думать, что автор что-то упускает и различие в данных не привязано к сжатию. |
|||
11
Жан Пердежон
22.02.17
✎
12:29
|
(10) ага, используй FastInfoSet и лови периодически
"Недостаточно памяти для записи файла формата Base64" |
|||
12
perpleks
22.02.17
✎
12:31
|
(10) Я и сам понимаю, что это не похоже на битый файл, но вот больше вообще ничего не менял в коде. С 9 не загружается клиентом, с 8 загружается. Меняю обратно на 9, опять такая же ерунда.
Встаю отладчиком на следующую строчку, пишу ОтветСжатый.Получить(): с 9 пропавшие узлы, с 8 нормально |
|||
13
RomanYS
22.02.17
✎
12:38
|
"Не верю!"
Проблема явно не в хранилище и не в платформе. Смотри где у тебя формируется Сообщение. |
|||
14
MrStomak
22.02.17
✎
12:39
|
(12)
1. Подготовь xml, сохрани в файл. 2. Напиши обработку, где ты этот файл берёшь, сжимаешь, разжимаешь и он <> исходному файлу. 3. Файл и обработку шлешь на [email protected] и сюда желательно тоже Но скорее всего, по такому алгоритму ты ошибку не воспроизведешь, потому что сжатие не при чем. |
|||
15
Жан Пердежон
22.02.17
✎
12:56
|
(12) покажи код как сообщение собираешь
|
|||
16
perpleks
22.02.17
✎
13:43
|
Так, значит от степени сжатия не зависит, то воспроизводится, то нет с любой степенью.
Без сжатия ни разу не получилось воспроизвести. Полностью согласен, что это бредово звучит и скорее всего ошибка в чем-то другом, но почему без сжатия это у меня не воспроизводится я понять не могу. Формирую примерно так НаборСхемXML = ФабрикаXDTO.ЭкспортСхемыXML("..."); Фабрика = Новый ФабрикаXDTO(НаборСхемXML); ... Пока Выборка.Следующий() Цикл Элемент = Фабрика.Создать(Фабрика.Тип(УИР, "CatalogObject.ЗначенияСвойствОбъектов")); Элемент.Ref = XMLСтрока(Выборка.Ссылка); Элемент.DeletionMark = XMLСтрока(Выборка.ПометкаУдаления); Элемент.Owner = Фабрика.Создать(Фабрика.Тип(URI, "CatalogRef.СвойстваОбъектов"), XMLСтрока(Выборка.Владелец)); Элемент.Code = XMLСтрока(Выборка.Код); Элемент.Description = XMLСтрока(ЗаменитьНедопустимыеСимволыXML(Выборка.Наименование)); Фабрика.ЗаписатьXML(ХМЛ, Элемент,,,,НазначениеТипаXML.Явное); КонецЦикла; |
|||
17
Fragster
гуру
22.02.17
✎
13:49
|
и зачем ты для примитивных типов вызываешь XMLСтрока?
|
|||
18
Fragster
гуру
22.02.17
✎
13:50
|
да и для ссылок, емнип, тоже не надо
|
|||
19
Fragster
гуру
22.02.17
✎
13:51
|
если правильный тип в пакете/схеме
|
|||
20
perpleks
22.02.17
✎
13:52
|
(17) (18) это артефакты попыток выяснить, в чем проблема с формированием XML, надо убрать
|
|||
21
Жан Пердежон
22.02.17
✎
13:55
|
(20) в схеме "косяк", фабрика может необязательные пустые поля выкидывать
|
|||
22
Fragster
гуру
22.02.17
✎
13:58
|
а CatalogObject.ЗначенияСвойствОбъектов мне подозрительно напоминает использование current-config. если структура метаданных идентична - то можно использовать СериализаторXDTO.ЗаписатьXDTO для сериализации/десериализации объектов
|
|||
23
perpleks
22.02.17
✎
14:03
|
(22) нет, не current-config, схема экспортирована из конфигурации базы-приемника
(21) наверное может, но в выборке нет пустых полей, там все значения заполняются |
|||
24
Жан Пердежон
22.02.17
✎
15:52
|
В чем разница?
Фабрика.Тип(URI Фабрика.Тип(УИР |
|||
25
Лефмихалыч
22.02.17
✎
16:03
|
(0) может там прокси какой и это какой-нить гнилой кэш?
|
|||
26
vde69
22.02.17
✎
16:22
|
цифорку 9 может уберешь ??? а то алгоритм сжатия и раскрытия может быть разный...
|
|||
27
Вафель
22.02.17
✎
16:25
|
возможно zip файлы бьются.
Делай хэш и сравнивай также его. У нас на одном проекте такое было |
|||
28
Вафель
22.02.17
✎
16:26
|
пусть веб сервис отдает также md5
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |