|
Передача структуры через COM соединение | ☑ | ||
---|---|---|---|---|
0
Romich1981
24.04.13
✎
11:55
|
Добрый день, коллеги.
Помогите старому глупому программисту решить проблему. Устанавливаю СОМ-соединение, вызываю функцию из общего модуля, передаю в нее параметр. Параметр имеет тип "Структура" и неважно, есть в нем значения или нет, выдается ошибка "Попытка передачи с клиента на сервер мутабельного значения 1-го параметра метода .." То же самое и при передаче таблицы значений. В обратную сторону таблица значений - как результат выполнения функции - прилетает без проблем. |
|||
1
Галахад
гуру
24.04.13
✎
11:56
|
Может в коде ошибка?
|
|||
2
Romich1981
24.04.13
✎
11:59
|
Кода нет еще. Просто функция с параметром. Если параметр имеет простейший тип (число, строка, дата), функция отрабатывает без проблем.
|
|||
3
бомболюк
24.04.13
✎
11:59
|
Структуру то надо создавать на стороне соединения:
Структура = Соединение.NewObject("Структура"); |
|||
4
Romich1981
24.04.13
✎
12:01
|
а таблицу, которая возвращается функцией, я должен создавать на какой стороне?
|
|||
5
Галахад
гуру
24.04.13
✎
12:03
|
(4) Смотря где будешь использовать.
|
|||
6
бомболюк
24.04.13
✎
12:03
|
ошибся, пардон. тут не то немного. надо структуру в строку сериализовать и передавать между клиентом и сервером.
|
|||
7
Romich1981
24.04.13
✎
12:04
|
В описании структуры указано: "Возможен обмен с сервером"
Неужели она автоматом не сериализуется? |
|||
8
бомболюк
24.04.13
✎
12:06
|
а внутри структуры чего у нас лежит?
|
|||
9
Romich1981
24.04.13
✎
12:06
|
может и ничего не лежать. Вообще должны лежать даты и строка
|
|||
10
Romich1981
24.04.13
✎
12:08
|
При работе в 8.2 с тонким клиентом передача таблиц и структур возможна.
Механизмы передачи сильно отличаются от СОМ-соединения? |
|||
11
Defender aka LINN
24.04.13
✎
12:15
|
При чем тут COM? Текст ошибки глазами прочитать - не, не вариант?
|
|||
12
hhhh
24.04.13
✎
12:19
|
(11) тогда всё-таки Соединение.NewObject("Структура"); ??
|
|||
13
Defender aka LINN
24.04.13
✎
12:22
|
(12) Та хоть Соединение.NewObject("УникальныйИдентификатор")
|
|||
14
fisher
24.04.13
✎
12:22
|
Ну, можно из пушки по воробьям попробовать.
Я для передачи табличных документов такое делал: // Функция - возвращает XML-строку с сериализованным значением // // Параметры: // Значение - значение произвольного типа, которое необходимо сериализовать // // Возвращаемое значение: // XML-строка, содержащая сериализованное значение // Функция СериализацияXML(Значение) Экспорт ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.УстановитьСтроку(); СериализаторXDTO.ЗаписатьXML(ЗаписьXML, Значение); Возврат ЗаписьXML.Закрыть(); КонецФункции // Функция - возвращает значение, десериализованное из XML-строки // // Параметры: // СтрокаXML - XML-строка с сериализованным значением произвольного типа // // Возвращаемое значение: // Десериализованное значение // Функция ДесериализацияXML(СтрокаXML) Экспорт ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.УстановитьСтроку(СтрокаXML); ЧтениеXML.Прочитать(); Возврат СериализаторXDTO.ПрочитатьXML(ЧтениеXML); КонецФункции |
|||
15
Defender aka LINN
24.04.13
✎
12:24
|
рукалицо...
|
|||
16
fisher
24.04.13
✎
12:25
|
Блин, точно. Тут же COM вообще не причем...
(15) Есть способ проще получить табличный документ сформированный на той стороне? |
|||
17
Romich1981
24.04.13
✎
12:52
|
(11) (13) (15) Я вот зайду на форму спецов по Ораклу, в котором я не понимаю ничего, и буду там писать "рукалицо", "читайте глазами" и пр. Интересно, я буду от этого казаться в их глазах гуру оракла или нет?
прочитал три ваших сообщения. Ни одно из них неинформативно. Вопрос: для чего пишем? |
|||
18
Romich1981
24.04.13
✎
12:56
|
(16)На той стороне формируется Таблица значений, и она прекрасно передается на вызывающую сторону. Проблема запихнуть на ту сторону структуру, созданную на вызывающей стороне, без конструкций типа Соединение.NewObject("Структура").
Я так понимаю, вердикт отрицательный? |
|||
19
Рэйв
24.04.13
✎
13:03
|
(18)А чем принципиально создание именно на этой стороне?.Методы одинаковые.
|
|||
20
Рэйв
24.04.13
✎
13:05
|
+(19)Да и родная структура для функции будет более съедобна.
|
|||
21
Romich1981
24.04.13
✎
13:07
|
(19) да вообщем то непринципиально... просто структура есть, возможен обмен с сервером, а он не идет. Стало интересно...
|
|||
22
Romich1981
24.04.13
✎
13:14
|
Невозможность передать структуру через СОМ объект буду считать догмой и обходить стороной. Спасибо всем за участие.
|
|||
23
Рэйв
24.04.13
✎
13:15
|
(21)Скорее всего потьому что функция получает в параметр не структуру, а COMObject и не может точно определить что за хрень она получила,т.к. он то может быть чем угодно, то есть мутабельней некуда
|
|||
24
Romich1981
24.04.13
✎
13:19
|
(23) Да, наверное так и есть...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |