1С не подключается внешняя компонента

Общее описание

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

К таким задачам можно отнести:

  • подключение торгового оборудования, например, сканера штрихкодов или принтера этикеток;
  • обработку большого объема данных, например, код обработки больших текстов во внешней компоненте отработает в разы быстрее аналогичного кода на встроенном языке, и другие.

Внешние компоненты в системе "1С:Предприятие" используются как для сервера (Windows и Linux, 32 или 64 бит), так и для клиента ("тонкий" и веб-клиент).

Порядок создания и подключения внешней компоненты

Создание внешней компоненты

Создание внешней компоненты выполняется в программе Microsoft Visual Studio. В качестве примера рассмотрим создание компоненты, которая вырезает часть изображения для распознавания.
Скачать шаблон внешней компоненты (шаблон разработан для сервера Windows, 32 бит).

Самый простой способ создания компоненты — это заменить нижеперечисленные функции в готовом шаблоне внешней компоненты:

  1. Присвоить классу C1CGetImageFragment новое имя, например MyAddIn .
  2. Также пеименовать файлы, например 1CGetImageFragment.h на MyAddIn.h и 1CGetImageFragment.cpp на MyAddIn.cpp .
  3. В файле MyAddIn.h в перечислении enum Methods указать свои имена перечисления (помимо eVersion). Копировать в буфер обмена
  4. В массивах строк g_MethodNames и g_MethodNamesRu указать названия своих функций на английском и русском языках. Рекомендуется оставить функцию Версия , в дальнейшем она пригодится для поддержки работы компоненты.
  5. В строковом литерале g_kClassNames указать свое имя класса, например MyAddIn .
  6. В функции GetNParams указать число аргументов для своих методов.
  7. При необходимости в функции GetParamDefValue указать аргументы по умолчанию для своих методов.
  8. В функции HasRetVal указать, возвращает ли ваша функция значение. Например: Копировать в буфер обмена
  9. В функции CallAsFunc добавить код одной или нескольких новых функций.

После замены функций необходимо выполнить следующие шаги:

Читайте также:  Mikrotik run after reset

Шаг 1. Скомпилировать компоненту в Release-варианте и получить файл в виде dll-библиотеки, например MyAddIn.dll . Этот файл необходимо разместить рядом с файлом Manifest.xml .

Шаг 2. В файл Manifest.xml необходимо внести следующие изменения:

  • вписать название компоненты в поле path=" MyAddIn.dll" ;
  • при необходимости изменить разрядность в поле arch="i386" , значение по умолчанию — 32 бит;
  • указать операционную систему в поле os="Windows" .

Шаг 3. Файлы MyAddIn.dll и Manifest.xml поместить в zip-архив с произвольным именем, например MyAddIn.zip .

Подключение внешней компоненты

Подключение внешней компоненты выполняется в конфигураторе и состоит из следующих шагов:

Шаг 1. Добавить общий макет с типом ДвоичныеДанные и назвать его, например МойМакет . Далее загрузить в макет файлы из подготовленного архива с внешней компонентой с помощью команды карточки макета Загрузить из файла — MyAddIn.zip .

Шаг 2. Если компонента еще не установлена (метод ПодключитьВнешнююКомпоненту возвращает Ложь ),нужно приступить к установке. Для этого предусмотрен вызов:

После установки компоненты не обходимо перейти к ее подключению.

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

Текст МойМакетAddIn — произвольный. Единственное условие — он должен совпадать в приведенных выше вызовах.
Строка AddInNativeExtension — уже указана в шаблоне компоненты ( RegisterExtensionAs ), ее не надо менять.
Переменную МояКомпонен та рекомендуется описать в мод уле управляемого и обычного приложения как Перем МояКомпонента Экспорт .

Шаг 4. Вызов кода внешней компоненты.

Скачать пример внешней компоненты в архиве 1CGetImageFragment.zip . Компонента вырезает часть изображения с заданными координатами и размером и предназначена только для работы в 32-разрядном Windows, в тонком клиенте.

Порядок тестирования и отладки

При написании внешней компоненты как правило возникает необходимость отладки. Самый простой способ отладки – это логирование в текстовый файл.
Более продвинутый способ – отладка в программе Microsoft Visual Studio. Для отладки в Microsoft Visual Studio необходимо:

  1. Создать компоненту в Debug-варианте, например MyAddIn.pdb .
  2. Расположить pdb-файл в каталог установки внешних компонент вида C:UsersИмя пользователяAppDataRoaming1C1Cv82ExtCompT ;
  3. В режиме конфигуратора запустить "тонкий" клиент "1С:Предприятия"( 1cv8c.exe );
  4. Поставить в конфигураторе точку останова перед вызовом МояКомпонента.МояФункция и дождаться ее срабатывания.
  5. В Microsoft Visual Studio подключиться отладчиком к 1cv8c.exe .
  6. В Microsoft Visual Studio создать точку останова.
  7. В "1С:Предприятии" выполнить вызов МояКомпонента.МояФункция , при этом в Microsoft Visual Studio должна сработать точка останова.
  8. В Microsoft Visual Studio отладить работу компоненты.
Читайте также:  Crysis где взять атомную пушку

Важно: при перекомпиляции внешней компоненты, нужно не только заново подготовить zip-файл ( dll компоненты + manifest.xml ) и загрузить его в общий макет, но и стереть закешированную компоненту dll в каталоге вида C:UsersИмя пользователяAppDataRoaming1C1Cv82ExtCompT .

Варианты работы компоненты

При разработке внешней компоненты необходимо решить, в каких вариантах она будет работать: Windows/Linux, 32/64 бита, сервер/тонкий клиент/веб-клиент (разные браузеры).

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

Чтобы компонента работала на клиенте, необходимо решить, будет ли она предназначена только для вашей организации или будет использоваться как тиражируемое решение. Для разработки тиражируемого решения необходимо предусмотреть четыре варианта работы – Windows 32бит, Linux 32бит, Linux 64бит, сборки для разных веб-браузеров. Подробнее .

По заданию руководства интегрировал софтофон в базу на основе известной CH-Com1S. Сервер Windows 2012 (64). На тонком клиенте (32) в RDP работает прекрасно, но появилось задание перенести на компьютер пользователя(Windows XP 32). Для этого настроили IIS и опубликовали базу. Подцепили не из браузера, а по тонкому клиенту. База запускается и все работает кроме софтофона. Вот кусок кода:

т.е. компонента устанавливается и подключается, но оъект не создается. Эта проблема только на компьютере пользователя. Если подключиться по RDP к серверу и адрес базы указать как localhost, то все работает.

Почему так? Как иправить? Где копать? Я думаю, что это где-то в настройках IIS, но не знаю где.

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

Читайте также:  Формат даты в договоре

1. Что такое внешняя компонента. Подключение компоненты 1С

Ни для кого не секрет, что 1С является очень динамичной платформой для работы с основными технологиями, к которым мы можем получить доступ из конфигурации. Явным примером этого является Ole, COM, web сервисы, обмен данными через xml и т.д. Имея навыки программирования можно легко настроить подключение и/или обмен данными с любой cms системой в сети интернет либо той, которая имеет api функционал. Но иногда появляется необходимость в расширении функционала, которого мы не можем добиться, используя язык 1С. В этом плане на помощь нам приходят внешние компоненты. Говоря простым языком, внешние компоненты — это в 1С стандартные библиотеки с наборами функций, скомпилированные (собранные) для работы с внешней программой. Для работы с внешними компонентами нам в первую очередь нужно их подключить, это можно делать либо динамически (подключить в конкретном куске кода для выполнения некоторого функционала, нужно лишь в этот момент), либо зарегистрировать ее в системе.

Наиболее оптимально хранить компоненты как макеты в конфигурации. Это дает возможность не зависеть от конкретного «железа», а также программного обеспечения. Для такого хранения нам подойдет макет с типом «Двоичные данные»:

2. Установка компонент 1С. Подключение внешней компоненты.

Хранение компоненты мы организовали. Далее нам надо рассмотреть, как подключить компоненту. Если внешняя компонента используется впервые, перед подключением ее нужно установить. Пример установки и подключения компоненты приведен ниже:

Для вызова функций нашей компоненты нам нужно ее использовать как переменную. Пример вызова функции:

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

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

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

Оцените статью
Добавить комментарий