Здрава, всем!!! Столкнулся с проблемой создания компоненты для 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С получала необходимый ей интерфейс? Перепробовал уже кучу атрибутов и т.д. и т.п. но не прокатывает. Подскажите что-нибудь, заранее благодарен.