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

06.02.12

Разработка - Разработка внешних компонент

В результате получится не совсем "настоящая" внешняя компонента для 1С Предприятия, т.к. это будет обыкновенный inprocess server реализованный с помощью мастера Visual Studio 2010 и представляющий собой пример реализации в картинках и по шагам. За основу взята публикация http://infostart.ru/public/16916/, за что автору отдельное спасибо.

Скачать файлы

Наименование Файл Версия Размер
Исходный код компоненты
.rar 21,54Kb
102
.rar 21,54Kb 102 Скачать

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

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С Предприятия показан далее:

 

Надеюсь кому-то данная публикация поможет войти в мир разработки внешних компонент.

 

 

 

См. также

Медиадисплей. Рекламный информационный монитор для покупателя.

Разработка внешних компонент POS терминал Рабочее место Розничная торговля Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Рестораны, кафе и фаст-фуд Реклама, PR и маркетинг Управленческий учет Платные (руб)

Монитор покупателя может отображать текущую покупку на кассовом месте, показывать видеорекламу, баннеры, во время простоя разворачивать рекламу на весь экран. Можно использовать в качестве графического меню-борда в кафе и видеовывески. Управление выводом на телевизор через hdmi-приставку на базе Windows или Android. В качестве устройства отображения можно использовать Android-планшеты, фоторамки с Android, монитор любого Windows-компьютера, доступного по сети. Настраивается ЛЮБОЙ ДИЗАЙН экрана!

16800 руб.

30.05.2017    52055    34    69    

43

Внешняя компонента для сканирования (замена TWAIN-компоненты БСП) (Native Win 32/64)

Разработка внешних компонент Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Внешняя компонента позволяет работать c TWAIN-совместимым оборудованием (сканерами, камерами) . Полностью совместима со стандартной TWAIN-компонентой из БСП и может применяться как ее замена без изменения вызовов, при этом может работать с 64-разрядной платформой, а так же имеет расширенную функциональность, например, сохранение результата непосредственно в PDF без использования сторонних утилит. Прекрасно работает на сервере, тонком клиенте и веб-клиенте (проверена работа в браузерах Google Chrome, Mozilla Firefox и Microsoft Internet Explorer).

2400 руб.

12.05.2020    26160    131    99    

82

Внешняя компонента печати PDF (Native Win 32/64)

Разработка внешних компонент Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Внешняя компонента позволяет печатать PDF файлы непосредственно из 1С, не используя при этом сторонних программ. Прекрасно работает на сервере, тонком клиенте и веб-клиенте. Основана на проекте PDFium из состава проекта Chromium/Chrome

1500 руб.

17.09.2018    35012    104    123    

111

Мастер создания внешних компонент 1С (технология COM) для DELPHI 6/7/8/2005/2006/2007/2008/2010/XE/XE2/XE3

Разработка внешних компонент Платформа 1С v8.3 Платные (руб)

Средство для сверхбыстрой разработки внешних компонент 1С:Предприятия 7.7 и 8 по технологии COM на всех версиях DELPHI, начиная с 6.

2000 руб.

28.03.2013    53969    35    14    

68

Внешняя компонента для подключения 1С к телефонии Asterisk

Разработка внешних компонент Телефония, SIP Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Внешняя компонента выполнена по технологии Native API для 1С 8.х, обеспечивает доступ к программным АТС Asterisk (FreePBX, Elastix) через AMI интерфейс. Через него можно управлять многими функциями Asterisk (определение номеров, перевод звонков, набор телефона и т. д.)

2400 руб.

04.05.2018    44898    116    64    

60

QR-код с логотипом компании (обычная и управляемая форма)

Разработка внешних компонент Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Как известно, стремление сделать свою рекламную продукцию запоминающейся и выделяющейся — верный путь к успеху. Сегодня, мы поговорим с вами о том, что можно сделать с обычным черно-белым QR-кодом, чтобы он стал более живым и привлекательным. Если вам не терпится попробовать сделать QR-код с логотипом компании, то эта обработка для вас!

2400 руб.

22.06.2016    30822    4    4    

8

Внешняя компонента 1С и С++. Продолжаем разговор.

Разработка внешних компонент Платформа 1С v8.3 Бесплатно (free)

А давайте запилим 8.3.26 до релиза, или оповещение с сервера...

19.02.2024    3904    starik-2005    28    

52

Внешние компоненты 1С и язык C++

Разработка внешних компонент Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Некоторые практические аспекты создания внешних компонент на языке С++ для платформы 1С 8.3++.

26.01.2024    4680    starik-2005    32    

39
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Ivon 673 03.02.12 19:58 Сейчас в теме
Хорошая статья, вот только если бы кто подобную для С# написал...
9. cool.vlad4 2 04.02.12 22:07 Сейчас в теме
(1) см. (4). Раздел COM. И поищи в интернете и на rsdn(на codeproject). Тема достаточно хорошо освещена. На ИС тоже попадались статьи.
12. fishca 1254 06.02.12 12:02 Сейчас в теме
13. 1cinfo1 7 06.02.12 13:41 Сейчас в теме
(12)
Спасибо за ссылку.
Автору тоже респект, инструкция в картинках никогда не помешает, особенно для первого знакомства.
22. Kuzja_R 170 27.06.12 00:08 Сейчас в теме
(1) Ivon, сделал шаблон внешней компоненты на C#.
2. filinmd 03.02.12 22:20 Сейчас в теме
А с VB такой маневр прокатит?
3. Dethmond 04.02.12 00:08 Сейчас в теме
Спасибо за труд, интересно было почитать
4. cool.vlad4 2 04.02.12 00:20 Сейчас в теме
Кто интересуется COM/ActiveX компонентами на C++/CLI, VB.Net, C# советую посмотреть http://1code.codeplex.com/ . Парочку примеров там точно были.
5. SiAl 76 04.02.12 00:38 Сейчас в теме
Но это же COM-объект. А где внешняя компонента, заявленная в заголовке публикации?
myALKleon; ll13; +2 Ответить
6. q_i 577 04.02.12 10:21 Сейчас в теме
(5) SiAl, согласен. Заголовок некорректный.
7. Patricul 04.02.12 21:56 Сейчас в теме
Классная статья ничего не скажешь! Думаю, что тут нет особой разницы на чём делать внешнюю компоненту на С++, C# или тем более на VB... dll он и в Африке dll. Поскольку это статья описывает технологию применения внешних библиотек (описания, собственных, классов, функций) в 1С.
8. cool.vlad4 2 04.02.12 22:05 Сейчас в теме
(7) Вообще-то в статье как верно заметили - COM компонента, так вот на каком её языке делать есть разница.Сравнить на C++ и языки на дотнете. Разница огромная. Хотя принцип COM технологии, конечно, один.
10. Jackman 05.02.12 17:29 Сейчас в теме
В любом случае, спасибо за проиллюстрированную пошаговую статью.
11. DimaP 63 06.02.12 09:36 Сейчас в теме
23. djolejek 11.08.12 20:12 Сейчас в теме
{Форма.Форма.Форма(11)}: Ошибка при вызове конструктора (COMОбъект): Класс не зарегистрирован: Класс не зарегистрирован


хм.. из за чего может быть?
14. zinch 06.02.12 18:50 Сейчас в теме
Спасибо большое! Очень интересная тема!
15. mihas1001 07.02.12 10:03 Сейчас в теме
Занятная публикация! Расширяет возможности в значительной мере. Было бы интересно посмотреть пошаговое создание платформы в MS Visual Studio))
16. fishca 1254 07.02.12 11:16 Сейчас в теме
(15) ну если только Сергей Нуралиев сделает пару-тройку скриншотиков и разместит здесь :D
17. Inerren 08.02.12 14:41 Сейчас в теме
Спасибо за отличную инструкцию! Приму на вооружение!
18. sasha_war87 08.02.12 14:47 Сейчас в теме
19. VIP_1392 09.02.12 11:33 Сейчас в теме
20. xazrad 15 09.02.12 11:34 Сейчас в теме
Ценная статья!!! СПАСИБО!
21. Armando 1399 26.02.12 14:00 Сейчас в теме
Сделайте кто-нибудь аналогичный пример создания ВК по технологии Native API
Oleg_nsk; vpaull; +2 Ответить
37. ImHunter 312 02.12.16 13:35 Сейчас в теме
(21) Насчет как компилировать компоненты NativeApi
Это достаточно просто пишется на Delphi. Где-то на просторах есть скелет и какая-то компонента на его основе.
В 2012 г писал таким образом native-компоненту для отрисовки ШК PDF417.
24. djolejek 11.08.12 20:23 Сейчас в теме
Определил в чем ошибка, зарегистрировал только DLL release, после регистрации dll из папки debug всё заработало.
25. realchel 31.07.14 12:50 Сейчас в теме
Может быть за 2 года появились какие то статьи по созданию на С#?
26. fishca 1254 31.07.14 12:58 Сейчас в теме
27. androgin 21.08.14 03:41 Сейчас в теме
А у кого нибудь есть описание, как компилировать компоненты NetiveApi для вебклиента?
28. miroha 23.08.14 14:31 Сейчас в теме
Скачал с официального сайта MS Visual Studio 2010 expres , а там нет библиотеки ALT ((( что делать?
34. olbu 24.02.15 11:44 Сейчас в теме
(28) miroha, Тож столкнулся с тем, что в Экспресс нет atl... Как решили этот вопрос? не подскажите?
46. чикаго 24.07.18 10:56 Сейчас в теме
(28) (34) необходимо доустановить компонент.
Workloads -> "Desktop development with C++"
29. sandybaev 196 04.09.14 10:31 Сейчас в теме
хорошая тема. заработала с первого раза.
fishca Вам бы углубиться и показывать нам более сложные вещи.
а мы бы подучились :)
30. festbot 02.10.14 17:48 Сейчас в теме
Привет.
Прочитал твой пост про создание ВК, точнее COM. Тут вопрос появился, у меня библиотека созданная таким образом (то есть как ATL), не хочет регистрироваться в win XP. В чем может быть проблема? Или есть ли способ создать COM объект как MFC?
31. fish249 30.12.14 14:13 Сейчас в теме
Спасибо, полезная статья.
32. rainstars 31.12.14 11:06 Сейчас в теме
Спасибо. Интересно почитать.
33. wings.inc 10.01.15 09:04 Сейчас в теме
35. milk911 01.11.16 13:19 Сейчас в теме
Добрый день! При подключении DLL на другом компьютере возникает ошибка "Тип не определен (AddIn.....". Брал пример ВК с диска ИТС. Когда на компьютер устанавливаешь Visual Studio, все работает. Видимо, не хватает библиотеки какой-то. Как заставить компилятор включать необходимые библиотеки в DLL?
Спасибо!
36. Perfolenta 203 02.12.16 13:27 Сейчас в теме
На обычном vb6 такие dll делаются намного проще и отлично работают на любых версиях винды... сам часто делаю и использую..
38. sergey.s.betke@yandex.ru 4 26.02.18 19:28 Сейчас в теме
Коллеги, добрый день.
Возник вопрос создания кроссплатформенной ВК для 1С 8.3. Речь об OpenOffice, взаимодействие через UNO, а не через COM. Существует компилируемый под Linux шаблон ВК?
39. realchel 27.02.18 12:53 Сейчас в теме
40. sergey.s.betke@yandex.ru 4 27.02.18 13:54 Сейчас в теме
(39) Спасибо. Я правильно понимаю, что ВК на NativeAPI будет работать в Linux и без Wine?
41. sergey.s.betke@yandex.ru 4 27.02.18 13:55 Сейчас в теме
(40)Вопрос снимаю, уже прочитал. Спасибо за ссылку.
42. realchel 28.02.18 13:47 Сейчас в теме
(41)Если сделаешь рабочий шаблон на любом языке, я бы(да и не только я) с удовольствием ознакомились:)
43. ambako1 07.04.18 13:49 Сейчас в теме
очень помог спасибо автору
44. le_ 237 29.05.18 17:15 Сейчас в теме
А кто-нибудь сталкивался с проблемой как на картинках? Что-то с кодировкой...
Как победить?

8.2.19.106
Прикрепленные файлы:
45. le_ 237 29.05.18 17:38 Сейчас в теме
(44) Так нормально:
MessageBox(NULL, CString(*SomeText), L"Заголовок", MB_ICONINFORMATION);
47. vitkhv 15.02.19 09:16 Сейчас в теме
Хорошая статья, жаль только с Visual Studio 2017 15.6 MS грохнули ATL Add Method wizard. В текущей версии Visual Studio 2017 15.9 проблему так и не решили. Видимо MS решила полностью забить на COM.
гвость; +1 Ответить
48. fixin 4252 21.12.20 08:30 Сейчас в теме
Большое спасибо.
Взяв за основу сюжетную канву, смог таки написать свой COM-объект на Visual Studio 2019.
https://forum.mista.ru/topic.php?id=862736&page=8

Чтобы протестить DLL, вот код (должно выдать 1):
тест = новый COMОбъект("AnvizCCHEX.Device");
рез = тест.Test();
Сообщить(рез);
тест = 0;



(47) о, я так и не понял, почему нет Wizard, а вот оно что оказывается...
Прикрепленные файлы:
AnvizCCHEX-CPP-COM с единственным методом Test.zip
49. realchel 22.12.20 10:43 Сейчас в теме
50. fixin 4252 22.12.20 15:00 Сейчас в теме
(49) файл на C++, да, сперва хотел на C++, но потом меня отговорили и делаю на C# в итоге. Он проще, похож на Visual Basic и без лишнего геморроя.
51. realchel 23.12.20 20:00 Сейчас в теме
(50)На С# я уже 6 лет разрабатываю компоненту для своей компании. Ищу понятный шаблон на C++ что бы сделать native компоненту.
52. Armando 1399 23.12.20 21:26 Сейчас в теме
(51) На ИТС всё есть в достаточном объёме для разработки ВК. Мне минимальных знаний C++ хватило того, что есть на ИТС для разработки ВК по технологии native api. Разрабатывал ВК для работы в 1С по протоколу SFTP.
realchel; +1 Ответить
53. fixin 4252 24.12.20 07:53 Сейчас в теме
(52) ну видишь, у меня на C++ получилось сделать COM-объект, а отсюда при желании и до ВК недалеко.
54. fixin 4252 24.12.20 07:53 Сейчас в теме
(52) не скажи, там все примеры под CMAKE, не под актуальные версии VS, в общем, страшно они далеки от народа.
55. Armando 1399 24.12.20 09:15 Сейчас в теме
(54) я делал на актуальной версии VS, свежескачанной с сайта MS. Создавал новый проект и с нуля настраивал. Вообще разные варианты пробовал. Естественно не сразу все получилось, но я победил.
56. fixin 4252 24.12.20 14:56 Сейчас в теме
(55) Жаль, что 1с не считает нужным обновлять свои примеры под актуальную версию VS. И всегда приходится "торить с нуля".
57. user595604 27.12.20 08:14 Сейчас в теме
в vs 2019 здесь нет списка установленных шаблонов

предлагает доабвить класс только так. Шаблоны отдельно нужно устанавливать? как?
Прикрепленные файлы:
58. Dem0 18 22.09.21 19:52 Сейчас в теме
Вечер добрый!
А есть подобный гайд для Visual Studio 2019?
Че-то тычу вроде по аналогии, но подобных заготовок как у вас не получается.
И как и куда добавлять ПрогАйДи - не понятно.
Оставьте свое сообщение