Интеграция Mobile SMARTS со сторонними системами через коннекторы
Внешние соединения (коннекторы) предназначены для вызова функций внешних систем по запросу с ТСД, с их помощью также может выполняться обработка событий сервера. При помощи коннекторов можно решить целый ряд весьма полезных задач, таких как:
- получение реальных остатков по сканированной номенклатуре;
- уточнение цен онлайн;
- отправка набранных заказов с проверкой наличия и других условий;
- подбор в ячейках, перемещение палет и коробок с немедленной фиксацией изменений в учетной системе и др.
Для каждой учетной системы коннектор разрабатывается отдельно и особенности его работы зависят от реализации.
Вызов внешних систем с терминала сбора данных (ТСД) происходит не напрямую, а через посредника (сервера Mobile SMARTS).
Данные для отправки во внешнюю систему формируются в клиенте Mobile SMARTS на ТСД, а затем передаются серверу Mobile SMARTS с указанием, какой коннектор использовать и какую задачу решать.
В случае обработки событий сервера, данные для указанного обработчика события формирует сервер.
Принцип работы коннекторов
Обращение к внешней системе с передачей и получением каких‑то полезных данных происходит следующим образом:
- В клиенте Mobile SMARTS на ТСД действие «Вызов метода внешней системы» формирует аргументы для вызова внешней системы, упаковывает их в объект Cleverence.Warehouse.InvokeArgs и отправляет на сервер Mobile SMARTS вместе с именем коннектора, именем класса и именем метода;
- Сервер Mobile SMARTS ищет коннектор с требуемым именем в списке зарегистрированных и передает ему аргументы вместе с именем класса и метода для вызова;
- Коннектор осуществляет вызов указанного метода внешней системы и получает результат;
- Результат возвращается серверу Mobile SMARTS, упаковывается в объект Cleverence.Warehouse.InvokeResult и отправляется на ТСД;
- В клиенте Mobile SMARTS на ТСД действие «Вызов метода внешней системы» кладет полученный результат в текущую сессию под именем, которое задано у него в свойстве «Переменная сессии для результата»;
- Теперь любое другое действие в программе на ТСД может получить доступ к результату вызова для вывода его на экран или выполнения расчетов.
Список стандартных коннекторов
В состав дистрибутива Mobile SMARTS входят следующие стандартные коннекторы для сервера Mobile SMARTS:
| Название | Необходимые файлы | Описание |
| 1С Предприятие версия 7.7 | Для панели управления: не требуется Для сервера: Cleverence.Connectivity.OneC.dll | Позволяет производить вызов функции из глобального модуля конфигурации 1С Предприятие 7.7 по имени и возвращать результат её выполнения. |
| 1С Предприятие версия 8 | Для панели управления: не требуется Для сервера: Cleverence.Connectivity.OneC.dll | Позволяет производить вызов функции из модуля указанной обработки 1С (из состава конфигурации 1С или внешней) по имени и возвращать результат её выполнения. Обеспечивает работу как через внешнее COM-соединение 1С, так и через Web-сервис 1С. Поддерживаются платформы 1С 8.1, 8.2, 8.3. |
| АРМ ЕГАИС — Серверный коннектор | Для панели управления: Cleverence.Connectivity.ArmEgais.Panel.dll Для сервера: Cleverence.Connectivity.ArmEgais.dll | Коннектор для обмена документами с системой АРМ ЕГАИС. Предназначен для обработки событий сервера Mobile SMARTS (получение документов он‑лайн, отправка документов). |
| Axapta5Connector (Axapta 2009) | Для панели управления: не требуется Для сервера: Cleverence.Connectivity.Axapta5.dll | Позволяет вызывать статические методы классов Axapta и возвращать результат выполнения. Работа выполняется через .NET Axapta Business Connector |
| Microsoft SQL Server | Для панели управления: не требуется Для сервера: Cleverence.Connectivity.SqlServer.dll | Позволяет выполнять SQL-запросы к базе данных, а также вызывать хранимые процедуры, возвращает результаты запросов, хранимых процедур. |
Регистрация и запуск коннекторов
Для того, чтобы начать использовать коннектор, необходимо сначала его зарегистрировать (добавить), а затем запустить. Эти операции выполняются в панели управления Mobile SMARTS и находятся внутри узла «Внешние соединения и расширения».
Регистрация коннектора
Добавление в конфигурацию нового коннектора выполняется с помощью щелчка правой кнопкой мыши на узле «Внешние соединения», в контекстном меню нужно выбрать «Добавить внешнее соединение…», в списке выбрать нуж ный модуль и нажать ОК:
Настройка параметров коннектора выполняется через боковую панель свойств:
После добавления коннектора и настройки параметров нужно сохранить конфигурацию.
Если узел коннектора в дереве конфигурации отображается в виде серой стрелки, то это означает, что вызовы через коннектор запрещены (отключены):
Для того, чтобы разрешить вызовы, нажмите правой кнопкой мыши на узле дерева, выберите в контекстном меню «Разрешить». Модуль должен перейти в разрешенное состояние (зеленая стрелка):
Для работы модуля под управлением сервера Mobile SMARTS и настройки параметров модуля через панель управления используются две версии библиотеки (файлы dll). Первая dll, предназначенная для сервера, размещается в <Папка базы Mobile SMARTS>\Server\DataService\bin\. Вторая dll, для панели управле ния — в <Папка базы Mobile SMARTS>\Control panel\Addins. Некоторые стандартные модули, входящие в дистрибутив платформы Mobile SMARTS, не требуют дополнительных файлов dll.
Если библиотека модуля для панели управления загружена, а для сервера библиотека отсутствует (или не была загружена в процесс сервера Mobile SMARTS), то при сохранении конфигурации Mobile SMARTS после добавления модуля в панели управления данные о добавленном модуле не запишутся в файлы конфигурации. При попытке разрешить вызовы через коннектор будет происходить ошибка.
Если загрузить конфигурацию с сервера (используя кнопку «Обновить» в панели управления), отображаются данные о том, что добавленного модуля нет:
Для устранения ошибки необходимо переместить серверную версию dll модуля в <Папка базы Mobile SMARTS>\Server\DataService\bin\, перезапустить сервер базы данных Mobile SMARTS и заново добавить модуль через панель управления.
Запуск коннектора
После регистрации коннектора следует проверить, выполняется ли подключение. Для этого следует разрешить доступ к коннектору («Разрешить»), и затем запустить его («Пуск»).
В ряде случаев случаев попытка запуска завершится неудачей, т.к. у сервера Mobile SMARTS не будет хватать пользовательских прав на подключение к внешней системе. Основные причины таких проблем и способы их решения описаны в статье «Диагностика и исправление проблем» на сайте «Клеверенс».
Если в «Службах компонентов» есть установленные вручную COM+ приложения, это может помешать запуску COM-коннектора. В таком случае потребуется удалить COM+ приложения, после чего заново зарегистрирова ть и запустить COM-коннектор.
![]()
Описание свойств коннекторов
Коннектор «1С: Предприятие версии 8»
| Свойство | Заполняется автоматически | Принимаемые значения | Расшифровка |
| Максимальное количество одновременных вызовов | 5 | Произвольное число | Максимальное количество одновременных асинхронных вызовов 0 — нет ограничений |
| При тайм‑ауте | Вызывать исключение | Вызывать исключение/ Переподключаться | Поведение при истечении тайм‑аута Вызывать исключение— выполнение вызова останавливается и возвращается ошибка Переподключаться — отключить от системы и повторить вызов |
| Тайм‑аут (в мс) | 90000 | Произвольное число | При истечении указанного времени вызов будет прерван и выполнится действие, указанное в пункте «При тайм‑ауте» 0 — тайм‑аут не используется, вызов будет выполняться до тех пор, пока вызываемая система не вернет результат или ошибку |
| Формат обмена данными | Auto | Auto/ Json/ Xml | В каком формате сериализованные данные передаются/возвращаются из «1С:Предприятие» в коннектор. Xml содержит сериализованные объекты Mobile SMARTS При работе через Web-коннектор используется Json, при работе через COM-соединение может использоваться как Xml, так и Json. Auto — формат определяется автоматически |
| Автоматический сброс зависших соединений | Нет | Да/ Нет | Только для COM-соединения. Если включено, происх одит попытка завершения сеансов COM-соединения, которые долгое время неактивны (используется подключения к агенту сервера «1С:Предприятия») |
| Версия 1С | 8.3 | 8.1/ 8.2/ 8.3 | Только для COM-соединения. Версия COM-объекта для подключения к базе «1С:Предприятие» |
| Вести лог статистики вызовов | Нет | Да/ Нет | Если включено, данные о вызовах будут записываться в базу sqlite по пути <папка базы Mobile SMARTS>\Logs\StatCon<Дата>.sqlite |
| Время жизни неиспользуемого соединения | 30 | Произвольное число | Только для COM-соединения. Время в секундах, в течение которого неиспользуемое COM-соединение будет оставаться в пуле соединений. Если указать <= 0, по умолчанию используется 60. |
| Домен | - | Произвольное имя | Используется только для Web-подключения при Windows-авторизации. Имя домена. |
| Имя администратора кластера | - | Произвольное имя | Только для COM-соединения. Необходимо для подключения к агенту сервера «1С:Предприятия», если включен автоматический сброс зависших соединений. |
| Количество постоянных соединений | Произвольное число | Только для COM-соединения. Максимальное количество постоянных соединений в пуле. | |
| Количество резервных соединений | 0 | Произвольное число | Только для COM-соединения. Количество резервных соединений в пуле. |
| Максимальное число клиентов, ожидающее вызов 1С | 48 | Произвольное число | Только для COM-соединения. Максимальное число клиентов, ожидающее вызов 1С. Если значение превышено, вызов завершается с ошибкой. |
| Обработка драйвера | + | Произвольная строка | Только для COM-соединения. Имя обработки в конфигурации 1С или путь к внешней обработке. Функции вызываются из модуля обработки, и должны быть объявлены как экспортные. |
| Пароль | - | Произвольная строка | Пароль пользователя 1С |
| Пароль администратора кластера | - | Произвольная строка | Только для COM-соединения. Необходимо для подключения к агенту сервера «1С:Предприятия», если включен автоматический сброс зависших соединений. |
| Пользователь 1С | - | Произвольная строка | Имя пользователя 1С |
| Тип авторизации | Default | Default/ Win | Только для Web-подключения Default— базовая http-авторизация Win— используется Windows-авторизация |
| Тип подключения | Менеджер COM-соединений | Менеджер COM-соединений/ Automation сервер/ Менеджер на каждое COM-соединение/ Web-connector | Менеджер на каждое COM-соединение — для подключения используется COM-объект v8x.ComConnector Automation сервер— для подключения используется COM-объект v8x.Application, Web-connector— используется http-подключение к базе 1С, опубликованной на web-сервере |
Конн ектор «1С: Предприятие версии 7.7»
| Свойство | Заполняется автоматически | Принимаемые значения | Расшифровка |
| Максимальное количество одновременных вызовов | 0 | Произвольное число | Максимальное количество одновременных асинхронных вызовов 0 — нет ограничений |
| При тайм‑ауте | Вызывать исключение | Вызывать исключение/ Переподключаться | Поведение при истечении тайм‑аута Вызывать исключение— выполнение вызова останавливается и возвращается ошибка Переподключаться — отключить от системы и повторить вызов |
| Тайм‑аут | 0 | Произвольное число | При истечении указанного времени вызов будет прерван и выполнится действие, указанное в пункте «При тайм‑ауте» 0 — тайм‑аут не используется, вызов будет выполняться до тех пор, пока вызываемая система не вернет результат или ошибку |
| Объект соединения | V77.Application | V77.Application/ V1CEnterprise.Application/ V77S_Application/V77M_Application/ V77L_Application | COM-объект 1С, используемый для подключения к базе 1С: V1CEnterprise.Application — версия независимый ключ V77.Application — версия зависимый ключ V77S.Application — версия зависимый ключ, SQL версия V77L.Application — версия зависимый ключ, локальная версия V77M.Application — версия зависимый ключ, сетевая версия |
| Пароль | - | Произвольная строка | Пароль пользователя 1С |
| Пользователь | - | Произвольная строка | Имя пользователя 1С |
| Путь | - | Произвольная строка | Путь к папке с базой данных 1С |
Axapta5Connector
| Свойство | Заполняется автоматически | Принимаемые значения | Расшифровка |
| Company | - | Произвольная строка | Наименование компании (параметр подключения через Axapta Business Connector) |
| ConfigurationName | - | Произвольная строка | Наименование конфигурации (параметр подключения через Axapta Business Connector) |
| Domain | - | Произвольная строка | Домен, в котором зарегистрирован пользователь (параметр подключения через Axapta Business Connector) |
| Language | - | Произвольная строка | Язык (параметр подключения через Axapta Business Connector) |
| ObjectServer | - | Произвольная строка | Сервер Axapta (параметр подключения через Axapta Business Connector) |
| UserName | - | Произвольная строка | Имя пользователя (параметр подключения через Axapta Business Connector) |
| Пароль | - | Произвольная строка | Строка (параметр подключения через Axapta Business Connector) |
| При тайм‑ауте | Вызывать исключение | Вызывать исключение/ Переподключаться | Поведение при истечении тайм‑аута Вызывать исключение — выполнение вызова останавливается и возвращается ошибка Переподключаться— отключить от системы и повторить вызов |
| Тайм‑аут | 0 | Произвольное число (в мс) | При истечении указанного времени вызов будет прерван и выполнится действие, указанное в пункте «При тайм‑ауте» 0 — тайм‑аут не используется. |
Microsoft SQL Server
| Свойство | Заполняется автоматически | Принимаемые значения | Расшифровка |
| DataSource | - | Произвольная строка | Имя или сетевой адрес SQL-сервера |
| InitialCatalog | - | Произвольная строка | Имя базы данных на SQL-сервере |
| IntegratedSecurity | True | True/ False | True— для подключения используется текущая учетная запись Windows False — используется заданные имя пользователя базы SQL и пароль пользователя |
| UserID | - | Произвольная строка | Идентификатор пользователя базы SQL |
| Пароль | - | Произвольная строка | Пароль пользователя базы SQL |
| При тайм‑ауте | - | Вызывать исключение/ Переподключаться | Поведение при истечении тайм‑аута. Вызывать исключение— выполнение вызова останавливается и возвращается ошибка Переподключаться — отключить от системы и повторить вызов |
| Тайм‑аут | - | Произвольное число (в мс) | При истечении указанного времени вызов будет прерван и выполнится действие, указанное в пункте «При тайм‑ауте» |
Отладка вызовов к внешней системе
Когда оператор терминала сбора данных сканирует штрихкод для запроса остатков товара, со стороны внешней системы (учетной системы, товарной базы) кто‑то должен обработать этот запрос и вернуть результат. В случае 1С это будет метод глобального контекста или контекста внешнего соединения, для Axapta это будет публичный статический метод в каком‑то классе, а в случае SQL базы данных это может быть хранимая процедура (хотя можно выполнить и простой запрос).
Для отладки работы кода внешней системы, который должен будет вызываться с ТСД, в панели управления Mobile SMARTS предусмотрено специальное окно, вызываемое из контекстного меню коннектора:
В этом окне можно задать имя вызываемого метода внешней системы, указать передаваемые параметры, вызвать внешнюю систему при помощи коннектора и посмотреть на результат.
Как видно, коннектору перед аются именованные параметры. Метод внешней системы, который будет принимать эти параметры, может получить их в двух вариантах, в зависимости от реализации коннектора. Первый вариант — будет учитываться только порядок передачи параметров, а имена не имеют значения и отбрасываются. Второй вариант — метод принимает единственный строковой аргумент, в котором передается XML с сериализованным объектом Cleverence.Warehosue.InvokeArgs; это выглядит примерно как <?xml version="1.0" encoding="utf-8" ?><InvokeArgs xmlns:clr=" [http://schemas...»](http://schemas...»).
Отладка процедур и функций базы 1С драйвера
Разберем, как подключить отладчик 1С к конфигурации, с которой взаимодействует Mobile SMARTS, чтобы отладить выполнение какой‑нибудь функции, которая вызывается с терминала.
Рассмотрим подключение на основе операции «Просмотр товаров из 1С» из стандартной поставки Wi-Fi ПРОФ драйвера. Разберем, что вызывается и отладим процедуру, которая вызывается.
Для начала найдем соответствующий алгоритм в панели управления и посмотрим, как называется метод, вызываемый из 1С.
Для данной операции метод, который вызывается из 1С называется «ПолучитьНоменклатуруПоГруппам».
Затем посмотрим какая обработка подключена. Для этого нужно посмотреть «Внешние соединения».
В данном примере подключена обработка «ВнешниеВызовыУТ11».
Теперь найдем данную процедуру в модуле обработки.
Открываем модуль объекта, данной обработки, ищем нашу функцию и нажимаем кнопку «Перейти».
Клиент‑файловый вариант работы
В клиент‑файловом варианте необходимо проверить подключена ли отладка. Для этого запускаем режим «Предприятие», заходим в Сервис -> Параметры -> вкладка Системные. Смотрим, проставлен ли флаг «Устанавливать режим разрешения отладки при запуске». Если не проставлено необходимо проставить и сохранить.
В случае, если флаг «Устанавливать режим разрешения отладки при запуске» не сохраняется, необходимо скопировать файл comcntrcfg.xml (предварительно скачать и извлечь из архива comcntrcfg.zip) в папки «c:\Program Files\1cv82\8.х.хх.ххх\bin\conf\», «c:\Program Files\1cv82\conf\».
В файле прописано, что отладка разрешена и по умолчанию включается на локальной машине.
Дальше поставим «точку останова».
Запустим вызов процедуры, выбрав операцию.
![]() | ![]() |
Создалось подключение сервера Mobile SMARTS к базе драйвера и теперь необходимо подключиться к той сессии, которая создалась. Выбираем Отладка -> Подключение.
Производим подключение.
![]() | ![]() |
Вызовем нашу процедуру еще раз.
Система остановилась, на нашей «точке останова».
Далее стандартными методами 1С (зайти в процедуру, шагнуть) можно отладить соответствующую процедуру 1С.
Клиент‑серверный вариант работы
Для клиент‑серверного варианта работы отладку нужно производить на том же компьютере, где запущен «Агент сервера 1С:Предприятия».
Для клиент‑серверного варианта необходимо остановить «Агент сервера 1С:Предприятия».
В реестре (Компьютер\HKEY_LOCAL_MACHINE\SISTEM\CurrentControlSet\services\1C:Enterprise 8.2 Server Agent) найти параметр ImagePath и написать ключик -debug.
Запускаем службу.
Запускаем конфигуратор базы драйвера.
И аналогично, как в клиент‑файловом варианте, ставим «точку останова», вызываем метод 1С из Мobile SMARTS, отлаживаем код в 1С.
В 1С 8.3 появился параметр «Номер порта для т онкого и толстого клиента».
![]()
Для отладки это значение должно находится в пределах портов установленных в параметрах:
![]()
![]()
Разработка собственного коннектора к внешней системе
Коннекторы к внешним системам в платформе Mobile SMARTS позволяют получать данные из внешней системы по запросу с ТСД, а также выполнять обработку событий сервера Mobile SMARTS с помощью вызова функций внешней системы.
В состав дистрибутива Mobile SMARTS входит ряд коннекторов к наиболее распространенным учетным системам и СУБД. Если Вы используете учетную систему или СУБД, для которой не имеется стандартного коннектора, есть возможность разработать свой собственный коннектор.
Требования к разработке
Разработка коннектора выполняется в среде Microsoft Visual Studio на языке C# (можно использовать и другие языки, поддерживаемые платформой .Net Framework). Предполагается, что Вы знакомы с разработкой в среде Microsoft Visual Studio.
Мы рекомендуем использовать Microsoft Visual Studio 2019, скачать бесплатную версию Microsoft Visual Studio Community 2019 можно с сайта Microsoft.
Разработка будет выполняться под .Net Framework 4.6.1, скачать дистрибутив можно здесь. Если установлена более новая версия .Net Framework 4 (4.7 и др.), устанавливать отдельно версию 4.6.1 не требуется.
Последний релиз платформы Mobile SMARTS (MobileSMARTS.msi) можно скачать на странице.
Основы
Подключаемые модули платформы Mobile SMARTS разделяются на внешние соединения (коннекторы) и расширения (плагины). Коннекторы предназначены для вызова функций внешних систем по запросу с ТСД, с их помощью также может выполняться обработка событий сервера. Расширения (плагины) используются для выполнения какой‑либо работы под управлением сервера Mobile SMARTS без обработки вызовов c ТСД и событий сервера (например, плагин может следить за содержимым заданной папки и загружать данные при изменении файлов или делать бэкап по расписанию).
В панели управления все подключаемые модули, добавленные в конфигурацию Mobile SMARTS, находятся внут ри узла «Внешние соединения и расширения», разбитые на подгруппы «Внешние соединения» и «Расширения»:
Добавление в конфигурацию нового модуля выполняется с помощью щелчка правой кнопкой мыши на узле «Внешние соединения» или «Расширения», в контекстном меню нужно выбрать «Добавить внешнее соединение…» (или «Добавить расширение…»), в списке выбрать нужный модуль и нажать ОК:
Настройка параметров модуля выполняется через боковую панель свойств:
После добавления модуля и настройки параметров нужно сохранить конфигурацию.
Объектная модель подключаемых модулей
Рассмотрим объектную модель подключаемых модулей. Базовым интерфейсом для всех подключаемых модулей является IConnectivityBase:
[С#]
/// <summary>
/// Базовый интерфейс для подключаемых модулей
/// </summary>
public interface IConnectivityBase
{
/// <summary>
/// Уникальный идентификатор модуля.
/// </summary>
string Id
{
get;
}
/// <summary>
/// Флаг, указывающий разрешена или нет работа модуля.
/// </summary>
bool Enabled
{
get;
set;
}
/// <summary>
/// Инициализация (запуск) модуля. После вызова этой функции он должен перейти в рабочее состояние
/// </summary>
void Initialize();
/// <summary>
/// Инициализировано соединение или нет.
/// </summary>
bool Initialized
{
get;
}
/// <summary>
/// Функция проверки дополнительных лицензионных ограничений модуля
/// </summary>
param name="supportedSystems">Список внешних модулей, упомянутых в лицензионном файле</param>
void CheckLicenseLimitations(System.Collections.Generic.List<Cleverence.Licensing.LicenseExternalSystem>
supportedSystems);
}
От интерфейса IConnectivityBase наследуется интерфейс соединения с внешней системой IConnecto r и интерфейс расширения (плагина) IPlugin.
[С#]
/// <summary>
/// Интерфейс соединения с внешней системой. Важное отличие - наличие метода Invoke, позволяющего вызывать любые
какие-то методы из внешней системы
/// </summary>
public interface IConnector: IConnectivityBase
{
/// <summary>
/// Тайм-аут при вызове функций внешней системы через коннектор.
/// </summary>
int Timeout
{
get;
set;
}
/// <summary>
/// Поведение при наступлении тайм-аута. ThrowException - вызывать исключение, ReInvoke - завершить попытку вызова,
переинициализировать подключение и сделать снова вызов.
/// </summary>
TimeoutBehavaior TimeoutBehavaior
{
get;
set;
}
/// <summary>
/// Сообщает, что коннектор сам внутри обрабатывает таймауты, и внешняя обработка не требуется
/// </summary>
bool IsSelfTimeoutBehavior { get; }
/// <summary>
/// Для ActiveMQ коннектора добавляет в аргументы DeviceInfo.
/// </summary>
bool IsSupportDeviceInfoInArgs
{
get;
}
/// <summary>
/// Вызов метода внешней системы.
/// </summary>
/// <param name="methodName">Имя метода.</param>
/// <param name="args">Параметры.</param>
/// <returns>Результат (null, если метод ничего не возвращает).</returns>
object InvokeMethod(string methodName, object[] args);
}
/// <summary>
/// Базовый интерфейс плагина.
/// Немного расширяет стандартный IConnectivityBase явным методом остановки модуля.
/// </summary>
public interface IPlugin: IConnectivityBase
{
/// <summary>
/// Деинициализация (остановка) модуля. После вызова этой функции он должен остановить свою работу.
/// </summary>
void Deinitialize();
}



