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

06.02.12

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Исходный код компоненты
.rar 21,54Kb
102
102 Скачать (1 SM) Купить за 1 850 руб.

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 и маркетинг Управленческий учет Платные (руб)

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

18000 руб.

30.05.2017    54122    9    69    

46

Разработка внешних компонент Программист Платформа 1С v8.3 1C:Бухгалтерия 1С:Управление торговлей 11 Платные (руб)

Внешняя компонента для конвертации PDF файлов в картинки без использования дополнительных программ. Работает на сервере и в тонком клиенте.

2400 руб.

25.06.2024    1164    3    4    

3

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

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

2400 руб.

04.05.2018    47382    124    66    

67

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

Внешняя компонента, позволяющая посылать команды и получать ответы по GraphQL протоколу из 1С.Может быть использована при интеграции. В 1С работает на стороне "клиента".

4600 руб.

27.06.2023    3645    3    0    

5

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

Позволяет автоматизировать работу с картинками. С помощью компоненты можно измерять размер изображений, поворачивать их, наносить водяные знаки, конвертировать из одного формата в другой. Будет очень полезна для интернет-магазинов и всех, кому постоянно требуется работать с различными графическими форматами. Выполнена по технологии NativeAPI. Работает с форматами: jpg (jpeg), png, bmp, gif, tif

3600 руб.

02.09.2010    77555    72    257    

191

Разработка внешних компонент Программист Платформа 1С v8.3 1C:Бухгалтерия 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 Платные (руб)

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

3000 руб.

12.05.2020    28758    138    100    

91

Разработка внешних компонент Системный администратор Программист Стажер Бесплатно (free)

Библиотека для работы с базами SQLite из 1С на основе внешней компоненты. Для Linux и Windows, бесплатно и с открытым исходным кодом!

14.01.2025    2232    bayselonarrend    14    

46

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

В статье описывается приложение-конструктор внешних компонент (native API). Конструктор упрощает процесс разработки за счет удобного добавления всех нужных функций и процедур в графическом режиме, с указанием их параметров и типов параметров. На выходе приложение генерирует готовый код на С++ и Rust и позволяет сразу приступить к реализации, без настройки API компоненты вручную.

04.12.2024    4883    kovalevdmv    26    

75
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Ivon 676 03.02.12 19:58 Сейчас в теме
Хорошая статья, вот только если бы кто подобную для С# написал...
9. cool.vlad4 2 04.02.12 22:07 Сейчас в теме
(1) см. (4). Раздел COM. И поищи в интернете и на rsdn(на codeproject). Тема достаточно хорошо освещена. На ИС тоже попадались статьи.
12. fishca 1259 06.02.12 12:02 Сейчас в теме
13. 1cinfo1 7 06.02.12 13:41 Сейчас в теме
(12)
Спасибо за ссылку.
Автору тоже респект, инструкция в картинках никогда не помешает, особенно для первого знакомства.
22. Kuzja_R 175 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 584 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 64 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 1259 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 1402 26.02.12 14:00 Сейчас в теме
Сделайте кто-нибудь аналогичный пример создания ВК по технологии Native API
Oleg_nsk; vpaull; +2 Ответить
37. ImHunter 330 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 1259 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 202 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 206 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_ 244 29.05.18 17:15 Сейчас в теме
А кто-нибудь сталкивался с проблемой как на картинках? Что-то с кодировкой...
Как победить?

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

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