Как правильно распарсить JSON-массив и сформировать строку состава в 1С?

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

При работе с внешними сервисами, API или файлами обмена мы часто сталкиваемся с форматом JSON. Одна из распространенных задач — получение данных из массива объектов и объединение их в одну красивую строку для вывода пользователю. Давайте разберем, как грамотно обработать структуру типа params, содержащую массив параметров (например, состав ткани), и превратить её в читаемый вид.

Этап 1: Десериализация данных из JSON

Для того чтобы 1С «поняла» переданную строку, нам необходимо преобразовать её из текстового формата в объектную модель 1С — структуру или массив. Самый надежный и современный способ — использование объектов ЧтениеJSON и ПрочитатьJSON.

Рассмотрим, как правильно считать строку в массив структур:


ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(ВходнаяСтрокаJSON);
Данные = ПрочитатьJSON(ЧтениеJSON, Истина);
ЧтениеJSON.Закрыть();

В результате переменная Данные будет представлять собой Массив, внутри которого находятся Структуры с ключами value, count и units. Это позволяет нам обращаться к данным не через «магические» замены строк, а через индексы и свойства, что значительно повышает надежность кода.

Этап 2: Обращение к конкретным элементам

Если вам нужно получить значение для одной конкретной переменной, например, только для первого элемента массива (первого компонента состава), вы можете сделать это напрямую. Обращение к элементам массива осуществляется по индексу, начиная с нуля:


Если Данные.Количество() > 0 Тогда
    ПервыйЭлемент = Данные[0];
    Материал = ПервыйЭлемент["value"];
    Процент = ПервыйЭлемент["count"];
КонецЕсли;

Всегда используйте проверку Количество(), чтобы избежать ошибок при пустом входящем наборе данных.

Этап 3: Эффективное формирование строки состава

Когда нам нужно обойти весь массив и склеить значения в одну строку вида «вискоза 80%, полиэстер 20%», важно делать это производительно. Использование простого сложения строк через оператор «+» внутри цикла — плохая практика, так как это создает избыточную нагрузку на память.

Разберем современный и быстрый подход с использованием массива строк и функции СтрСоединить:


МассивСтрок = Новый Массив;
Для Каждого Элемент Из Данные Цикл
    СтрокаСостава = СтрШаблон("%1 %2%3", Элемент.value, Элемент.count, Элемент.units);
    МассивСтрок.Добавить(СтрокаСостава);
КонецЦикла;

Результат = СтрСоединить(МассивСтрок, ", ");

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

  1. Производительность: Метод СтрСоединить работает значительно быстрее, чем многократная конкатенация длинных строк.
  2. Чистота кода: Вам не нужно вручную проверять, начинается ли строка с запятой, и использовать Сред для обрезания лишних символов — 1С сама расставит разделители только между элементами.
  3. Читаемость: Использование функции СтрШаблон делает формирование текста внутри цикла наглядным и понятным.

Советы по безопасности обработки данных

При работе с нетипизированными данными из JSON всегда стоит учитывать возможные ошибки формата. Постарайтесь внедрить следующие проверки:

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

← На главную