Иногда бывает необходимо сжать длинную строку. А потом восстановить эту строку
Функция СжатьСтроку(СтрокаJSON)
//Для СтрокаJSON длиной 1 000 000 байт
//СтрокаBase64 имеет длину 36 000 байт
СжатиеДанных = Новый СжатиеДанных(9);
Значение = Новый ХранилищеЗначения(СтрокаJSON,СжатиеДанных);
СтрокаBase64 = XMLСтрока(Значение); //Преобразуем в Base64
Возврат СтрокаBase64;
КонецФункции
Функция ВосстановитьСтроку(Стр)
Результат = Стр;
Хранилище = XMLЗначение(Тип("ХранилищеЗначения"), Стр);
СтрокаJSONизХранилища = Хранилище.Получить();
Если НЕ СтрокаJSONизХранилища = Неопределено Тогда // Исползовалось Сжатие через ХранилищеЗначения
Результат = СтрокаJSONизХранилища;
КонецЕсли;
Возврат Результат;
КонецФункции
Орфографическая ошибка в Исползовалось: Исползовалось
Определение длины строки в запросе
СтрокаНеограниченнойДлины (БСП)
СформироватьСтрокуСимволов (БСП)
ИспользоватьНеограниченнуюСтроку (БСП)
Определение длины строки в запросе методом половинного деления
#1, 29 апреля 2024 16:30
Начиная с 8.3.10 предпочтительно использовать глобальную функцию (там разнообразие входящих данных)
Глобальный контекст (Global context)
ПолучитьBase64СтрокуИзДвоичныхДанных (GetBase64StringFromBinaryData)
Синтаксис:
ПолучитьBase64СтрокуИзДвоичныхДанных(<ДвоичныеДанные>)
Параметры:
<ДвоичныеДанные> (обязательный)
Тип: ДвоичныеДанные.
Двоичные данные.
Возвращаемое значение:
Тип: Строка.
Описание:
Преобразует двоичные данные в строку формата Base64.
Полученный текст разбивается на строки длиной 64 символа. В качестве разделителя строк используется сочетание символов CR+LF.
Если целевой декодер Base64 не поддерживает переводы строк, требуется дополнительно обработать строки, чтобы удалить из нее разделители.
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Использование в версии:
Доступен, начиная с версии 8.3.10.
И обратное преобразование
Глобальный контекст (Global context)
ПолучитьДвоичныеДанныеИзBase64Строки (GetBinaryDataFromBase64String)
Синтаксис:
ПолучитьДвоичныеДанныеИзBase64Строки(<Строка>)
Параметры:
<Строка> (обязательный)
Тип: Строка.
Строка в формате Base64.
Возвращаемое значение:
Тип: ДвоичныеДанные.
Описание:
Преобразует строку формата Base64 в двоичные данные.
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Использование в версии:
Доступен, начиная с версии 8.3.10.
#2, 14 мая 2024 10:12
(1) XXLBony, Мне особенно нравиться "Если целевой декодер Base64 не поддерживает переводы строк, требуется дополнительно обработать строки, чтобы удалить из нее разделители." Я уверен, что целевой декодер 1С НЕ поддерживает переводы строк.
#3, 21 августа 2024 09:28
Степень сжатия лучше уменьшить, 9 максимально нагрузит процессор, а результат (особенно при работе с текстом) сопоставим с более низкими параметрами сжатия.