Разработка .НЕТ-компоненты для 1С.
От: Bootch Россия  
Дата: 23.05.04 16:58
Оценка:
Здрава, всем!!! Столкнулся с проблемой создания компоненты для 1С, а именно: любая компонента, которую подключаешь из 1С должна реализовывать определенные интерфейсы (обязательно IInitDone), его описание на IDL следующее:

        [
             object,
             uuid(AB634001-F13D-11d0-A459-004095E1DAEA),
             helpstring("IInitDone Interface"),
             pointer_default(unique)
        ]
    interface IInitDone : IUnknown
    {
        [helpstring("method Init")] HRESULT Init([in] IDispatch *pConnection);
        [helpstring("method Done")] HRESULT Done();
                [helpstring("method GetInfo")] HRESULT GetInfo([in,out] SAFEARRAY (VARIANT) *pInfo);
    };


Что я делаю:


using System;
using System.Runtime.InteropServices;

namespace ExternalComponent
{
    [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);
    }

    [ComVisible(true),
    ProgId("AddIn.AddInTest"),
    Guid("5BC74003-2EAB-4a89-AEB2-F4D81DC68A91"),
    ClassInterface(ClassInterfaceType.None)]
    public class AddInTest : IInitDone
    {
        public AddInTest()
        {
        }

        public void Init([MarshalAs(UnmanagedType.IDispatch)]Object pConnection)
        {
            return;
        }

        public void Done()
        {
            return;
        }

        public void GetInfo(ref Object[] pInfo)
        {
            try
            {
                pInfo.SetValue("1000", 0);
            }
            catch (Exception e)
            {
                throw new COMException(e.Message, e);
            }
        }
    }
}


После регистрации я пытаюсь подключить это в 1С, на что она мне рапортует, что:
Ошибка создания объекта из компоненты <Неизвестная компонента> (Отсутствует интерфейс IInitDone)

ВОПРОС Как необходимо описать класс, чтобы при обращении к объекту данного класса 1С получала необходимый ей интерфейс? Перепробовал уже кучу атрибутов и т.д. и т.п. но не прокатывает. Подскажите что-нибудь, заранее благодарен.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.