Как правильно сохранить JSON-строку из текстового документа 1С в файл?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Часто при разработке на 1С возникает задача выгрузки сформированного JSON-текста из формы обработки в отдельный файл. Начинающие разработчики нередко сталкиваются с проблемой: при попытке программного сохранения данные «ломаются», переносы строк превращаются в символы экранирования (например, \n или \u0009), а структура документа теряется. Давайте разберем, почему это происходит и как решить данную задачу наиболее эффективно.

Анализ причин проблемы

Основная ошибка заключается в попытке повторно сериализовать уже готовую JSON-строку. Когда вы используете объект ЗаписьJSON для строки, которая уже содержит JSON-данные, платформа воспринимает ваш текст как обычную строку, которую необходимо упаковать по правилам формата JSON. В итоге все служебные символы — переносы строк, табуляции и кавычки — принудительно экранируются. Это приводит к появлению нечитаемых конструкций в итоговом файле.

Также неэффективным является подход с использованием цикла Пока для построчного копирования из ТекстовыйДокумент в файл. Такой метод потребляет много ресурсов и значительно замедляет выполнение кода при работе с большими объемами данных.

Решение 1: Прямая запись (рекомендуемый способ)

Самый простой, быстрый и правильный способ сохранить готовый JSON-текст из поля на форме — это использовать штатный метод объекта ТекстовыйДокумент. Поскольку у вас в реквизите уже содержится сформированная строка, нет нужды обрабатывать её через ЗаписьJSON.

Рассмотрим, как это выглядит в коде:


// Предположим, JSONСтрока — это ваш реквизит на форме типа ТекстовыйДокумент
ПутьКФайлу = "C:\Users\User\Desktop\data.json";
JSONСтрока.Записать(ПутьКФайлу, КодировкаТекста.UTF8);

Преимущества этого подхода:

  1. Скорость: Платформа выполняет запись напрямую, без лишних итераций.
  2. Сохранность данных: Символы переноса строки и табуляции остаются на своих местах.
  3. Кодировка: Явное указание КодировкаТекста.UTF8 гарантирует, что файл будет корректно открываться в любых внешних редакторах и браузерах.

Решение 2: Если данные требуют предварительной подготовки

Если в будущем возникнет задача, при которой JSON нужно сформировать «с нуля» из структуры 1С, используйте ЗаписьJSON правильно, без промежуточного сохранения в текстовое поле. Рассмотрим основные шаги для такой операции:

Шаг 1: Инициализируйте объект ЗаписьJSON.

Шаг 2: Установите параметры записи, чтобы включить форматирование (отступы), если это необходимо для читаемости файла.

Шаг 3: Используйте метод ЗаписатьJSON для сериализации вашей структуры или массива.


ПараметрыЗаписи = Новый ПараметрыЗаписиJSON(ПереносСтрок.Да, "  ");
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.ОткрытьФайл("C:\Users\User\Desktop\data.json", , , КодировкаТекста.UTF8);
ЗаписатьJSON(ЗаписьJSON, ДанныеДляСериализации, ПараметрыЗаписи);
ЗаписьJSON.Закрыть();

Почему не стоит использовать циклы?

Мы настоятельно рекомендуем избегать использования конструкции Пока Счетчик <= КоличествоСтрок. Работа с файловой системой — это тяжелая операция. Каждый вызов метода ДобавитьСтроку или Записать внутри цикла создает дополнительную нагрузку на диск и оперативную память. Если ваш файл содержит тысячи строк, такое решение будет работать критически медленно. Всегда отдавайте предпочтение встроенным методам объектов ТекстовыйДокумент или ЗаписьТекста, которые оптимизированы платформой для пакетной записи данных.

Итоговые рекомендации

Чтобы избежать ошибок при работе с JSON в 1С:

Применяя эти простые подходы, вы добьетесь стабильной и быстрой работы ваших обработок, а файлы JSON всегда будут сохраняться в аккуратном и валидном виде.

← На главную