|
Передаю таблицу по com соединению, используя сериализацию. Как получить таблицу назад | ☑ | ||
---|---|---|---|---|
0
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 сериализуешь,то на другой стороне можно попытаться восстановить а хранилище нужно,если хочется сохранить в базе |
|||
2
Ivan_495
25.12.17
✎
14:13
|
это просто пример, на самом деле на другой стороне создается таблица и мне надо быстро получить её на текущей стороне бз всяких переборов
|
|||
3
бомболюк
25.12.17
✎
14:14
|
ЗначениеВСтрокуВнутр - ЗначениеИзСтрокиВнутр
|
|||
4
vde69
25.12.17
✎
14:15
|
(2) а от куда 1с знает, что у тебя в таблице нет типов данных которые не доступны "на другой стороне"?
|
|||
5
Сияющий в темноте
25.12.17
✎
14:27
|
передать без проблем можно только примитивные типы,сериализуемые хоть и передадутся,но могут быть битые ссылки
|
|||
6
Ivan_495
25.12.17
✎
15:21
|
у меня только примитивные типы
|
|||
7
Sasha_H
25.12.17
✎
15:42
|
(1) все правильно человек делает. Если требуется сэкономить на пакете то хранилище еще надо сжать.
|
|||
8
Sasha_H
25.12.17
✎
15:44
|
как-то так:
&НаСервереБезКонтекста Функция СериализоватьДанные(Объект) //Если Объект.Количество() = 0 Тогда Возврат "" КонецЕсли; ХДТО = СериализаторXDTO.ЗаписатьXDTO(Объект); хмл = Новый ЗаписьXML; хмл.УстановитьСтроку(); ФабрикаXDTO.ЗаписатьXML(хмл,ХДТО); РезХМЛ = хмл.Закрыть(); Возврат РезХМЛ; КонецФункции &НаСервереБезКонтекста Функция ДесериализоватьДанные(XML) Чтение = Новый ЧтениеXML; Чтение.УстановитьСтроку(XML); Данные = СериализаторXDTO.ПрочитатьXML(Чтение); Чтение.Закрыть(); Возврат Данные; КонецФункции |
|||
9
Ivan_495
25.12.17
✎
16:04
|
(1) как предлагаете передавать таблицу, если не помещатьь ее в хранилище
СериализованноеЗначение = Соединение82.XMLСтрока(Соединение82.NewObject("ХранилищеЗначения","ТаблицаНовая")); XMLСтрока??? |
|||
10
hhhh
25.12.17
✎
16:13
|
(9) СериализованноеЗначение = Соединение82.ОбщегоНазначения.ЗначениеВСтрокуXML(ТабЗнач);
|
|||
11
hhhh
25.12.17
✎
16:14
|
(10) в текущей базе
НоваяТабЗнач = ОбщегоНазначения.ЗначениеИзСтрокиXML(СериализованноеЗначение); |
|||
12
Ivan_495
25.12.17
✎
16:49
|
СериализованноеЗначение = Соединение82.ОбщегоНазначения.ЗначениеВСтрокуXML(ТаблицаНовая);
Форма.Форма.Форма(121)}: Ошибка при вызове метода контекста (ЗначениеВСтрокуXML) СериализованноеЗначение = Соединение82.ОбщегоНазначения.ЗначениеВСтрокуXML(ТаблицаНовая); по причине: Произошла исключительная ситуация (1C:Enterprise 8.3.5.1486): {ОбщийМодуль.ОбщегоНазначения.Модуль(1607)}: Ошибка при вызове метода контекста (ЗаписатьXML) Несоответствие типов (параметр номер '2') (Ошибка отображения типов) |
|||
13
Ivan_495
25.12.17
✎
16:50
|
в текущей базе отрабатывает без ошибок, во внешней ошибка
СериализованноеЗначение = ОбщегоНазначения.ЗначениеВСтрокуXML(ТаблицаНовая); |
|||
14
Ivan_495
25.12.17
✎
16:56
|
наверно надо ФабрикаXDTO передавать во внешнюю базу
|
|||
15
Ivan_495
26.12.17
✎
11:39
|
(3) благодарю
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |