Для передачи таблицы значений через HTTP и WEB сервисы надо преобразовать её в строку, либо заранее описать структуру передаваемых данных, что бывает утомительно.
Есть несколько вариантов:
1. Устаревший метод:
На стороне отправителя ТЗСтрокой = ЗначениеВСтрокуВнутр(ТЗ);
На стороне получателя ТЗ = ЗначениеИзСтрокиВнутр(ТЗСтрокой);
Эти методы устарели, о чем предупреждает справка по ним.
2. Сериализовать в XML
На стороне отправителя:
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку();
СериализаторXDTO.ЗаписатьXML(ЗаписьXML, тз);
ТаблицаСтрокой = ЗаписьXML.Закрыть();
На стороне получателя
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.УстановитьСтроку(ТаблицаСтрокой);
ТЗ = СериализаторXDTO.ПрочитатьXML(ЧтениеXML);
Плюсом этого метода является то, что в колонках может быть любое значение, в том числе структура и массив. Кроме того, так можно передавать данные любого типа. Ссылка автоматически преобразуется в УИД.
3. Преобразовать в JSON.
Основная проблема в том, что в формате JSON допускается записывать только значения следующих типов:
- Строка,
- Число,
- Булево,
- Дата (преобразованная в строку),
- Массив,
- ФиксированныйМассив,
- Структура,
- ФиксированнаяСтруктура,
- Соответствие,
- ФиксированноеСоответствие.
Таблицу значений напрямую преобразовать в JSON не получиться, так как её нет в перечисляемых выше типах.
Преобразовать таблицу значений в JSON можно если использовать СериализаторXDTO:
На стороне отправителя:
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
СериализаторXDTO.ЗаписатьJSON(ЗаписьJSON,ТЗ);
ТаблицаСтрокой = ЗаписьJSON.Закрыть();
На стороне получателя
ЗаписьJSON = Новый ЧтениеJSON;
ЗаписьJSON.УстановитьСтроку(ТаблицаСтрокой);
ТЗ = СериализаторXDTO.ПрочитатьJSON(ЗаписьJSON,Тип("ТаблицаЗначений"));
Здесь надо надо обязательно указать тип в методе ПрочитатьJSON(), иначе выйдет ошибка. Это делает невозможным использование универсальных преобразований объектов в строку формата JSON и обратно.
Еще одним вариантом преобразования Таблицы значений в JSON и обратно является преобразование таблицы значений в массив структур перед преобразованием в JSON
Пример можно посмотреть здесь: https://www.levindp.ru/1candjson/
|