Как создать внешнюю компоненту для 1С:Предприятия (на MS Visual Studio 2010)

Эту статью Сергея Рудакова, мы не смогли обойти стороной, так как полезность и информативность в ней просто зашкаливает.

Итак, сама статья:

В результате получится не совсем “настоящая” внешняя компонента для 1С Предприятия, т.к. это будет обыкновенный inprocess server реализованный с помощью мастера Visual Studio 2010 и представляющий собой пример реализации в картинках и по шагам.

Создаем простейшую компоненту, которая возвращает случайное число.

1) Создаем новый проект в студии:

1_653874556785675464503.02 Как создать внешнюю компоненту для 1С:Предприятия (на MS Visual Studio 2010)

2) Выбираем тип проекта ATL Project:

2_653874556785675464503.02 Как создать внешнюю компоненту для 1С:Предприятия (на MS Visual Studio 2010)

3) Начальное окно мастера:

3_653874556785675464503.02 Как создать внешнюю компоненту для 1С:Предприятия (на MS Visual Studio 2010)

4) Жмем Next >

4_653874556785675464503.02 Как создать внешнюю компоненту для 1С:Предприятия (на MS Visual Studio 2010)

Выбираем тип приложения: Dynamic-link library (DLL) и жмем кнопку Finish. Студия создаст заготовку нашего проекта со всеми необходимыми нам файлами.

5_653874556785675464503.02 Как создать внешнюю компоненту для 1С:Предприятия (на MS Visual Studio 2010)

5) В окне ClassView

Добавляем наш объект который будет предоставлять реализуемую функциональность компоненты…

6_653874556785675464503.02 Как создать внешнюю компоненту для 1С:Предприятия (на MS Visual Studio 2010)

Добавляем ATL Simple Object

7_653874556785675464503.02 Как создать внешнюю компоненту для 1С:Предприятия (на MS Visual Studio 2010)

Указываем в появившемся мастере необходимые параметры:

8_653874556785675464503.02 Как создать внешнюю компоненту для 1С:Предприятия (на MS Visual Studio 2010)

Для того чтобы можно было обратиться к вашей DLL из вне, например из 1С Предприятие, необходимо обязательно указать ProgID.

9_653874556785675464503.02 Как создать внешнюю компоненту для 1С:Предприятия (на MS Visual Studio 2010)

…но это еще не все. Так как мы добавили только лишь интерфейс нашей компоненты, на данном шаге, теперь необходимо указать экспортируемый метод как показано на следущем рисунке.

10_653874556785675464503.02 Как создать внешнюю компоненту для 1С:Предприятия (на MS Visual Studio 2010)

В мастере указываем необходимые параметры:

11_653874556785675464503.02 Как создать внешнюю компоненту для 1С:Предприятия (на MS Visual Studio 2010)

12_653874556785675464503.02 Как создать внешнюю компоненту для 1С:Предприятия (на MS Visual Studio 2010)

т.к. у нас есть как входной параметр, так и выходной указываем их с помощью мастера поочередно.

Входной параметр может быть как указателем на тип, так и обычным типом, выходной же только указатель.

Жмем кнопку Next > и переходим на следующую страницу:

13_653874556785675464503.02 Как создать внешнюю компоненту для 1С:Предприятия (на MS Visual Studio 2010)

На которой могут быть указаны дополнительные параметры нашего метода. Жмем кнопку Finish.

В результате получаем заготовку метода и прописываем туда свой код.

14_653874556785675464503.02 Как создать внешнюю компоненту для 1С:Предприятия (на MS Visual Studio 2010)

15_653874556785675464503.02 Как создать внешнюю компоненту для 1С:Предприятия (на MS Visual Studio 2010)

Все компонента готова!

После компиляции в Debug конфигурации получаем:

16_653874556785675464503.02 Как создать внешнюю компоненту для 1С:Предприятия (на MS Visual Studio 2010)

в Release:

17_653874556785675464503.02 Как создать внешнюю компоненту для 1С:Предприятия (на MS Visual Studio 2010)

Если хочется отлаживать вашу компоненту, то необходимо использовать Debug версию компоненты.

Для отладки идем в меню Tools -> Attach to process…

18_653874556785675464503.02 Как создать внешнюю компоненту для 1С:Предприятия (на MS Visual Studio 2010)

В появившемся окне выбираем приложение 1С Предприятие в которой наша DLL будет использоваться, после подключения отладчика можно работать с компонентой в отладочном режиме…

Для того чтобы компонента стала доступной другим приложениям необходимо с правами администратора запустить regsvr32 randomdll.dll

Компонента 32-битная, соответственно на 64-х битной системе не взлетит, необходима перекомпиляция проекта.

Пример использования из 1С Предприятия показан далее:

19_653874556785675464503.02 Как создать внешнюю компоненту для 1С:Предприятия (на MS Visual Studio 2010)