1С 8.3 Сжатие строки
Данные > Примеры кода 1С > 1С 8.3 Строка, текст, буквы
Перейти в раздел примеры кода 1С 8.3:
Сжать и восстановить длинную строку в 1С 8.3 (от ProхyInspectоr):
Функция СжатьСтроку(СтрокаJSON)
// Для СтрокаJSON длиной 1 000 000 байт
// СтрокаBase64 имеет длину 36 000 байт
СжатиеДанных = Новый СжатиеДанных(9);
Значение = Новый ХранилищеЗначения(СтрокаJSON,СжатиеДанных);
СтрокаBase64 = XMLСтрока(Значение); // Преобразуем в Base64
Возврат СтрокаBase64;
КонецФункции
Функция ВосстановитьСтроку(Стр)
Результат = Стр;
Хранилище = XMLЗначение(Тип("ХранилищеЗначения"), Стр);
СтрокаJSONизХранилища = Хранилище.Получить();
Если НЕ СтрокаJSONизХранилища = Неопределено Тогда // Исползовалось Сжатие через ХранилищеЗначения
Результат = СтрокаJSONизХранилища;
КонецЕсли;
Возврат Результат;
КонецФункции
&НаКлиенте
Процедура Тест()
ТестоваяСтрока="какая-то строка";
ТестоваяСтрокаСжата = СжатьСтроку(ТестоваяСтрока);
Сообщить(ТестоваяСтрокаСжата); //AgFTS2/0iI3BT...
ТестоваяСтрокаВосстановлена = ВосстановитьСтроку(ТестоваяСтрокаСжата);
Сообщить(ТестоваяСтрокаВосстановлена); //какая-то строка
КонецПроцедуры
// Для СтрокаJSON длиной 1 000 000 байт
// СтрокаBase64 имеет длину 36 000 байт
СжатиеДанных = Новый СжатиеДанных(9);
Значение = Новый ХранилищеЗначения(СтрокаJSON,СжатиеДанных);
СтрокаBase64 = XMLСтрока(Значение); // Преобразуем в Base64
Возврат СтрокаBase64;
КонецФункции
Функция ВосстановитьСтроку(Стр)
Результат = Стр;
Хранилище = XMLЗначение(Тип("ХранилищеЗначения"), Стр);
СтрокаJSONизХранилища = Хранилище.Получить();
Если НЕ СтрокаJSONизХранилища = Неопределено Тогда // Исползовалось Сжатие через ХранилищеЗначения
Результат = СтрокаJSONизХранилища;
КонецЕсли;
Возврат Результат;
КонецФункции
&НаКлиенте
Процедура Тест()
ТестоваяСтрока="какая-то строка";
ТестоваяСтрокаСжата = СжатьСтроку(ТестоваяСтрока);
Сообщить(ТестоваяСтрокаСжата); //AgFTS2/0iI3BT...
ТестоваяСтрокаВосстановлена = ВосстановитьСтроку(ТестоваяСтрокаСжата);
Сообщить(ТестоваяСтрокаВосстановлена); //какая-то строка
КонецПроцедуры
Начиная с 8.3.10 предпочтительно использовать глобальную функцию (там разнообразие входящих данных):
// Глобальный контекст (Global context)
ПолучитьBase64СтрокуИзДвоичныхДанных(GetBase64StringFromBinaryData)
// Синтаксис:
ПолучитьBase64СтрокуИзДвоичныхДанных()
// Параметры:
// (обязательный)
// Тип: ДвоичныеДанные.
// Двоичные данные.
// Возвращаемое значение:
// Тип: Строка.
// Описание:
// Преобразует двоичные данные в строку формата Base64.
// Полученный текст разбивается на строки длиной 64 символа.
// В качестве разделителя строк используется сочетание символов CR+LF.
// Если целевой декодер Base64 не поддерживает переводы строк,
// требуется дополнительно обработать строки, чтобы удалить из нее разделители.
// Доступность:
// Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение,
// мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
// И обратное преобразование
// Глобальный контекст (Global context)
ПолучитьДвоичныеДанныеИзBase64Строки(GetBinaryDataFromBase64String)
// Синтаксис:
ПолучитьДвоичныеДанныеИзBase64Строки()
// Параметры:
// (обязательный)
// Тип: Строка.
// Строка в формате Base64.
// Возвращаемое значение:
// Тип: ДвоичныеДанные.
// Описание:
// Преобразует строку формата Base64 в двоичные данные.
// Доступность:
// Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение,
// мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
ПолучитьBase64СтрокуИзДвоичныхДанных(GetBase64StringFromBinaryData)
// Синтаксис:
ПолучитьBase64СтрокуИзДвоичныхДанных()
// Параметры:
// (обязательный)
// Тип: ДвоичныеДанные.
// Двоичные данные.
// Возвращаемое значение:
// Тип: Строка.
// Описание:
// Преобразует двоичные данные в строку формата Base64.
// Полученный текст разбивается на строки длиной 64 символа.
// В качестве разделителя строк используется сочетание символов CR+LF.
// Если целевой декодер Base64 не поддерживает переводы строк,
// требуется дополнительно обработать строки, чтобы удалить из нее разделители.
// Доступность:
// Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение,
// мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
// И обратное преобразование
// Глобальный контекст (Global context)
ПолучитьДвоичныеДанныеИзBase64Строки(GetBinaryDataFromBase64String)
// Синтаксис:
ПолучитьДвоичныеДанныеИзBase64Строки()
// Параметры:
// (обязательный)
// Тип: Строка.
// Строка в формате Base64.
// Возвращаемое значение:
// Тип: ДвоичныеДанные.
// Описание:
// Преобразует строку формата Base64 в двоичные данные.
// Доступность:
// Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение,
// мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
0
комментарии
____________________
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник