Как передать двумерный массив из 1С в WebKit (JavaScript)?

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

При разработке интеграционных решений, где 1С взаимодействует с браузерными движками, такими как WebKit, часто возникает потребность передать структурированные данные. Одной из частых задач является передача «двумерного массива». Давайте разберем, как правильно это реализовать, учитывая специфику взаимодействия двух разных сред исполнения.

Понимание природы данных в JavaScript

Прежде всего, важно прояснить один момент: в классическом понимании языка JavaScript нет специализированного типа данных «двумерный массив». То, что мы привыкли так называть, является массивом массивов. Это обычный массив, элементами которого являются другие массивы. Понимание этого факта сразу упрощает задачу: нам нужно просто сформировать правильную структуру данных, которую движок JavaScript сможет корректно интерпретировать.

Решение проблемы через JSON

Наиболее стандартизированным, быстрым и надежным способом передачи данных между 1С и JavaScript является формат JSON (JavaScript Object Notation). Этот формат natively поддерживается браузерами, а метод JSON.parse() позволяет мгновенно превратить строку в полноценный объект или массив JavaScript.

Разберем реализацию по шагам

Чтобы успешно передать данные, нам нужно выполнить два этапа: сериализацию в 1С и десериализацию в JavaScript.

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

Пример кода для реализации

Рассмотрим, как это выглядит на практике. Допустим, мы хотим передать массив координат вида [[1, 100500], [2, 3]].

На стороне JavaScript ваш код для получения и использования этих данных будет выглядеть следующим образом:


// Принимаем строку из 1С
var jsonСтрока = "[[1,100500],[2,3]]";

// Преобразуем строку в массив массивов
var данные = JSON.parse(jsonСтрока);

// Теперь мы можем обращаться к элементам как к обычному двумерному массиву
alert(данные[0][1]); // Выведет 100500

Рекомендации по автоматизации сериализации в 1С

Вместо того чтобы вручную конкатенировать строки (что чревато опечатками и ошибками синтаксиса), рекомендуем использовать встроенные средства платформы 1С для записи данных в формат JSON. Это гарантирует корректность передаваемой структуры.

Воспользуйтесь объектом ЗаписьJSON для формирования строки:


// Создаем структуру данных в 1С
МассивДанных = Новый Массив;
МассивДанных.Добавить(Новый Структура("X, Y", 1, 100500));
МассивДанных.Добавить(Новый Структура("X, Y", 2, 3));

// Сериализуем в строку
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, МассивДанных);
СтрокаJSON = ЗаписьJSON.Закрыть();

Почему использование JSON — это лучший выбор?

Таким образом, для передачи «двумерного массива» вам достаточно сформировать массив массивов в 1С, преобразовать его в JSON-строку и десериализовать её на стороне WebKit методом JSON.parse(). Этот подход является профессиональным стандартом при разработке интеграций между 1С и веб-технологиями.

← На главную