Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
05.11.2004, 14:51
|
|||
|---|---|---|---|
|
|||
Передача OLE объекта из COM+ |
|||
|
#18+
Оговорюсь заранее , это мое первое пприложение на С# поэтому могу ошибиться как с постановкой задачи (может такое не возможно в принципе ?) так и с ее решением :) :) :) Итак суть проблемы такова . Хочется написать серверный COM объект, в который передается строка инициализации для 1С. Сервер создает Ole объект 1С и возвращает его клиенту и далее клиент работает с 1С как с локально запущеной копией. Пишу сервер : автор namespace ServerV7 { [InterfaceQueuing] public interface ISComponent { void DisplayMessage(string msg); void Get1c(string v77base,string user,string password); object _1c { get; } } public class Service1 : System.EnterpriseServices.ServicedComponent,ISComponent { public object v77; public object getv77object; public Type lateBoundType; public void DisplayMessage(string msg) { MessageBox.Show(msg, "Component Processing Message"); } public void Get1c(string v77base,string user,string password) { v77=null; getv77object = null; lateBoundType = null; try { DisplayMessage("Begin Processing Message"); object[] arg=new object[3]; //Type lateBoundType=Type.GetTypeFromProgID("v77S.Application"); lateBoundType=Type.GetTypeFromProgID("v77S.Application"); v77=Activator.CreateInstance(lateBoundType); arg[0]=lateBoundType.InvokeMember("RMTrade", BindingFlags.GetProperty ,null,v77,null); arg[1]=@"/D"+v77base+" /N"+user+" /P"+password; arg[2]="NO_SPLASH_SHOW"; getv77object=lateBoundType.InvokeMember("Initialize", BindingFlags.InvokeMethod , null, v77,arg); DisplayMessage("End Processing Message"); } catch (Exception ex) { Marshal.ReleaseComObject(getv77object); Marshal.ReleaseComObject(v77); MessageBox.Show("An exception was caught from 1C: "+ex.Message , "Error"); } } public object _1c { get {return v77;} } public Service1() { } } } хочу на клиенте, что-то типа автор ISComponent iSC; this.Cursor = Cursors.WaitCursor; Ole1C = null; try { iSC = (ISComponent)Marshal.BindToMoniker("queue:/new:ServerV7.Service1"); iSC.Get1c(V77base.Text,user.Text ,password.Text); Ole1C = iSC._1c; - хотим , но не знаем как :)) Так вот без _1с все работает, запускается. А как мне получить саму ссылку на 1с ? При попытке зарегистрировать COM получаем ошибку автор An unknown COM+ 1.0 catalog error occurred: 1. Произошли ошибки при доступе к одному или нескольким объектам ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=20&tablet=1&tid=1437983]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
16ms |
get tp. blocked users: |
1ms |
| others: | 221ms |
| total: | 316ms |

| 0 / 0 |
