Сжатие длинной Строки

ProxyInspector 53 2 3

Иногда бывает необходимо сжать длинную строку. А потом восстановить эту строку

Функция СжатьСтроку(СтрокаJSON)
	//Для СтрокаJSON длиной 1 000 000 байт
	//СтрокаBase64 имеет длину 36 000 байт
	
	СжатиеДанных = Новый СжатиеДанных(9);
	Значение = Новый ХранилищеЗначения(СтрокаJSON,СжатиеДанных);
	СтрокаBase64 = XMLСтрока(Значение);								//Преобразуем в Base64 			
	Возврат СтрокаBase64;
КонецФункции

Функция ВосстановитьСтроку(Стр)

	Результат = Стр;
	
	Хранилище = XMLЗначение(Тип("ХранилищеЗначения"), Стр);	
	СтрокаJSONизХранилища = Хранилище.Получить();
	Если НЕ СтрокаJSONизХранилища = Неопределено Тогда		//  Исползовалось Сжатие через ХранилищеЗначения
		Результат = СтрокаJSONизХранилища;
	КонецЕсли;				

	Возврат Результат;
КонецФункции
3
Орфографическая ошибка в Исползовалось: Исползовалось

Комментарии

XXLBony
#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.


ProxyInspector
#2, 14 мая 2024 10:12

(1) XXLBony, Мне особенно нравиться "Если целевой декодер Base64 не поддерживает переводы строк, требуется дополнительно обработать строки, чтобы удалить из нее разделители." Я уверен, что целевой декодер 1С НЕ поддерживает переводы строк.


prog1c
#3, 21 августа 2024 09:28

Степень сжатия лучше уменьшить, 9 максимально нагрузит процессор, а результат (особенно при работе с текстом) сопоставим с более низкими параметрами сжатия.


См. также

Определение длины строки в запросе

СтрокаНеограниченнойДлины (БСП)

ОписаниеТиповСтрока (БСП)

СформироватьСтрокуСимволов (БСП)

ДополнитьСтроку (БСП)

ИспользоватьНеограниченнуюСтроку (БСП)

Строка из символа

Определение длины строки в запросе методом половинного деления

РазложитьСтрокуВМассивПодстрок (БСП)

Модератору