0

Как выгрузить таблицу значений в строку

Для начала, давайте разберемся, для чего это нужно!? Например, требуется передать таблицу значений с клиента на сервер, либо передать ее из одной базы в другую без написания сложных правил обмена.

На помощь придут 3 простых способа:

Способ 1: использование ЗначениеВСтрокуВнутр()

Самый простой и быстрый способ — использовать функцию ЗначениеВСтрокуВнутр(), встроенную в платформу. На одной стороне (стороне отправки) мы упаковываем данные во внутренний формат:

тзВнутр = ЗначениеВСтрокуВнутр(тз);

На другой (приемной) стороне, мы распаковываем полученные данные:

тз = ЗначениеИзСтрокиВнутр(тзВнутр);

и продолжаем с ними работу, как будто никуда не передавали.

Внимание! Данный способ доступен только для толстого клиента и сервера. В тонком и веб-клиенте он работать не будет

Способ 2: использование сериализации XML

На платформе 1С:Предприятие 8 большинство типов значений сериализуются (м.б. представлены в строковом виде). Таблица значений — не исключение. На стороне отправки мы упаковываем данные в формат XML:

//Создать объект записи в XML
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку();
//конвертация таблицы значений
СериализаторXDTO.ЗаписатьXML(ЗаписьXML, тз);
ДанныеСтр = ЗаписьXML.Закрыть();

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

//Создаем объект чтения из XML
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.УстановитьСтроку(ДанныеСтр);
//Читаем таблицу значений из XML    
тз = СериализаторXDTO.ПрочитатьXML(ЧтениеXML);
Внимание!! Если вы планируете обмениваться данными между различными базами данных, следите за тем, чтобы в таблицах не было ссылок, иначе могут возникнуть проблемы с «битыми ссылками» при загрузке данных.

Способ 3: использование временного хранилища

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

//помещаем данные и получим адрес
АдресХранилща= ПоместитьВоВременноеХранилище(тз);
//передаем полученный адрес серверу
МодульВызовСервера.ВыполнитьОбработку(АдресХранилща);

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

тз = ПолучитьИзВременногоХранилища(АдресХранилща);
Внимание! Данный способ не подойдет для обмена с другой базой данных

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *