|
Табличный документ через Com | ☑ | ||
---|---|---|---|---|
0
0xFFFFFF
29.11.13
✎
13:13
|
Из базы1 Соединился с базой2 через Com, получил оттуда табличный документ, который понятно, что имеет тип ComОбъект.
Как мне в базе1 его преобразовать в ТабличныйДокумент? Важна только визуальная форма. Расшифровками и пр. пренебрегаем. |
|||
1
Ork
29.11.13
✎
13:16
|
(0) Через Com передаются только примитивные типы. Посему : циклом по ячейкам перебираем содержимое и заполняем аналог на вызывающей стороне.
|
|||
2
Ненавижу 1С
гуру
29.11.13
✎
13:16
|
сохраняем в файл, читаем
|
|||
3
ptrtss
29.11.13
✎
13:18
|
Лучше его запихать сначала в строку, а потом уже строку получить по COM и уже на месте назначения распаковать обратно в таблицу значений
|
|||
4
Wobland
29.11.13
✎
13:19
|
(3) предлагаешь ТабДок предварительно сконвертировать в ТЗ? ;)
|
|||
5
0xFFFFFF
29.11.13
✎
13:22
|
(1) Думал об этом, однако всё, даже шрифты тоже будут Com... Некузяво.
(2) В MXL? (3) речь о табдок |
|||
6
Ненавижу 1С
гуру
29.11.13
✎
13:22
|
(5) в MXL
|
|||
7
Wobland
29.11.13
✎
13:22
|
(5) дай минутку подумать. мм.. да, в mxl
|
|||
8
0xFFFFFF
29.11.13
✎
14:05
|
Если mxl завернуть в ХранилищеЗначений, то оно потом тоже имеет тип COMобъект. А как его оттуда достать...
|
|||
9
Wobland
29.11.13
✎
14:08
|
ну по почте отправь
|
|||
10
Kvestin
29.11.13
✎
14:55
|
Если базы разные (GUID-ы у элементов разные), то только сопоставлением в текущей базе по реквизитам примитивных типов (Код, Наименование и т.д).
Я бы, чтобы много не писать, в базе2 выбрал все запросом так, чтобы в ТЗ выгруженной из запроса не было данных ссылочного типа, но были все необходимые данные, чтобы найти соответствующий элемент в текущей базе. Затем получил ЗначениеВСтрокуВнутр(ТЗ), полученныю строку передал по COM и развернул в базе1. После этого получим в базе1 объект типа ТаблицаЗначений. Дальше, делаешь из нее то что нужно. Если данные ссылочного типа совпадают по GUID (например база1 и база2 - узлы одной и той же распределенной базы), то тогда можно просто завернуть ТЗ в строку и развернуть в текущей базе. Все ссылки встанут автоматом. |
|||
11
Kvestin
29.11.13
✎
14:57
|
Тфу ... подумал про ТабличнуюЧасть - пятница.
|
|||
12
0xFFFFFF
29.11.13
✎
15:14
|
Заработало!
Делал так: в базе 2 "заворачиваем" ТабДок.Записать(ИмяВременногоФайла); ЗначениеВСтрокуВнутр(Новый ДвоичныеДанные(ИмяВременногоФайла)); В базе 1 "разворачиваем" ДвоичныеДанные = ЗначениеИзСтрокиВнутр(ПеременнаяКОМ); ДвоичныеДанные.Записать(ИмяВременногоФайла); ТабДокумент = Новый ТабличныйДОкумент; ТабДокумент.Прочитать(ИмяВременногоФайла); ТабДокумент.Показать(); |
|||
13
Serginio1
29.11.13
✎
16:36
|
Данный объект может быть сериализован в/из XDTO. Тип XDTO, соответствующий данному объекту, определяется в пространстве имен {http://v8.1c.ru/8.2/data/spreadsheet}. Имя типа XDTO: SpreadsheetDocument.
Можешь использовать СериализаторXDTO |
|||
14
Ненавижу 1С
гуру
29.11.13
✎
21:13
|
(12) жду гонорар ))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |