Сжатие строк внутренними методами 1С

12.08.25

Разработка - Механизмы платформы 1С

Два основных варианта сжатия: сжатие с помощью архивации и временных файлов, а также сжатие внутренними методами 1С с помощью base64.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Сжатие строк
.epf 7,23Kb
0 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Добрый день, сегодня хочу разобрать с вами два метода сжатия строк, первый будет, наверное, самый классический, где мы создаём временные файлы и запихиваем строку в файл, чтобы заархивировать его, дабы уменьшить вес, вот его пример:

&НаСервере
Функция СжатьJSONНаСервере(СтрокаJSON)
		
	ИмяФайла = ПолучитьИмяВременногоФайла(".txt");
	
	ТекстовыйФайл = Новый ТекстовыйДокумент;
	ТекстовыйФайл.УстановитьТекст(ТекстJSON);
	
	ТекстовыйФайл.Записать(
	ИмяФайла, // путь для сохранения
	КодировкаТекста.UTF8, // кодировка
	Символы.ВК + Символы.ПС // разделитель строк
	);
	
	ИмяФайлаЗИП = ПолучитьИмяВременногоФайла(".zip");
	НовыйАрхив = Новый ЗаписьZipФайла(
	ИмяФайлаЗИП,
	"", // пароль на архив
	МетодСжатияZIP.Сжатие, // сжатие или копирование
	УровеньСжатияZIP.Оптимальный
	);
	НовыйАрхив.Добавить(ИмяФайла);
	НовыйАрхив.Записать();
	
	ДД = новый ДвоичныеДанные(ИмяФайлаЗИП);
	
	УдалитьФайлы(ИмяФайла);
	УдалитьФайлы(ИмяФайлаЗИП);
	
	Возврат XMLСтрока(ДД);

КонецФункции

Но этот вариант получается очень громоздким, он создает временные файлы и выполняется дольше, нежели вы бы обращались к методам, которые предоставляет вам сама 1С, пример:

&НаСервере
Функция НовыйВарНаСервере(ТекстJSON)
	СжатиеДанных = Новый СжатиеДанных(9);
	Значение = Новый ХранилищеЗначения(ТекстJSON,СжатиеДанных);
	СтрокаBase64 = XMLСтрока(Значение);											
	Возврат СтрокаBase64;  
КонецФункции

В соответствии с таким сжатием расшифровка строки становится тоже кратно меньше.

Ну, а посмотреть ее вы сможете, если скачаете файл :3

Ну и под конец самое интересное - это тесты сравнения по объему веса сжатого файла:


Думаю, с учетом отказа от временных файлов и ускорением выполнения процедуры, результат налицо.

Проверено на следующих конфигурациях и релизах:

  • 1С:ERP Управление предприятием 2, релизы 2.5.23.64

Вступайте в нашу телеграмм-группу Инфостарт

Внешняя обработка сжатие текста без временных файлов без архивации хранилище значений base64

См. также

Механизмы платформы 1С Программист Бесплатно (free)

Разберем 15 мифов о работе платформы «1С:Предприятие 8» – как распространенных, так и малоизвестных. Начнем с классики: «Код, написанный в одну строку, работает быстрее, чем многострочный». Так ли это на самом деле?

16.07.2025    18921    TitanLuchs    101    

129

Механизмы платформы 1С Работа с интерфейсом Программист Стажер 1С v8.3 Бесплатно (free)

Про ООП в 1С и о том, как сделать свой код более кратким и выразительным при помощи использования текучего интерфейса (fluent interface).

03.02.2025    11355    bayselonarrend    126    

64

Механизмы платформы 1С WEB-интеграция Программист 1С v8.3 Бесплатно (free)

В платформе 8.3.27 появилась возможность использовать WebSocket-клиент. Давайте посмотрим, как это все устроено и чем оно нам полезно.

14.01.2025    18881    dsdred    77    

133

Механизмы платформы 1С Программист Стажер 1С v8.3 1C:Бухгалтерия Бесплатно (free)

Эта небольшая статья - некоторого рода шпаргалка по файловым потокам: как и зачем с ними работать, какие преимущества это дает.

23.06.2024    19890    bayselonarrend    22    

168

Механизмы платформы 1С Программист Стажер 1С v8.3 1C:Бухгалтерия Бесплатно (free)

Пример использования «Сервисов интеграции» без подключения к Шине и без обменов.

13.03.2024    11327    dsdred    22    

84

Механизмы платформы 1С Программист Стажер 1С v8.3 Бесплатно (free)

Все мы используем массивы в своем коде. Это один из первых объектов, который дают ученикам при прохождении обучения программированию. Но умеем ли мы ими пользоваться? В этой статье я хочу показать все методы массива, а также некоторые фишки в работе с массивами.

24.01.2024    41658    YA_418728146    35    

75
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Vasvas05 27 12.08.25 20:50 Сейчас в теме
Тоже без файла. Надо следить чтобы строка не была как три тома книжки.
Функция СжатьJSONНаСервереПоток(СтрокаJSON)
	
	Поток = новый ПотокВПамяти();     
	Писатель = Новый ЗаписьДанных(Поток);
	Писатель.ЗаписатьСтроку(СтрокаJSON);
	Писатель.Закрыть();
	ЗаписьZIP = Новый ЗаписьZipФайла();
	Двд = ЗаписьZIP.ПолучитьДвоичныеДанные("","Тестовый комментарий", МетодСжатияZIP.Сжатие,УровеньСжатияZIP.Оптимальный,МетодШифрованияZIP.Zip20);
		
	Возврат XMLСтрока(Двд);

КонецФункции
Показать
akR00b; mefatyan; +2 Ответить
2. ltfriend 27.08.25 11:24 Сейчас в теме
с помощью base64

А при чём тут base-64, который про кодировку, а не про сжатие?
Для отправки сообщения требуется регистрация/авторизация