Форум программистов, компьютерный форум, киберфорум
C/C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/19: Рейтинг темы: голосов - 19, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 24.06.2009
Сообщений: 19

Передача параметров из COM-сервера

07.05.2010, 08:01. Показов 3950. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется COM-сервер написанный на C#, и из него необходимо в 1С передавать не примитивные типы, а собственные структуры и классы, возможно ли это реализовать, и если да, то как потом раскручивать эти структуры в 1С.

Буду благодарен за любые примеры и советы.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.05.2010, 08:01
Ответы с готовыми решениями:

Передача параметров через список параметров формы
Hi all! У кого есть опыт передачи параметров через заголовочный список параметров формы? Желетельно пример записи. Заранее...

Передача нескольких параметров в pthread_create (передача структуры)
Здравствуйте. Мне нужно передать последним параметром в функцию pthread_create следующую структуру struct data { float a; ...

Программа мониторинга параметров сервера
Здравствуйте! Есть сервер, я снял с него параметры(ip,температура процессора и т.д.) и перенес их в xml файл. Проблема в том, что не знаю...

9
 Аватар для oxotnik
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
07.05.2010, 09:07
Цитата Сообщение от Sv879 Посмотреть сообщение
Имеется COM-сервер написанный на C#, и из него необходимо в 1С передавать не примитивные типы, а собственные структуры и классы, возможно ли это реализовать, и если да, то как потом раскручивать эти структуры в 1С.

Буду благодарен за любые примеры и советы.
Передать можно что угодно, а вот раскрутить вряд ли получится. Можно передавать готовый COM объект и в 1С дергать его свойства/методы.
0
0 / 0 / 0
Регистрация: 24.06.2009
Сообщений: 19
07.05.2010, 09:49  [ТС]
я вот тут нашел интересный пример передачи структуры из COM-сервера:

определение структуры в COM-сервере:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 [ComVisible(true)]
  // Определяем, что все объекты структуры в памяти располагаются последовательно в том порядке, в котором
  // они должны маршалиться в unmanaged.
  [StructLayout(LayoutKind.Sequential)]
  [Guid("E1AB60D5-F8F5-41fe-BD0D-AE2AC94237DD")]
  public struct MyStruct
  {
    // Строка
    [MarshalAs(UnmanagedType.BStr)]
    public string wow;
    // Массив. Массив следует маршаллить в виде SafeArray, потому как так с ним можно работать из скриптовых
    // языков, подобных VBA или Javascript. Конечно, в случае C++ работа с SafeArray не самая приятная
    // процедура, но это уже издержки производства. Второй параметр задает тип объектов в массиве - в нашем
    // случае это четырехбайтное знаковое целое.
    [MarshalAs(UnmanagedType.SafeArray, SafeArraySubType = VarEnum.VT_I4)]
    public int[] gig;
    // Задам маршаллинг объекта в виде указателя на интерфейс IDispatch. В этом случае .NET требует
    // чтобы параметр был определен как object.
    [MarshalAs(UnmanagedType.IDispatch)]
    public object self;
  }
C#
1
2
3
4
5
6
    public void GetStruct(ref MyStruct ms)
    {
      ms.gig = new int[] { 1, 2, 3, 4, 5 };
      ms.self = this;
      ms.wow = "wow";
    }
Работа со структурой в Excel:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Dim a As TestCoClass
Dim s As String
Dim b As MyStruct
 
Sub main()
Set a = New TestCoClass
b.wow = "baaa"
a.GetStruct b
MsgBox b.gig(3)
MsgBox b.wow
Set a = Nothing
End Sub
Но теперь не понятно, как в 1С объявить тип MyStruct (в Excel то мы подключаем нашу бибилиотеку через Tools->References, поэтому там тип MyStruct известен)?
0
 Аватар для oxotnik
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
07.05.2010, 10:07
В примере у структуры есть свой GUID, значит она является COM объектом, значит она зарегистрирована в реестре, поэтому ее можно напрямую объявлять как тип.
А еще можно поработать со свойствами СОМ объектов, которые бы возвращали нужную структуру, к примеру есть объект MyObj, который свойством (допустим Struct) возвращает MyStruct в 1С это можно будет записать примерно так
Code
1
2
Объект = СоздатьCOMОбъект("MyObj.1");
Объект.Struct.wow = "аааа";
1
0 / 0 / 0
Регистрация: 24.06.2009
Сообщений: 19
07.05.2010, 10:37  [ТС]
В примере у структуры есть свой GUID, значит она является COM объектом, значит она зарегистрирована в реестре, поэтому ее можно напрямую объявлять как тип.
Пишу в 1С так:
a = СоздатьОбъект("ClassLibrary1.MyStruct");

но пишет, что невозможно создать.

А еще можно поработать со свойствами СОМ объектов, которые бы возвращали нужную структуру
В c# добавил:
C#
1
2
3
4
5
    public MyStruct Struct()
    {
      MyStruct ms = new MyStruct();
      return ms;
    }
в 1С:
1C
1
2
  a = СоздатьОбъект("ClassLibrary1.TestCoClass");    
  a.Struct.wow = "dddd";
Выдает ошибку:
a.Struct.wow = "dddd";
Тип переменной не поддерживается
0
 Аватар для oxotnik
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
07.05.2010, 10:49
тогда единственный правильный выход - через полноценный СОМ объект со своим интерфейсом. Т.е. один начальный объект инициализирует некий "дочерний" и с последним уже работать.
0
0 / 0 / 0
Регистрация: 24.06.2009
Сообщений: 19
07.05.2010, 11:45  [ТС]
Т.е. один начальный объект инициализирует некий "дочерний" и с последним уже работать.
не очень понял, объясни пожалуйста
0
 Аватар для oxotnik
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
07.05.2010, 12:00
Цитата Сообщение от Sv879 Посмотреть сообщение
не очень понял, объясни пожалуйста
сейчас твой сервер содержит один объект, допиши в него, что бы он содержал 2 объекта
1
0 / 0 / 0
Регистрация: 24.06.2009
Сообщений: 19
07.05.2010, 12:11  [ТС]
oxotnik,

всё получилось, спасибо огромное!!!
0
besworland
28.05.2010, 14:28
Доброго времени суток.

А если выполняется передача объекта класса, то механизм такой же или нет?
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.05.2010, 14:28
Помогаю со студенческими работами здесь

Передача параметров
Необходимо передать шесть параметров из одной переменной, а именно: имеется EditBox со значением например, 01:23:45, и шесть переменных,...

Передача параметров
Доброго времени суток всем! Возникла такая проблема, очень прошу помощи. Реализую паттерн MVP. После переноса бизнес логики приложения из...

передача параметров
подскажите пожалуйста почему в программе во второй процедуре var A:matrix передаем по ссылке а не по значению, чем это лучше? ...

Передача параметров.
Как процедуре передать параметры по ссылке, если параметром является vector (STL/CLR)? (Язык C++) При приминении амперсенда (&)...

Передача параметров
Доброго времени суток ! Передаю параметры через POST запрос из textarea в котором находится пару строк html, принимаю я это всё в одну...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru