|   |   | 
| 
 | СжатиеДанных(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 | 
        пиши на v8@1c.ru, ошибка то очень жесткая     | |||
| 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. Файл и обработку шлешь на v8@1c.ru и сюда желательно тоже Но скорее всего, по такому алгоритму ты ошибку не воспроизведешь, потому что сжатие не при чем. | |||
| 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     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |