1C Addin C# <Неизвестная компонента> (отсутствует интерфейс
От: Alexandr Sulimov Украина www.ase.com.ua
Дата: 16.07.09 13:10
Оценка:
Пишу Addin к 1С на С# VS 2005
Примеры взяты с здесь
Автор(ы): Алексей Столповских
Дата: 20.11.2004
Данная статья описывает технологию создания COM+-компонента для 1С на C#. Код компонента был написан с использованием Microsoft Visual Studio.NET 2003, классов Microsoft .NET Framework 1.1 и протестирован на операционной системе Windows Server 2003 System.


и здесь
Сделано как написано выше, но при подключении к 1С <Неизвестная компонента> (отсутствует интерфейс IInitDone)
На РСДН такая проблема проскакивала здесь
Автор: Bootch
Дата: 23.05.04
, но решение не приводилось, может кто сталкивался.
В чем проблема?
... << RSDN@Home 1.2.0 alpha 4 rev. 1090>>
Re: 1C Addin C# <Неизвестная компонента> (отсутствует интерф
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 16.07.09 13:24
Оценка:
Здравствуйте, Alexandr Sulimov, Вы писали:

AS>Пишу Addin к 1С на С# VS 2005

AS>Примеры взяты с здесь
Автор(ы): Алексей Столповских
Дата: 20.11.2004
Данная статья описывает технологию создания COM+-компонента для 1С на C#. Код компонента был написан с использованием Microsoft Visual Studio.NET 2003, классов Microsoft .NET Framework 1.1 и протестирован на операционной системе Windows Server 2003 System.


и здесь

AS>Сделано как написано выше, но при подключении к 1С <Неизвестная компонента> (отсутствует интерфейс IInitDone)
AS>На РСДН такая проблема проскакивала здесь
Автор: Bootch
Дата: 23.05.04
, но решение не приводилось, может кто сталкивался.

AS>В чем проблема?
В файле ресурса должна быть запись

STRINGTABLE DISCARDABLE
BEGIN


100 "AddInFromITypeInfo"


END
и солнце б утром не вставало, когда бы не было меня
Re: 1C Addin C# <Неизвестная компонента> (отсутствует интерф
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 16.07.09 13:29
Оценка:
Здравствуйте, Alexandr Sulimov, Вы писали:

В той статье кстати и написано
Подключение компонента к 1С

Подключить внешний компонент к 1С можно двумя методами:


С помощью функции ЗагрузитьВнешнююКомпоненту("<имя dll файла>"). Файл DLL должен находиться в папке БД, или Bin 1C директории. В этом случае имя компонента (ProgID) задается в файле ресурсов (*.RC) компонента под идентификатором 100. При этом 1С сама регистрирует компонент как COM-сервер. Так как структура ресурсов приложения .NET отличается от unmanaged-приложения, данный способ не может быть использован в нашем случае [7].
Можно также зарегистрировать компонент с помощью regsvr32 и подключать ее при помощи ПодключитьВнешнююКомпоненту("<ProgID>"), где <ProgID> может иметь вид "<ProgID1>[|<ProgID2>]...[|<ProgIDn>]" [8]. Во этом случае необязательно нахождение компонента в папке БД, так как путь к файлу указан в реестре. Использование данного метода показано ниже:
Если ПодключитьВнешнююКомпоненту("AddIn.SimpleExternalComponent") = 0 Тогда
Предупреждение("Не удалось загрузить компонент" + симв(13) + симв(10)
+ "AddIn.SimpleExternalComponent!", 60);
ЗавершитьРаботуСистемы(0);
Возврат;
КонецЕсли;
Компонента = СоздатьОбъект("AddIn.SimpleExternalComponent");





В AssemblyInfo.cs нужно проставить ComVisible(true)]

// Параметр ComVisible со значением FALSE делает типы в сборке невидимыми
// для COM-компонентов. Если требуется обратиться к типу в этой сборке через
// COM, задайте атрибуту ComVisible значение TRUE для этого типа.
[assembly: ComVisible(true)]


[ComVisible(true)]
[ProgId("AddIn.GlobalContext1C")]
[Guid("8693BBEC-C964-4478-AFCB-E8D15FD8F4F6")]

public class GlobalContext1C : IInitDone, ILanguageExtender
{
    public void RegisterExtensionAs([MarshalAs(UnmanagedType.BStr)]
               ref String extensionName)
    {
        extensionName = "GlobalContext1C";

    }


Тогда из 1С можно обратиться

Сообщить(ПодключитьВнешнююКомпоненту("AddIn.GlobalContext1C"));
Объект=Новый ("AddIn.GlobalContext1C");
и солнце б утром не вставало, когда бы не было меня
Отредактировано 06.08.2015 12:15 Serginio1 . Предыдущая версия .
Re: 1C Addin C# <Неизвестная компонента> (отсутствует интерф
От: indigoxp  
Дата: 17.07.09 08:55
Оценка:
Здравствуйте, Alexandr Sulimov, Вы писали:

AS>Пишу Addin к 1С на С# VS 2005

AS>Примеры взяты с здесь
Автор(ы): Алексей Столповских
Дата: 20.11.2004
Данная статья описывает технологию создания COM+-компонента для 1С на C#. Код компонента был написан с использованием Microsoft Visual Studio.NET 2003, классов Microsoft .NET Framework 1.1 и протестирован на операционной системе Windows Server 2003 System.


и здесь

AS>Сделано как написано выше, но при подключении к 1С <Неизвестная компонента> (отсутствует интерфейс IInitDone)
AS>На РСДН такая проблема проскакивала здесь
Автор: Bootch
Дата: 23.05.04
, но решение не приводилось, может кто сталкивался.

AS>В чем проблема?

Вот рабочие исходники базового компонента для ВК:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.EnterpriseServices;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace OneC.ExternalComponents
{

    public delegate void InitEventHandler();
    public delegate void DoneEventHandler();

    [AttributeUsage(AttributeTargets.Method | AttributeTargets.Property)]
    public class Export1cAttribute : Attribute
    {
        public readonly bool ValidOn;

        public Export1cAttribute()
        {
            ValidOn = true;
        }

        public Export1cAttribute(bool _validon)
        {
            ValidOn = _validon;
        }
    }

    [Guid("ab634004-f13d-11d0-a459-004095e1daea")]
    [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    [ComImport]
    public interface IAsyncEvent
    {
        /// Установка глубины буфера событий
        /// <param name="depth">Buffer depth</param>
        void SetEventBufferDepth(Int32 depth);

        /// Получение глубины буфера событий
        /// <param name="depth">Buffer depth</param>
        void GetEventBufferDepth(ref long depth);

        /// Посылка события
        /// <param name="source">Event source</param>
        /// <param name="message">Event message</param>
        /// <param name="data">Event data</param>
        void ExternalEvent(
            [MarshalAs(UnmanagedType.BStr)] String source,
            [MarshalAs(UnmanagedType.BStr)] String message,
            [MarshalAs(UnmanagedType.BStr)] String data
        );

        /// Очистка буфера событий
        void CleanBuffer();
    }

    [Guid("AB634005-F13D-11D0-A459-004095E1DAEA")]
    [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    [ComImport]
    public interface IStatusLine
    {
        /// Задает текст статусной строки
        /// <param name="bstrStatusLine">Текст статусной строки</param>
        void SetStarusLine([MarshalAs(UnmanagedType.BStr)]String bstrStatusLine);

        /// Сброс статусной строки
        void ResetStatusLine();
    }

    [Guid("AB634001-F13D-11d0-A459-004095E1DAEA")]
    [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    [ComImport]
    public interface IInitDone
    {
        void Init([MarshalAs(UnmanagedType.IDispatch)]object connection);

        void Done();

        void GetInfo([MarshalAs(UnmanagedType.SafeArray, SafeArraySubType = VarEnum.VT_VARIANT)]
                ref object[] info);
    }

    [Guid("AB634003-F13D-11d0-A459-004095E1DAEA")]
    [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    [ComImport]
    public interface ILanguageExtender
    {

        void RegisterExtensionAs([MarshalAs(UnmanagedType.BStr)]ref String extensionName);


        void GetNProps(ref Int32 props);


        void FindProp([MarshalAs(UnmanagedType.BStr)]String propName, ref Int32 propNum);


        void GetPropName(Int32 propNum, Int32 propAlias, [MarshalAs(UnmanagedType.BStr)]ref String propName);


        void GetPropVal(Int32 propNum, ref object propVal);


        void SetPropVal(Int32 propNum, ref object propVal);


        void IsPropReadable(Int32 propNum, ref bool propRead);


        void IsPropWritable(Int32 propNum, ref Boolean propWrite);


        void GetNMethods(ref Int32 pMethods);


        void FindMethod([MarshalAs(UnmanagedType.BStr)]String methodName, ref Int32 methodNum);


        void GetMethodName(Int32 methodNum, Int32 methodAlias, [MarshalAs(UnmanagedType.BStr)]
                            ref String methodName);


        void GetNParams(Int32 methodNum, ref Int32 pParams);

        void GetParamDefValue(Int32 methodNum, Int32 paramNum, ref object paramDefValue);


        void HasRetVal(Int32 methodNum, ref Boolean retValue);


        void CallAsProc(Int32 methodNum, [MarshalAs(UnmanagedType.SafeArray, SafeArraySubType = VarEnum.VT_VARIANT)]
                        ref object[] pParams);


        void CallAsFunc(Int32 methodNum, ref object retValue,
                        [MarshalAs(UnmanagedType.SafeArray, SafeArraySubType = VarEnum.VT_VARIANT)]
                        ref object[] pParams);
    }
    
    [ClassInterface(ClassInterfaceType.None)]
    public class ExtComponentBase: ServicedComponent,IInitDone,ILanguageExtender
    {
        private IAsyncEvent asyncevent;
        private IStatusLine statusline;
        private string compname;

        public event InitEventHandler InitEvent;
        public event DoneEventHandler DoneEvent;

        //таблица поиска номера метода по имени
        private Hashtable MethodNameToNumber;
        //таблица поиска имени метода по номеру
        private Hashtable MethodNumberToName;
        //таблица количества параметров у методов
        private    Hashtable MethodNumberCountParams;
        //таблица поиска номера свойства по имени
        private Hashtable PropNameToNumber;
        //таблица поиска имени свойства по номеру
        private Hashtable PropNumberToName;
        //массив инфо о методах
        private MethodInfo[] MethodsInfo;
        //массив инфо о свойствах
        private PropertyInfo[] PropsInfo;

        //интерфейс вызова событий в 1с
        protected IAsyncEvent Async
        {
            get{return asyncevent;}
        }

        //интерфейс работы со строкой статуса
        protected IStatusLine StatusLine
        {
            get{return statusline;}
        }

        // имя компоненты при регистрации
        protected string ComponentName
        {
            get{return compname;}
            set{compname = value;}
        }

        //Инициализация компоненты
        void IInitDone.Init([MarshalAs(UnmanagedType.IDispatch)]
                        object connection)
        {
            asyncevent = (IAsyncEvent)connection;
            statusline = (IStatusLine)connection;

            if (InitEvent != null)
            {
                InitEvent();
            }
        }

        void IInitDone.GetInfo([MarshalAs(UnmanagedType.SafeArray, SafeArraySubType=VarEnum.VT_VARIANT)]
                        ref object[] info)
        {
            info[0] = 2000;
        }

        //деинициализация компоненты
        void IInitDone.Done()
        {
            if (DoneEvent != null)
            {
                DoneEvent();
            }
        }

        //регистрация компоненты в 1с
        void ILanguageExtender.RegisterExtensionAs([MarshalAs(UnmanagedType.BStr)]
               ref String extensionName)
        {
            MethodNameToNumber      = new Hashtable();
            MethodNumberToName      = new Hashtable();
            MethodNumberCountParams = new Hashtable();

            PropNameToNumber        = new Hashtable();
            PropNumberToName          = new Hashtable();

            ArrayList TempMethodsInfo = new ArrayList();
            ArrayList TempPropsInfo = new ArrayList();
            foreach (MethodInfo m in this.GetType().GetMethods())
            {
                if ((m.DeclaringType == this.GetType()) &&
                    !(m.IsConstructor))
                {
                    object[] attrs = m.GetCustomAttributes(true);
                    foreach (object attr in attrs)
                    {
                        if ((attr is Export1cAttribute) & (((Export1cAttribute)attr).ValidOn))
                        {
                            int Identifier = TempMethodsInfo.Add(m);
                            MethodNameToNumber.Add(m.Name,Identifier);
                            MethodNumberToName.Add(Identifier,m.Name);
                            MethodNumberCountParams.Add(Identifier,m.GetParameters().Length);
                            break;
                        }
                    }
                }
            }
            foreach (PropertyInfo p in this.GetType().GetProperties())
            {
                if (p.DeclaringType == this.GetType())
                {
                    object[] attrs = p.GetCustomAttributes(true);
                    foreach (object attr in attrs)
                    {
                        if ((attr is Export1cAttribute) & (((Export1cAttribute)attr).ValidOn))
                        {
                            int Identifier = TempPropsInfo.Add(p);
                            PropNameToNumber.Add(p.Name,Identifier);
                            PropNumberToName.Add(Identifier,p.Name);
                            break;
                        }
                    }
                }

            }
            MethodsInfo = (MethodInfo[])TempMethodsInfo.ToArray(typeof(MethodInfo));
            PropsInfo = (PropertyInfo[])TempPropsInfo.ToArray(typeof(PropertyInfo));
            if (compname != null)
            {
                extensionName = compname;
            }
            else
            {
                throw new Exception("Не указано имя компоненты");
            }
        }

        //Возвращает количество свойств
        void ILanguageExtender.GetNProps(ref Int32 props)
        {
            props = PropsInfo.Length;
        }

        //Возвращает целочисленный идентификатор свойства, соответствующий 
        // переданному имени
        void ILanguageExtender.FindProp([MarshalAs(UnmanagedType.BStr)]String propName,
                            ref Int32 propNum)
        {
            propNum = (int)PropNameToNumber[propName];
            if (propNum == 0)
            {
                throw new Exception("Свойство с именем "+propName+" не найдено");
            }
        }

        //Возвращает имя свойства, соответствующее
        //переданному целочисленному идентификатору
        void ILanguageExtender.GetPropName(Int32 propNum,Int32 propAlias,
                                [MarshalAs(UnmanagedType.BStr)]ref String propName)
        {
            propName = (string)PropNumberToName[propNum];
            if (propName == null)
            {
                throw new Exception("Ошибка свойство не найдено");
            }
        }

        //Возвращает значение свойства.
        void ILanguageExtender.GetPropVal(Int32 propNum,ref object propVal)
        {
            propVal = PropsInfo[propNum].GetValue(this,null);
        }

        //Устанавливает значение свойства.
        void ILanguageExtender.SetPropVal(Int32 propNum,ref object propVal)
        {
            PropsInfo[propNum].SetValue(this,propVal,null);
        }

        //Определяет, можно ли читать значение свойства.
        void ILanguageExtender.IsPropReadable(Int32 propNum, ref bool propRead)
        {
            propRead = PropsInfo[propNum].CanRead;
        }

        //Определяет, можно ли изменять значение свойства
        void ILanguageExtender.IsPropWritable(Int32 propNum, ref Boolean propWrite)
        {
            propWrite = PropsInfo[propNum].CanWrite;
        }

        //Возвращает количество методов
        void ILanguageExtender.GetNMethods(ref Int32 pMethods)
        {
            pMethods = MethodsInfo.Length;
        }

        // Возвращает идентификатор метода по его имени
        void ILanguageExtender.FindMethod([MarshalAs(UnmanagedType.BStr)]String methodName,
                                ref Int32 methodNum)
        {
            methodNum = (int)MethodNameToNumber[methodName];
            if (methodNum == 0)
            {
                throw new Exception("Метод с именем "+methodName+" не найден");
            }
        }

        // Возвращает имя метода по его идентификатору
        void ILanguageExtender.GetMethodName(Int32 methodNum,Int32 methodAlias,
                                        [MarshalAs(UnmanagedType.BStr)]ref String methodName)
        {
            methodName = (string)MethodNumberToName[methodNum];
            if (methodName == null)
            {
                throw new Exception("Ошибка метод не найден");
            }
        }

        // Возвращает количество параметров метода по его идентификатору
        void ILanguageExtender.GetNParams(Int32 methodNum, ref Int32 pParams)
        {
            pParams = (int)MethodNumberCountParams[methodNum];
        }

        //Возвращает значение параметра метода поумолчанию
        void ILanguageExtender.GetParamDefValue(Int32 methodNum,Int32 paramNum,ref object paramDefValue)
        {
            paramDefValue = MethodsInfo[methodNum].GetParameters()[paramNum].DefaultValue;
        }

        //Указывает, что у метода есть возвращаемое значение
        void ILanguageExtender.HasRetVal(Int32 methodNum, ref Boolean retValue)
        {
            if (MethodsInfo[methodNum].ReturnType == typeof(void))
            {
                retValue =  false;
            }
            else
            {
                retValue =  true;
            }
        }

        // Вызов метода как процедуры с использованием идентификатора
        void ILanguageExtender.CallAsFunc(Int32 methodNum,ref object retValue,
                                [MarshalAs(UnmanagedType.SafeArray, SafeArraySubType=VarEnum.VT_VARIANT)]
                                   ref object[] pParams)
        {
            retValue = MethodsInfo[methodNum].Invoke(this, pParams);
        }

        // Вызов метода как функции с использованием идентификатора
        void ILanguageExtender.CallAsProc(Int32 methodNum,[MarshalAs(UnmanagedType.SafeArray, SafeArraySubType=VarEnum.VT_VARIANT)]
                                ref object[] pParams)
        {
            MethodsInfo[methodNum].Invoke(this, pParams);
        }

    }
}


А это пример самой ВК для работы с COM-портом:
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using System.IO.Ports;
using System.Threading;
using OneC.ExternalComponents;
using System.Windows.Forms;

namespace CardReaderMR2000
{
    [Guid("835E5814-3642-4433-8473-FA4D90E88C4E")]
    [ProgId("AddIn.CardReaderMR2000")]
    public class CardReader: ExtComponentBase
    {
        private SerialPort sp;
        private string inputData="";

        [Export1c]
        public string Port
        {
            get{return sp.PortName;}
            set {sp.PortName = value; }
        }

        public CardReader()
        {
            ComponentName = "CardReaderMR2000";
            InitEvent += new InitEventHandler(Initialization);
        }

        public void Initialization()
        {
            sp = new SerialPort();
            sp.PortName = "COM5";
            sp.ReadTimeout = -1;
            sp.BaudRate = 9600;
            sp.Parity = Parity.None;
            sp.DataBits = 8;
            sp.StopBits = StopBits.One;
            sp.Handshake = Handshake.None;
            sp.DtrEnable = true;
            sp.RtsEnable = true;
            sp.DataReceived += new SerialDataReceivedEventHandler(sp_DataReceived);
            
        }

        void sp_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            string chr = sp.ReadExisting();
            if (chr != string.Empty && chr[0] != Convert.ToChar(10))
            {
                if (chr[0] != Convert.ToChar(13))
                {
                    inputData += chr;
                }
                else
                {
                    Thread t = new Thread(new ThreadStart(ReadData));
                    t.Start();
                }
            }
        }

        private void ReadData()
        {
            lock (inputData)
            {
                this.Async.ExternalEvent("AddIn.CardReaderMR2000", "ДанныеКарты", inputData);
                inputData = "";
            }
        }

        [Export1c]
        public void Open()
        {
            sp.Open();
        }

        [Export1c]
        public void Close()
        {
            sp.Close();
        }

    }
}
... << RSDN@Home 1.2.0 alpha 4 rev. 1237>>
Re[2]: 1C Addin C# <Неизвестная компонента> (отсутствует инт
От: indigoxp  
Дата: 17.07.09 09:04
Оценка:
Здравствуйте, indigoxp, Вы писали:

I>Здравствуйте, Alexandr Sulimov, Вы писали:


AS>>Пишу Addin к 1С на С# VS 2005

AS>>Примеры взяты с здесь
Автор(ы): Алексей Столповских
Дата: 20.11.2004
Данная статья описывает технологию создания COM+-компонента для 1С на C#. Код компонента был написан с использованием Microsoft Visual Studio.NET 2003, классов Microsoft .NET Framework 1.1 и протестирован на операционной системе Windows Server 2003 System.


и здесь

AS>>Сделано как написано выше, но при подключении к 1С <Неизвестная компонента> (отсутствует интерфейс IInitDone)
AS>>На РСДН такая проблема проскакивала здесь
Автор: Bootch
Дата: 23.05.04
, но решение не приводилось, может кто сталкивался.

AS>>В чем проблема?

Только обязательны условия для ВК:
Сборка подписана дожна быть ключом.
регистрация с /codebase и /tlb.

код в 1с:
ПодключитьВнешнююКомпоненту("AddIn.CardReaderMR2000");
Драйвер = Новый ("AddIn.CardReaderMR2000");
Драйвер.Port = "COM1";
Драйвер.Open();
Драйвер.Close();
... << RSDN@Home 1.2.0 alpha 4 rev. 1237>>
Re: 1C Addin C# <Неизвестная компонента> (отсутствует интерф
От: indigoxp  
Дата: 17.07.09 09:15
Оценка:
Здравствуйте, Alexandr Sulimov, Вы писали:

AS>Пишу Addin к 1С на С# VS 2005

AS>Примеры взяты с здесь
Автор(ы): Алексей Столповских
Дата: 20.11.2004
Данная статья описывает технологию создания COM+-компонента для 1С на C#. Код компонента был написан с использованием Microsoft Visual Studio.NET 2003, классов Microsoft .NET Framework 1.1 и протестирован на операционной системе Windows Server 2003 System.


и здесь

AS>Сделано как написано выше, но при подключении к 1С <Неизвестная компонента> (отсутствует интерфейс IInitDone)
AS>На РСДН такая проблема проскакивала здесь
Автор: Bootch
Дата: 23.05.04
, но решение не приводилось, может кто сталкивался.

AS>В чем проблема?

а в примере по сслыке у него ошибка ГУИД интерфейса неверный:
как есть:
    [InterfaceType(ComInterfaceType.InterfaceIsIUnknown),
    Guid("28382723-A240-4a45-BD88-3181F9E0D16D")]
    public interface IInitDone
    {    
        [PreserveSig]
        void Init([MarshalAs(UnmanagedType.IDispatch)]Object pConnection);
        
        [PreserveSig]
        void Done();

        [PreserveSig]
        void GetInfo(ref Object[] pInfo);
    }


и как должно быть как минимум:
    [InterfaceType(ComInterfaceType.InterfaceIsIUnknown),
    Guid("AB634001-F13D-11d0-A459-004095E1DAEA")]
    public interface IInitDone
    {    
        [PreserveSig]
        void Init([MarshalAs(UnmanagedType.IDispatch)]Object pConnection);
        
        [PreserveSig]
        void Done();

        [PreserveSig]
        void GetInfo(ref Object[] pInfo);
    }
... << RSDN@Home 1.2.0 alpha 4 rev. 1237>>
Re: 1C Addin C# <Неизвестная компонента> (отсутствует интерф
От: indigoxp  
Дата: 17.07.09 09:15
Оценка:
Здравствуйте, Alexandr Sulimov, Вы писали:

AS>Пишу Addin к 1С на С# VS 2005

AS>Примеры взяты с здесь
Автор(ы): Алексей Столповских
Дата: 20.11.2004
Данная статья описывает технологию создания COM+-компонента для 1С на C#. Код компонента был написан с использованием Microsoft Visual Studio.NET 2003, классов Microsoft .NET Framework 1.1 и протестирован на операционной системе Windows Server 2003 System.


и здесь

AS>Сделано как написано выше, но при подключении к 1С <Неизвестная компонента> (отсутствует интерфейс IInitDone)
AS>На РСДН такая проблема проскакивала здесь
Автор: Bootch
Дата: 23.05.04
, но решение не приводилось, может кто сталкивался.

AS>В чем проблема?

а в примере по сслыке у него ошибка ГУИД интерфейса неверный:
как есть:
    [InterfaceType(ComInterfaceType.InterfaceIsIUnknown),
    Guid("28382723-A240-4a45-BD88-3181F9E0D16D")]
    public interface IInitDone
    {    
        [PreserveSig]
        void Init([MarshalAs(UnmanagedType.IDispatch)]Object pConnection);
        
        [PreserveSig]
        void Done();

        [PreserveSig]
        void GetInfo(ref Object[] pInfo);
    }


и как должно быть как минимум:
    [InterfaceType(ComInterfaceType.InterfaceIsIUnknown),
    Guid("AB634001-F13D-11d0-A459-004095E1DAEA")]
    public interface IInitDone
    {    
        [PreserveSig]
        void Init([MarshalAs(UnmanagedType.IDispatch)]Object pConnection);
        
        [PreserveSig]
        void Done();

        [PreserveSig]
        void GetInfo(ref Object[] pInfo);
    }
... << RSDN@Home 1.2.0 alpha 4 rev. 1237>>
Re: 1C Addin C# <Неизвестная компонента> (отсутствует интерф
От: Alexandr Sulimov Украина www.ase.com.ua
Дата: 29.07.09 05:43
Оценка:
Здравствуйте, Alexandr Sulimov, Вы писали:

AS>Пишу Addin к 1С на С# VS 2005

AS>Примеры взяты с здесь
Автор(ы): Алексей Столповских
Дата: 20.11.2004
Данная статья описывает технологию создания COM+-компонента для 1С на C#. Код компонента был написан с использованием Microsoft Visual Studio.NET 2003, классов Microsoft .NET Framework 1.1 и протестирован на операционной системе Windows Server 2003 System.


и здесь

AS>Сделано как написано выше, но при подключении к 1С <Неизвестная компонента> (отсутствует интерфейс IInitDone)
AS>На РСДН такая проблема проскакивала здесь
Автор: Bootch
Дата: 23.05.04
, но решение не приводилось, может кто сталкивался.

AS>В чем проблема?

Люди пожалуйста дайте код работающей компоненты на C#, задолбался искать почему (отсутствует интерфейс IInitDone)
... << RSDN@Home 1.2.0 alpha 4 rev. 1090>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.