Компоненты com что это за программа

Программирование для интернета с использованием COM

Для понимания различий между серверным приложением и приложением библиотеки в службах компонентов необходимо знать некоторые термины и механизмы архитектуры Windows. Процессом называется исполняемая программа, которая выполняется в данный момент. Операционная система Windows предоставляет процессорное время для каждого порожденного процесса.

Нитью называется работа, выполняемая внутри процесса. Процесс может поддерживать одновременно несколько нитей. Если нити в процессе отсутствуют, то процесс считается выполненным, и Windows не выделяет ему процессорное время.

Чем больше процессов выполняется, тем больше ресурсов используется компьютером для обеспечения их работы. Запуск процесса изначально требует значительного количества ресурсов сервера. Остановка одного процесса не влияет на другие процессы, если последние не нуждаются в нем. Остановка процессов является лояльным действием, не представляющим риск для стабильности системы, поэтому распределение большего количества работы между процессами требует большего объема системных ресурсов, но обеспечивает более высокий уровень надежности.

(УРОК-1) Введение. Что такое компоненты?

Стремясь к сокращению системных ресурсов, связанных с запуском и работой процессов, программисты разрабатывают программное обеспечение для загрузки в память под существующим процессом вместо создания нового процесса. Сравнение веб-приложений Common Gateway Interface (CGI) и веб-приложений ASP показывает различие, о котором идет речь. Если на веб-странице, требующей работы приложения CGI, наблюдается 10 посещений в минуту, то независимо от сложности этой работы серверу придется запускать исполняемый файл CGI 10 раз в минуту, т.е. 600 раз в час.

Если страница ASP выполняет те же задачи, что и исполняемый файл CGI, то через один и тот же интервал времени запускаются нулевые процессы. На самом деле запускается лишь один процесс, и это происходит при старте сервера; этот процесс – IIS. Расширение ISAPI ASP.DLL работает в пространстве процесса IIS.

Раньше службы IIS останавливались без видимых причин после продолжительного периода времени. Подобные ошибки возникали из-за повреждения процесса IIS и его дестабилизации исключением, утечкой памяти или невыпущенными указателями. Причиной этому была загрузка библиотеки DLL с дефектами в пространство процесса IIS. Эта унаследованная особенность (или ошибка) в архитектуре Windows привела к тому, что IIS воспринимается как ненадежная система в сравнении с другими, менее сложными системами, использующими CGI.

Для повышения надежности без потерь производительности (что возможно при работе программного обеспечения в собственном независимом процессе) был разработан сервер Microsoft Transaction Server ( MTS ) для Windows NT 4. MTS превратился в службы приложений (или COM+) на платформе Windows 2000. На каждой новой платформе у служб компонентов появлялись новые возможности.

Основным достоинством служб является то, что они выступают в роли сервера DLL. Библиотеку DLL объекта COM можно загрузить в приложение COM+, и она будет выполняться в своем собственном процессе или в процессе программы-потребителя. Приложение сервера COM+ выполняется в собственном процессе, а приложение библиотеки – в процессе программы-потребителя.

КАК ОПРЕДЕЛИТЬ ЛЮБОЙ SMD КОМПОНЕНТ

Если используемые библиотеки DLL надежны и не требуют частого изменения и обновления, то их следует размещать в приложении библиотеки, так как среднестатистическое программное решение использует меньше ресурсов сервера и функционирует с большей производительностью. Если библиотеки DLL созданы недавно, ненадежны или требуют частого обновления, то их следует располагать в приложении сервера. Это исключит сбои в обычной программе при возникновении ошибки в компоненте, и для обновления не потребуется полная остановка этой программы.

Добавление нового компонента в приложение COM+ в службы компонентов

Цель создания приложения COM+ – дать возможность службам компонентов обслуживать экземпляры классов в ConfigSeat.dll . Следующим шагом по установке ConfigSeat.dll на несущем сервере является добавление ConfigSeat.dll в только что созданное приложение COM+ New ConfigSeatWeb .

  1. В консоли управления Component Services (Службы компонентов) щелкните правой кнопкой мыши на папке Component (Компонент) под пунктом приложения COM+ New ConfigSeatWeb и выберите команду NewComponent (СоздатьКомпонент) (см. рис. 1.15).

Источник: intuit.ru

Регистрация com-компоненты 1С:Предприятие 8.3

Чтобы установить внешнее соединение с информационной базой 1С:Предприятие 8.3 применяют COMConnector. Это позволяет выполнять любое количество подключений. Пользователям, обладающим 64-разрядной платформы 1С:Предприятие 8.3, для осуществления корректной работы режима ComConnector необходимо создать дополнительное COM-соединение. Чтобы это сделать потребуется выполнить определенную последовательность действий.

Как создать оболочку COM+ для 1С (Платформа 1С x64)

1) Регистрация компонента comcntr.dll.

2) Желательно выполнить остановку сервера.

3) Далее необходимо перейти в раздел Панель управления — Все элементы панели управления — Администрирование.

4) После чего открыть Службы компонентов, как показано на примере ниже.

4) Теперь необходимо кликнуть правой кнопкой мыши по Приложения COM+ и из выпадающего списка выбрать пункт Создать — Приложение.

5) В результате запустится Мастер установки приложения COM+, установку необходимо выполнить согласно следующей инструкции:

  • во втором окне из двух предложенных вариантов выбрать Создать новое положение;
  • имя нового положения нужно указать V82_COMConnector;
  • Способ активации: Серверное приложение;
Читайте также:
Simple mahjong что это за программа и нужна ли она Windows 10

  • на шаге выбора учетной записи для запуска приложения выбираем вариант Указанный пользователь, после чего вводим данные для авторизации;

  • добавляем роли приложения.

6) Теперь нам необходимо открыть V82_COMConnector, далее правой кнопкой мыши кликаем по Компоненты и из выпадающего списка выбираем Создать — Компонент.

7) Запускаем Мастер установки компонентов COM+, на шаге Импорт или установка компонента выбираем вариант Установка новых компонентов, после чего указываем путь к файлу к comcntr.dll.

8) В окне Службы компонентов правой кнопкой мыши кликаем по V82_COMConnector и выбираем Свойства. В открывшемся окне Свойств нам нужно снять флажок в пункте Принудительная проверка доступа для приложения, после чего сохраняем настройки, нажав кнопку ОК.

Готово, остается только перезагрузить сервер 1С. Важно, при смене логина или пароля учетной записи, необходимо перенастроить созданное ранее подключение. Далее мы расскажем о наиболее часто встречающейся проблеме и способах её решения при настройке подключения к 1С через ComConnector.

Ошибка «Нам не удалось найти 1С на вашем ПК»

Некоторые пользователи могут столкнуться с сообщением об ошибке «Нам не удалось найти 1С на вашем ПК». Существует несколько возможных причин появления данного сообщения.

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

Возможная причина 2: При установке программы 1С по компьютер не произошла автоматическая установка файла comcntr.dll

Решение проблемы: необходимо выполнить регистрацию файл comcntr.dll из каталога 1С в реестре операционной системы Windows.

  • при наличии установленных двух и более версий программы 1С, необходимо выполнить отмету регистрации неактуальных версий, только после этого можно выполнять регистрацию файл comcntr.dll;
  • при наличии установленной 1С в обеих папках Program Files, нужно выполнить отмену регистрации dll-файлов для обеих папок, после чего нужно зарегистрируйте файл актуальной версии.

Как зарегистрировать файл comcntr.dll из каталога 1С в реестре ОС Windows

1.1 Находим ярлык программы 1С на рабочем столе компьютера и кликаем правой кнопкой мыши, далее из выпадающего списка выбираем пункт Свойства.

1.2 В открывшемся окне Свойства: 1С Предприятие переходим во вкладку Ярлык, где нам необходимо скопировать текст из строки Объект до третьего символа «». Для версии 1С 8.3 это «1cv8», для версии 8.2 — «1cv82».

2.1 Далее вставляем адрес каталога 1С: Предприятие в проводник Windows, после чего жмем Enter на клавиатуре.
2.2 После нужно выбрать актуальную версию платформы для регистрации объекта или с предыдущей версией платформы для отмены регистрации объекта.
2.3 Следующим шагом открываем папку bin и находим в ней файл comcntr.dll.

2.4 После того, как требуемый файл найден, кликаем по нему правой кнопкой мыши и из выпадающего списка выбираем пункт Свойства.
2.5 Переходим во вкладку Безопасность, где нам нужно целиком скопировать значение из строки Имя объекта.

3.1 ​Запустите командную строку:

  • Чтобы запустить командную строку в ОС Windows 7 нужно открыть Пуск и ввести cmd в строку поиска. После чего нажать правой кнопкой мыши на cmd.exe и выбрать Запуск от имени администратора.
  • Для запуска командной строки в ОС Windows 10 нажимаем сочетание клавиш Win+X на клавиатуре, далее выбираем Командная строка (администратор).

Пример:

regsvr32 /u «C:/Program Files (x86)/1cv82/8.2.16.368/bin/comcntr.dll»

3.4 Далее жмем Enter. Повторяем команду отмены регистрации regsvr32 /u для всех неактуальных версий платформы 1С. Для актуальной версии регистрацию проведите один раз.

Готово, в результате мы выполнили успешную регистрацию файла comcntr.dll в системе.

Возможная причина 3: при использовании 64-разрядной версию платформы 1С: Предприятие не было создано дополнительное COM-соединение.
Решение проблемы: решение этой проблемы заключается в создании дополнительного COM-соединение, в результате режим ComConnector будет работать в корректном режиме.

Если предложенные решения не помогли, обратитесь к специалистам компании МэйнСервис.

Источник: mnsrv.ru

Разъяснение Внешних Компонент 1С

Более пятилетки назад, еще в 2015 году я написал свою внешнюю компоненту на Visual Basic 6. По сути, это была простая обертка для доступа к функция DLL. Потом написал еще одну обертку уже для другой DLL, от другого оборудования. На этом моё писательство внешних компонент и ограничилось.

И вот в 2020 году существенно изменилось SDK оборудования, для которого было написано SDK. А Visual Basic прекратил свое существование. На нем еще можно писать внешние компоненты, но уже только под 32 разряда. Пришлось искать новые средства для разработки, поддерживающие 64-разрядные платформы.

И на этом пути пришлось потратить более 6 часов для выбора инструмента и его настройки.

Отличие ВК, COM и Native

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

Объясню по простому. Есть COM-объекты, например когда вы пишете Новый COMобъект(«Excel.Application»), создается COM-объект со своими свойствами и методами. Это хорошо знакомые любому 1С-нику сущности. Здесь «Excel.Application» — название COM-класса. Такие COM-объекты можно использовать в любом приложении, не только в 1С.

ВК, написанная по технологии COM, тоже имеет название COM-класса. Если написать Новый COMобъект(«AddIn.MyVK»), то тоже будет создан COM-объект, но получить через него доступ к методам внешней компоненты нельзя. Методы ВК описываются в специальном формате и становятся доступны только после подключения по функции ПодключитьВнешнююКомпоненту( «AddIn.MyVK»), которая возвращает уже НеизвестныйОбъект, а не COMОбъект.

Читайте также:
Что за программа где фотки поют

ВК по технологии COM соблюдают свой стандарт еще со времен 1C 7.7, поэтому работают одинаково хорошо в 1С 7.7 и 1С 8. Разумеется, такую компоненту нельзя будет использовать за пределами 1С, потому что этот стандарт COM разработан и применяется только в 1С.

В 1С 8 применили новую технологию написания ВК — Native. Она позволяет обойтись без COM-обвязки, 1С разбирает DLL Native компоненты, определяет свойства и методы и подключает ее к использованию. Здесь уже не используется имя класса, ВК подключается из DLL.

Native компоненты тоже можно использовать только в 1С.

Использование ВК на сервере

В моей практике нужно было организовать доступ для обслуживания оборудования через ВК по расписанию. Для этого планировалось использовать регламентные задания на сервере 1С.

Но из-за особенностей реализации на сервере 1С могут использоваться только Native-компоненты. Поэтому COM-компонента не запускалась на сервере.

Выход был найден в том, что по расписанию запускалось приложение 1С, а из него уже — необходимая обработка обслуживания. В приложении компонента прекрасно подключалась.

От ВК назад к COM

Но вот что удивительно, на сервере 1С можно использовать обычные COM-объекты.

Поэтому если для компоненты важно, чтобы она работала на сервере, можно добавить в COM-компоненту обычные методы COM-объекта, важные на сервере. Ну или целиком отказаться от технологии ВК-компонент и реализовать COM-Объект.

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

Но в моем случае мне нужно было написать простую обертку, которая вызывала бы функции из DLL. Когда я разрабатывал COM-ВК, я не знал, что можно просто написать COM-объект и я получил бы тот же результат.

32 и 64 разряда

В принципе, можно было бы написать компоненту и на Visual Basic, но он не умеет генерировать 64-разрядные компоненты. А учитывая, что у 1С появилось 64-разрядное клиентское приложение, которое уже довольно широко используется, пришлось бы только ради ВК, написанной по 32-разрядной технологии, использовать 32-разрядную версию клиента 1С. Это неудобно, поэтому, как бы хорош не был VB, от него нужно отказаться.

Отказываться надо и по другой причине. VB больше не сопровождается, поэтому начинать на нем новые проекты просто не имеет смысла. Нужно идти «в ногу со временем».

Net или C++

Реальность такова, что Visual Basic был вытеснен C# (Си Шарп). А этот язык требует для выполнения своих приложений платформу Net.

Поэтому ВК, разработанные на C# (и вообще под Net), даже для требуют требуют regasm. Кроме того, там возникает чехарда с версиями Net, рекомендуется делать сборки под стабильные версии Net.

Для разработки простой обертки над DLL Net избыточна и излишня. С другой стороны, разработка на C# проще, чем на C++, но, увы, Net будет мешать прозрачности решения.

Однако важно понимать, что на C++ намного более сложно программировать, чем на C#, особенно для 1С-ника, который привык к Basic-подобному языку. Сопровождать вашу компоненту будет проще, если она будет написана на C#, да и Net сейчас распространена во всей экосистеме Windows.

На чем разрабатывать ВК в 2020

Под Windows из вменяемых средств разработку можно вести только в Visual Studio. Для индивидуальных разработчиков (не компаний) этот инструмент бесплатный.

Удивительно, но на ИТС в разделе «Технология внешних компонент» 1С в своих примерах разработки ВК на Visual Studio выкладывает только проект Native-ВК и то под довольно древний релиз Visual Studio, поэтому просто так его не запустить.

Хотя сам по себе Visual Studio довольно сложный инструмент, чтобы им пользоваться, начинающему нужно потратить несколько часов на его предварительную настройку.

Первоначально у меня получилось скомпилировать пример COM-ВК на C# отсюда. Но потом я решил, что для моих целей Net — излишня.

Тогда я использовал статью по разработке COM-объекта с нуля на Visual Studio 10. К сожалению, в новых версиях VS отключен мастер по добавлению свойств и методов в COM-объект, но удалось их добавить вручную:

Статья написана по результатам обсуждения на Мисте. Поиск адекватного решения для задачи написания ВК в 2020 году длился более недели. Но в итоге инструмент был найден и первая тестовая ВК с одним методом написана.

Прикладываю файл с тестовой ВК из одного метода:

Компоненту AnvizCCHEX.dll надо зарегистрировать стандартно через regsvr32.exe и потом можно проверить ее работоспособность кодом на 1С:

тест = новый COMОбъект ( «AnvizCCHEX.Device» );
рез = тест . Test ();
Сообщить ( рез ); //Должно быть выведено 1

Заключение

Для меня разработка внешней компоненты для 1С в 2020 году стало настоящим испытанием, вызову моему упорству.

Хорошо, что у меня был заказ от клиента, для себя я может быть и сдался бы. А так мне просто необходимо было найти решение.

Для меня этот проект стал еще одним подтверждением моей способности добиваться результата в сложных условиях. А тажке немного прокачал терпение к людям, потому что программисты, которые сталкивались с ВК, немного снисходительно относились в консультациях к новичку в теме. И мне было немного обидно, что со мной, опытным программистом 1С, общаются как с зеленым юнцом. Но я поборол эти психологические проблемы, потому что по сути да, в технологиях ВК я «мало пороху нюхал».

Читайте также:
Microsoft asp net core что это за программа и нужна ли она

Хочу также выразить признательность Serginio1 за поддержку и консультации на Мисте, иногда даже непрошенные, но всегда полезные.

Теперь осталось завершить проект. О результатах сообщу.

Источник: geniy1s.ru

Регистрация компоненты comcntr.dll (для COM соединения с базой 1С)

Если фоновый процесс COM-соединения завершается с ошибкой:

: Ошибка при вызове конструктора (COMОбъект): -2147221005(0x800401F3): Invalid class string

Нужно зарегистрировать библиотеку ComConnector comcntr.dll из каталога программы.

. Перед этим нужно отключить службу агента сервера 1С:Предприятия и все программы, использующие эту DLL .

В 32-битной версии сервера проблема решилась бы командой: regsvr32 «C:Program Files (x86)1cv88.3.5.1119bincomcntr.dll»

но в 64-битной версии команда будет примерно такой * : C:WindowsSysWOW64regsvr32 «C:Program Files (x86)1cv88.3.5.1119bincomcntr.dll»

При удачном выполнении Вы увидите:

Если команда регистрации не помогла, то нужно предварительно удалить регистрацию библиотеки comcntr.dll, запустив ту же команду вызова regsvr32 с ключом /u

Если и это не помогло, попробуйте переустановить платформу 1С в режиме Исправить и отметьте COM соединение

Разместил: all4cf Версии: | 8.2 УП | 8.3 | Дата: 05.09.2016 Прочитано: 279932

Возможно, вас также заинтересует

Похожие FAQ

Cклонения по падежам 6
НаКлиенте Процедура Команда1(Команда) ФИО = » Иванов Иван Иванович» ; Падеж = 2; Пол = 1; Результат = СклонениеФИО(ФИО, Падеж, пол); Сообщить(Результат); КонецПроцедуры НаСервере Функция СклонениеФИО(ФИО, Падеж, пол) Результат = » » ; v7plus.dll — отсутствует CLSID либо отсутствует интерфейс llnitDone 0
При выгрузке отчетности в 1С 7.7 программа ругается на v7plus.dll и указывает, что отсутствует интерфейс llritDone. Что делать? 1) Поудалять нафиг все v7plus.dll из каталогов ИБ и папок пользователей 2) Оставить только в bin каталоге и зарегить чер V82.COMConnector.1: Не найдена лицензия COM-соединением 1
При подключении из одной базы к другой через COM внезапно стала появляться следующая ошибка: «V82.COMConnector.1: Не найдена лицензия COM-соединением», хотя никаких изменений на серверах не делалось. Релиз платформы был 8.2.13. Обновил до 14-го – не База 1С при запуске уходит в дамп и вылетает 1
В последнее время частенько обращаются пользователи у которых после замены или ремонта компьютера 1С не запускается, а точнее при открытии уходит в dump и вылетает. Как правило, решение одно: Отключить аппаратное ускорение видеокарты В Window Внутренняя ошибка компоненты DBENG8 0
Ошибка СУБД: Внутренняя ошибка компоненты dbeng8 по причине: Внутренняя ошибка компоненты dbeng8 Решение: 1: Тестирование исправление базы 2: Проверка базы используя chdbfl.exe 3: Обновить версию Платформы 4: Обновить dbeng8.dll в bin Посмотреть все результаты поиска похожих

Источник: helpf.pro

Windows admin blog

Полезные команды cmd, powershell, администрирование, фичи и решения проблем на win/winserver

Ручное создание COM+ соединения 1С | Установка COM+ компонента 1С

Сначала зарегистрируем библиотеку comcntr.dll. Для этого запускаем cmd от имени администратора и выполним поочередно следующие команды:

cd C:Program Files (x86)1cv88.3.13.1690bin
regsvr32 comcntr.dll

Вместо «8.3.13.1690» — нужно подставить требуемую версию платформы

Или можно обойтись одной строкой команды:

regsvr32 «C:Program Files (x86)1cv88.3.13.1690bincomcntr.dll»

Далее опишу полный процесс создания COM+ соединения

1. Запускаем оснастку «Службы компонентов» из папки Администрирование.

Пуск — Панель управления — Система и безопасность — Администрирование — Службы компонентов

win+R -> control userpasswords -> Службы компонентов

2. Раскрываем ветку «Службы компонентов» — компьютер — Приложения COM+

3. Откроется окно мастера установки приложений COM+. Ждем «Далее»

4. Выбираем «Создать новое приложение»

5. Вбиваем имя приложения. В моем примере — «v83COMConnector». Отмечаем чекбокс «Серверное приложение»

6. В следующем окне указывается учетная запись, от имени которой будет запускаться компонент. В моем примере я выбираю чекбокс «Текущий (вошедший в систему) пользователь

7. В следующем окне просто жмем «Далее»

8. На следующем шаге можно добавить пользователей, либо группу пользователей, которым необходимо предоставить права на запуск COM+ приложения (локальные/доменные — не важно)

9. Закрываем мастер кнопкой «Готово»

10. Теперь необходимо создать компонент. Возвращаемся к оснастке «Службы компонентов», раскрываем созданное COM+ приложение, встаем на ветку «Компоненты»

11. Откроется окно «Мастера установки компонентов COM+». Жмем «Далее»

12. В следующем окне выбираем «Установка новых компонентов»

13. Теперь с помощью открывшегося окна проводника выберите ранее зарегистрированную библиотеку comcntr.dll, которая лежит в папке установленной 1С, в каталоге bin. В моем случае

C:Program Files (x86)1cv88.3.13.1690bincomcntr.dll

«Enter» или кнопка «Открыть»

14. В следующем окне просто жмите «Далее»

15. Закрываем окно мастера кнопкой «Готово»

16. Раскройте ветку «Компоненты». Здесь вы должны увидеть созданный на предыдущем шаге компонент. Выделите его, нажмите ПКМ — Свойства

17. На вкладке «Безопасность» нужно отметить галочкой CreateOwner и нажать «ОК»

Компонента COM+ создана. COM+ приложение настроено!

Обновление версии компонента

Иногда необходимо зарегистрировать иную версию библиотеки comcntr.dll.

Для того, чтобы посмотреть текущую зарегистрированную версию, необходимо войти в свойства компонена V83.COMConnector (см п.16) данного руководства

На вкладке «Общие» будет прописан путь. В моем случае это версия 8.3.13.1690

Зарегистрировать другую версию библиотеки можно при помощи уже рассмотренной команды regsvr32

regsvr32 «C:Program Files (x86)1cv88.3.14.1565bincomcntr.dll»

Права на запуск COM+

Если в п.8 вы забыли указать пользователей или группы, кому необходимы права для запуска COM+ приложения, то добавить нужных пользователей можно так:

  • Панель управления — Система и безопасность — Администрирование — Службы компонентов
  • Раскрываем ветку: Приложения COM+ — v83COMConnector — Роли — CreateOwner
  • ПКМ на разделе «Пользователи», «Создать — Пользователь»
  • В открывшемся окне выбираем локального или доменного пользователя, либо группу

Источник: winrcmd.wordpress.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru