При разработке интеграционных решений, где 1С взаимодействует с браузерными движками, такими как WebKit, часто возникает потребность передать структурированные данные. Одной из частых задач является передача «двумерного массива». Давайте разберем, как правильно это реализовать, учитывая специфику взаимодействия двух разных сред исполнения.
Прежде всего, важно прояснить один момент: в классическом понимании языка JavaScript нет специализированного типа данных «двумерный массив». То, что мы привыкли так называть, является массивом массивов. Это обычный массив, элементами которого являются другие массивы. Понимание этого факта сразу упрощает задачу: нам нужно просто сформировать правильную структуру данных, которую движок JavaScript сможет корректно интерпретировать.
Наиболее стандартизированным, быстрым и надежным способом передачи данных между 1С и JavaScript является формат JSON (JavaScript Object Notation). Этот формат natively поддерживается браузерами, а метод JSON.parse() позволяет мгновенно превратить строку в полноценный объект или массив JavaScript.
Чтобы успешно передать данные, нам нужно выполнить два этапа: сериализацию в 1С и десериализацию в JavaScript.
Рассмотрим, как это выглядит на практике. Допустим, мы хотим передать массив координат вида [[1, 100500], [2, 3]].
На стороне JavaScript ваш код для получения и использования этих данных будет выглядеть следующим образом:
// Принимаем строку из 1С
var jsonСтрока = "[[1,100500],[2,3]]";
// Преобразуем строку в массив массивов
var данные = JSON.parse(jsonСтрока);
// Теперь мы можем обращаться к элементам как к обычному двумерному массиву
alert(данные[0][1]); // Выведет 100500
Вместо того чтобы вручную конкатенировать строки (что чревато опечатками и ошибками синтаксиса), рекомендуем использовать встроенные средства платформы 1С для записи данных в формат JSON. Это гарантирует корректность передаваемой структуры.
Воспользуйтесь объектом ЗаписьJSON для формирования строки:
// Создаем структуру данных в 1С
МассивДанных = Новый Массив;
МассивДанных.Добавить(Новый Структура("X, Y", 1, 100500));
МассивДанных.Добавить(Новый Структура("X, Y", 2, 3));
// Сериализуем в строку
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, МассивДанных);
СтрокаJSON = ЗаписьJSON.Закрыть();
JSON.parse() — это стандартный метод любого браузерного движка, включая WebKit.Таким образом, для передачи «двумерного массива» вам достаточно сформировать массив массивов в 1С, преобразовать его в JSON-строку и десериализовать её на стороне WebKit методом JSON.parse(). Этот подход является профессиональным стандартом при разработке интеграций между 1С и веб-технологиями.