Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Передаю таблицу по com соединению, используя сериализацию. Как получить таблицу назад

Передаю таблицу по com соединению, используя сериализацию. Как получить таблицу назад
Я
   Ivan_495
 
25.12.17 - 13:26
Передаю таблицу по com соединению, используя сериализацию. Как получить таблицу назад?

Соединение82 = Соединение82_.Connect(СтрокаПодключения);
    
    ТипыПериод = Новый Массив();
    ТипыПериод.Добавить(Тип("Дата"));    
    
    ТипыСтрока = Новый Массив();
    ТипыСтрока.Добавить(Тип("Строка"));
    
    ТипыЧисло = Новый Массив();
    ТипыЧисло.Добавить(Тип("Число"));    
    
    ТаблицаНовая = Новый ТаблицаЗначений;
    ТаблицаНовая.Колонки.Добавить("ДатаДокумента",          Новый ОписаниеТипов(ТипыПериод));
    ТаблицаНовая.Колонки.Добавить("Период",                 Новый ОписаниеТипов(ТипыПериод));
    ТаблицаНовая.Колонки.Добавить("PostingDate",            Новый ОписаниеТипов(ТипыПериод));
    ТаблицаНовая.Колонки.Добавить("IDDoc",                  Новый ОписаниеТипов(ТипыСтрока));
    ТаблицаНовая.Колонки.Добавить("ПредставлениеДокумента", Новый ОписаниеТипов(ТипыСтрока));
    ТаблицаНовая.Колонки.Добавить("СчетДт",                 Новый ОписаниеТипов(ТипыСтрока));
    ТаблицаНовая.Колонки.Добавить("СчетКт",                 Новый ОписаниеТипов(ТипыСтрока));
    ТаблицаНовая.Колонки.Добавить("Сумма",                  Новый ОписаниеТипов(ТипыЧисло));
    
    
        НоваяСтрока = ТаблицаНовая.Добавить();
        НоваяСтрока.ДатаДокумента          = ТекущаяДата();
        
        
                                
    СериализованноеЗначение = Соединение82.XMLСтрока(Соединение82.NewObject("ХранилищеЗначения","ТаблицаНовая"));
    

как правильно написать???
ИсходноеЗначение = XMLЗначение(Тип("ХранилищеЗначения"), СериализованноеЗначение).Получить();
 
 
   Сияющий в темноте
 
1 - 25.12.17 - 13:53
Зачем таблицу пихать в хранилище?
если ты ее в xml сериализуешь,то на другой стороне можно попытаться восстановить
а хранилище нужно,если хочется сохранить в базе
   Ivan_495
 
2 - 25.12.17 - 14:13
это просто пример, на самом деле на другой стороне создается таблица и мне надо быстро получить её на текущей стороне бз всяких переборов
   бомболюк
 
3 - 25.12.17 - 14:14
ЗначениеВСтрокуВнутр - ЗначениеИзСтрокиВнутр
   vde69
 
4 - 25.12.17 - 14:15
(2) а от куда 1с знает, что у тебя в таблице нет типов данных которые не доступны "на другой стороне"?
   Сияющий в темноте
 
5 - 25.12.17 - 14:27
передать без проблем можно только примитивные типы,сериализуемые хоть и передадутся,но могут быть битые ссылки
   Ivan_495
 
6 - 25.12.17 - 15:21
у меня только  примитивные типы
   Sasha_H
 
7 - 25.12.17 - 15:42
(1) все правильно человек делает. Если требуется сэкономить на пакете то хранилище еще надо сжать.
   Sasha_H
 
8 - 25.12.17 - 15:44
как-то так:

&НаСервереБезКонтекста
Функция СериализоватьДанные(Объект)
    
    //Если Объект.Количество() = 0 Тогда Возврат "" КонецЕсли;

    
    ХДТО = СериализаторXDTO.ЗаписатьXDTO(Объект);
    хмл = Новый ЗаписьXML;
    хмл.УстановитьСтроку();
    
    ФабрикаXDTO.ЗаписатьXML(хмл,ХДТО);
    
    РезХМЛ = хмл.Закрыть();
    
    Возврат РезХМЛ;
КонецФункции

&НаСервереБезКонтекста
Функция ДесериализоватьДанные(XML)
    
    Чтение = Новый ЧтениеXML;
    Чтение.УстановитьСтроку(XML);
    Данные = СериализаторXDTO.ПрочитатьXML(Чтение);
    Чтение.Закрыть();
    
    Возврат Данные;
КонецФункции
   Ivan_495
 
9 - 25.12.17 - 16:04
(1) как предлагаете передавать таблицу, если не помещатьь ее в хранилище
СериализованноеЗначение = Соединение82.XMLСтрока(Соединение82.NewObject("ХранилищеЗначения","ТаблицаНовая"));

XMLСтрока???
   hhhh
 
10 - 25.12.17 - 16:13
(9) СериализованноеЗначение = Соединение82.ОбщегоНазначения.ЗначениеВСтрокуXML(ТабЗнач);
 
 Рекламное место пустует
   hhhh
 
11 - 25.12.17 - 16:14
(10) в текущей базе
НоваяТабЗнач = ОбщегоНазначения.ЗначениеИзСтрокиXML(СериализованноеЗначение);
   Ivan_495
 
12 - 25.12.17 - 16:49
СериализованноеЗначение = Соединение82.ОбщегоНазначения.ЗначениеВСтрокуXML(ТаблицаНовая);

Форма.Форма.Форма(121)}: Ошибка при вызове метода контекста (ЗначениеВСтрокуXML)
      СериализованноеЗначение = Соединение82.ОбщегоНазначения.ЗначениеВСтрокуXML(ТаблицаНовая);
по причине:
Произошла исключительная ситуация (1C:Enterprise 8.3.5.1486): {ОбщийМодуль.ОбщегоНазначения.Модуль(1607)}: Ошибка при вызове метода контекста (ЗаписатьXML)
Несоответствие типов (параметр номер '2') (Ошибка отображения типов)
   Ivan_495
 
13 - 25.12.17 - 16:50
в текущей базе отрабатывает без ошибок, во внешней ошибка
СериализованноеЗначение = ОбщегоНазначения.ЗначениеВСтрокуXML(ТаблицаНовая);
   Ivan_495
 
14 - 25.12.17 - 16:56
наверно надо ФабрикаXDTO передавать во внешнюю базу
   Ivan_495
 
15 - 26.12.17 - 11:39
(3) благодарю

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует