Эту статью Сергея Рудакова, мы не смогли обойти стороной, так как полезность и информативность в ней просто зашкаливает.
Итак, сама статья:
В результате получится не совсем «настоящая» внешняя компонента для 1С Предприятия, т.к. это будет обыкновенный inprocess server реализованный с помощью мастера Visual Studio 2010 и представляющий собой пример реализации в картинках и по шагам.
Создаем простейшую компоненту, которая возвращает случайное число.
1) Создаем новый проект в студии:
2) Выбираем тип проекта ATL Project:
3) Начальное окно мастера:
4) Жмем Next >
Выбираем тип приложения: Dynamic-link library (DLL) и жмем кнопку Finish. Студия создаст заготовку нашего проекта со всеми необходимыми нам файлами.
5) В окне ClassView
Добавляем наш объект который будет предоставлять реализуемую функциональность компоненты…
Добавляем ATL Simple Object
Указываем в появившемся мастере необходимые параметры:
Для того чтобы можно было обратиться к вашей DLL из вне, например из 1С Предприятие, необходимо обязательно указать ProgID.
…но это еще не все. Так как мы добавили только лишь интерфейс нашей компоненты, на данном шаге, теперь необходимо указать экспортируемый метод как показано на следущем рисунке.
В мастере указываем необходимые параметры:
т.к. у нас есть как входной параметр, так и выходной указываем их с помощью мастера поочередно.
Входной параметр может быть как указателем на тип, так и обычным типом, выходной же только указатель.
Жмем кнопку Next > и переходим на следующую страницу:
На которой могут быть указаны дополнительные параметры нашего метода. Жмем кнопку Finish.
В результате получаем заготовку метода и прописываем туда свой код.
Все компонента готова!
После компиляции в Debug конфигурации получаем:
в Release:
Если хочется отлаживать вашу компоненту, то необходимо использовать Debug версию компоненты.
Для отладки идем в меню Tools -> Attach to process…
В появившемся окне выбираем приложение 1С Предприятие в которой наша DLL будет использоваться, после подключения отладчика можно работать с компонентой в отладочном режиме…
Для того чтобы компонента стала доступной другим приложениям необходимо с правами администратора запустить regsvr32 randomdll.dll
Компонента 32-битная, соответственно на 64-х битной системе не взлетит, необходима перекомпиляция проекта.
Пример использования из 1С Предприятия показан далее: