INFOSTART EVENT 2018 EDUCATION

Второй тур голосования за доклады.
Окончание 5 сентября.

Назаров Алексей | Заместитель ИТ- директора | ПАО «Группа компаний ПИК»

«Открытая экосистема 1С в самом крупном девелопере России и Европы. Как быть на острие технологий?»

1. Бюджетирование, контроль проектирования, производство, строительство, обслуживание и многое другое. Все это на 1С? Да. Общая IT архитектура крупнейшего строительного холдинга. 2. Как сэкономить миллиард при помощи 1С? Проект централизованной номенклатуры. 3. 1С на стройке и управление мотивацией рабочего: Мобильное приложение на 1С: “ПИК-Строитель”. 4. Как 1С подружил AD с G-Suite и корпоративными системами. 5. Сердце финансов “1С Единая Финансовая Система” и собственный движок согласования “1С Система Управления Процессами”. 6. Электронный документооборот(электронные КС-2,3 и акты), собственный удостоверяющий центр и как это помогло 1С. 7. Консолидация бухгалтерских данных холдинга в онлайне из множества разных конфигураций и баз данных: “1С Хранилище Консолидированных Данных”. 8. 1С:ERP как целевая система для всех производств холдинга - это возможно?

Чтение сжатого gzip, deflate HTTP ответа сервера. Без ВК. Уменьши время загрузки и сократи трафик в 3 раза

Обмен - Интеграция с WEB

65
В платформе 1С:Предприятие не реализовано штатного механизма декодирования ответа веб серверов, в которых присутствует gzip сжатие. Некоторые использовали WinHttpRequest.5.1 , кто-то писал ВК. Друзья, хватит. Вот вам решение.

Будет работать на платформе 8.3.9 + . Потому что работа с двоичными данными появилась только в них.

Многие искали ответ на этот вопрос, и тут, и на партнерском форуме, тема действительно актуальная, сейчас все работает со сжатием.

Суть метода лежала на поверхности, что такое GZIP - это формат схожих с ZIP , но отличающейся заголовочными блоками.

1) Вставляем заголовок, чтобы сервер понимал, что мы умеем принимать этот формат

Заголовки.Вставить("Accept-Encoding", "gzip");

2) Получаем ответ в виде двоичных данных 

3) Вырезаем сжатое тело (Байты с 10 по ДлинаТела - 8)

4) Формируем валидные залоговоки формата ZIP файла и добавляем к нему сжатое тело (Пример формирование валидных ZIP заголовков взят отсюда //infostart.ru/public/618906/, и доработаны)

5) Извлекаем данные с использованием ЧтениеZipФайла

 

Во вложении готовая функция, можно копировать в проект и использовать.

Если будет советы по оптимизации и улучшению, просьба в личку.

65

Скачать файлы

Наименование Файл Версия Размер
Готовая функция
.epf 8,52Kb
08.06.18
16
.epf 1 8,52Kb 16 Скачать

См. также

Комментарии
Сортировка: Древо
1. PerlAmutor 28 08.06.18 11:57 Сейчас в теме
(0)
Будет работать на платформе 8.3.9 + . Потому что работа с двоичными данными появилась только в них.

Тема актуальная, т.к. сайт РБК "любит" отдавать курсы валют в Gzip формате, если запрашивать периодом. Никакие переданные ему ключи в заголовках на его поведение не влияют.

К сожалению у меня платформа 8.3.7. Каким-то образом в ней можно извернуться так, чтобы добавить к данным заголовок (может через прямое редактирование base64 строки)?
---
Кажется нашел как можно сделать на старых платформах, благодаря Александру Шпагину, но это работает только с deflate, а по поводу Gzip вопрос остается открытым:

// сжатие решается конструкцией: 
    
    ХЗ = Новый ХранилищеЗначения(НашеЗначениеКотороеНадоСжать, СжатиеДанных(9));
    СтрокаBase64 = СериализаторXDTO.XMLСтрока(ХЗ);
    СжатыеДвоичныеДанные = Base64Значение(СтрокаBase64);


// распаковка: 
    СтрокаBase64 = Base64Строка(СжатыеДвоичныеДанные);
    ХЗ = СериализаторXDTO.XMLЗначение(Тип("ХранилищеЗначения"), СтрокаBase64);
    НашеЗначение = ХЗ.Получить();

Показать
DrAku1a; Поручик; gradi; +3 Ответить
2. Malfarion 191 08.06.18 12:36 Сейчас в теме
(1) Говорят что формат deflate не используется сейчас веб серверами, хотя deflate = gzip без заголовков (чисто сжатые данные), для стандартизации все перешли на gzip.
3. PerlAmutor 28 08.06.18 16:20 Сейчас в теме
(1) К сожалению вариант с ХранилищемЗначения не работает, если на вход поступает Base64 строка с чистыми Deflate данными...
4. oyti 14 08.06.18 17:15 Сейчас в теме
Как раз совсем недавно бился над данным вопросом и временно перешел на обмен без сжатия (что так себе вариант).
Спасибо. Будем тестировать...
5. PerlAmutor 28 09.06.18 12:11 Сейчас в теме
Кстати насчет обновления курсов валют с сайта РБК. Один и тот же запрос валюты может возвращать 10 раз несжатый траффик, а потом ему что-то в голову бьет и начинает возвращать снова в gzip.
6. fr13 09.06.18 19:40 Сейчас в теме
автор, спасибо! актуально
Оставьте свое сообщение