Интеграция c Mobile SMARTS через компоненту доступа
Mobile SMARTS 3.0: Работа с компонентой
Справочник по объектам Mobile SMARTS и компоненте доступа для платформы
Для организации обмена данными между учетной системой пользователя и Mobile SMARTS платформы версии 3.0 применяются две специальные COM-компоненты (одна универсальная, вторая предназначена специально для работы с «1С:Предприятием»). Установка и регистрация компонент выполняется автоматически при установке Mobile SMARTS из дистрибутива.
Компонента Cleverence.Warehouse.StorageConnector (и другие объекты Mobile SMARTS) могут использоваться при разработке решений на платформе .NET Framework.
В этом случае нет необходимости регистрировать COM-объекты и создавать экземпляр компонеты как COM-объект. Вместо этого следует добавить в ссылки проекта в вашей среде разработки библиотеки Cleverence.MobileSMARTS.ComConnector.dll, Cleverence.Infrastructure.dll, Cleverence.DataCollection.dll, Cleverence.Common.dll (библиотеки находятся в <папка установки Mobile SMARTS>\\Connectivity, по умолчанию _C:\Program Files (x86)\Cleverence Soft\Mobile SMARTS\Connectivity)`. В вашем коде объекты Mobile SMARTS создаются с помощью конструкторов по умолчанию (например, new Cleverence.Warehouse.StorageConnector()).
AddIn.Cl.TerminalConnector (файл компоненты Cleverence.Warehouse.TerminalConnector.dll) предназначена специально для работы с «1С:Предприятием» и может быть подключена в 1С как внешняя компонента. Отличие от Cleverence.Warehouse.StorageConnector состоит в том, что функции AddIn.Cl.TerminalConnector «понимают» и принимают объекты 1С (массивы, списки значений, таблицы значений и др.). Благодаря этому написание кода 1С для обмена существенно облегчается.
Файлы, необходимые для работы компонент, находятся после установки по умолчанию в папке C:\Program Files(x86)\Cleverence Soft\Mobile SMARTS\Connectivity.
В этой же папке находится файл « Зарегистрировать COM.bat», запустив который (с правами Администратора) можно зарегистр ировать компоненты. Это может потребоваться, если автоматическая регистрация при установке из дистрибутива не выполнилась по каким‑то причинам или регистрация стала недействительной (например, из‑за повреждения реестра Windows).
После установки компоненты становится возможным создание и операции с объектами компоненты непосредственно в процедурах учетной системы.
Операция создания объектов, описанных в COM, специфична для каждой системы:
Псевдокод:
var connector = new Cleverence.Warehouse.StorageConnector();
C# (подключив Cleverence.MobileSMARTS.ComConnector.dll в References):
var connector = new Cleverence.Warehouse.StorageConnector();
«1С:Предприятие 7»:
connector = СоздатьОбъект("Cleverence.Warehouse.StorageConnector");
«1С:Предприятие 8»:
connector = новый COMОбъект("Cleverence.Warehouse.StorageConnector");
Microsoft Dynamics AX (Axapta):
var connector = new COM("Cleverence.Warehouse.StorageConnector");
Если при попытке создания COM-объекта в Вашей учетной системе возникает ошибка, запустите (с правами Администратора) файл «Зарегистрировать COM.bat». Если регистрация выполнилась успешно, Вы увидите надпись в окне командной строки: «Типы зарегистрированы успешно». Если и после этого создание компоненты происходит с ошибкой, проверьте есть ли у кода, выполняющегося в учетной системе права на работу с COM-объектами.
Ниже указаны наиболее важные средства взаимодействия с сервером Mobile SMARTS и классы бизнес‑сущностей системы.
Обмен с базой данных и инфраструктура
| Класс | Описание |
| StorageConnector [Соединение] | Класс, объекты которого служат для доступа к базе данных Mobile SMARTS. После создания объекта требуется установить соединение с базой данных Mobile SMARTS с помощью функции SelectCurrentApp [УстановитьПодключениеСБазойСМАРТС] после чего будет возможен обмен данными (справочниками, документами). |
| AppInstance [БазаСМАРТС] | Объект, содержащий описание базы данных Mobile SMARTS. База данных представляет собой хранилище конфигурации Mobile SMARTS ( Environment [Среда]), текущих данных (справочников, документов, списка пользователей), а также настроек. Данные базы хранятся в папке базы на диске компьютера. Каждая база данных является экземпляром некоторого приложения Mobile SMARTS ( App [ПриложениеСМАРТС]). Данный объект содержит описание базы данных (идентификатор, наименование, способ подключения), позволяет получить доступ к пользовательским настройкам, но не содержит данные базы (конфигурацию, справочники, документы). Для доступа к данным базы используется StorageConnector [Соединение]. |
| App [ПриложениеСМАРТС] | Объект приложения Mobile SMARTS. Содержит описание некоторого приложения (идентификатор, наименование и др.). Приложение представляет собой определенное прикладное решение. Примеры приложений: «Магазин 15», «Учет имущества», «Пустая конфигурация Mobile SMARTS» (используется для разработки с нуля своего решения). |
Главные бизнес‑сущности
| Класс | Описание |
| Product [Товар] | Позиция номенклатуры (товар). |
| Packing [Упаковка] | Упаковка товара. Каждый товар должен содержать как минимум одну упаковку. |
| Document [Документ] | Документ. Основная единица взаимодействия между учетной системой и пользователем. Содержит описание задания, назначенного к выполнению, и сам результат выполнения задания. |
| DocumentItem [СтрокаДокумента] | Строка в документе, заявленная или фактическая. Содержит информацию о товаре, его количестве и дополнительных полях (сроки годности, серийные номера, дополнительные характеристики и т.п.) |
Работа с приложением и базой
Приложение Mobile SMARTS (см. App [ПриложениеСМАРТС]) представляет собой некоторое прикладное решение на платформе Mobile SMARTS («Магазин 15», «Учет имущества», и т.д.).
Каждое приложение устанавливается из отдельного дистрибутива (если при этом платформа Mobile SMARTS на компьютере не установлена, сначала будет предложено загрузить и установить платформу).
После установки приложения появляется возможность создавать базы данных на основе шаблона установленного приложения. См. подробнее.
База данных Mobile SMARTS (см. AppInstance [БазаСМАРТС]) — это экземпляр определенного приложения. База данных хранит конфигурацию Mobile SMARTS и текущие данные (справочники, документы, настройки). База данных находится в определенной папке на диске компьютера. В зависимости от того, какой способ обмена данными с терминалами требуется, база данных может работать в следующих режимах: обмен с сервером Mobile SMARTS, прямое подключение терминала к компьютеру через провод, обмен через папку на диске (Режим RDP — общая папка, терминал подключается физически к другому компьютеру, обмен непосредственно с терминалом выполняет специальная утилита, установленная на компьютере, к которому подключается терминал).
После установки Mobile SMARTS пользователь имеет возможность работать с базами данных (добавлять базы в список зарегистрированных баз, удалять, изменять настройки) с помощью менеджера баз. Обмен данными возможен только с базами, зарегистрированными в списке баз на данном компьютере.
Удаленная база. Существует возможность добавить в список (зарегистрировать) не только базу, находящуюся на данном компьютере, но и работающую на сервере Mobile SMARTS, расположенном на другом компьютере в сети. В менеджере баз такая база будет находится в разделе Удаленное подключение:
На локальном компьютере удаленная база также, как и локальная, будет находится в заданной при добавлении базы папке, но в этой папке будут содержаться только настройки соединения с удаленным сервером Mobile SMARTS и пользовательские настройки, все данные (справочники, документы) при обмене будут загружаться (и выгружаться) с удаленного сервера. Сервер Mobile SMARTS представляет собой web-сервис, при обмене данными компонента вызывает функции web-сервиса, данные передаются по протоколу http. Организовывать общий доступ к папке базы на удаленном компьютере не нужно.
Объектам, служащим описанием удаленной базы, является также AppInstance [БазаСМАРТС] и для доступа к данным используется StorageConnector [Соединение]. При использовании функций обмена нет никакой разницы, удаленная база или локальная.
Создание и настройка новой базы данных
Для созданной базы данных п ользователь указывает нужный режим работы (прямое подключение к устройству, прямая работа с папкой (RDP режим), подключение к серверу). См. Настройка базы данных Mobile SMARTS.
Подключение к базе данных из учетной системы
Для того, чтобы была возможность производить обмен данными с базой Mobile SMARTS, необходимо сначала выполнить подключение к базе. Нам потребуется создать экземпляр COM-объекта Cleverence.Warehouse.StorageConnector и вызвать функцию SelectCurrentApp
[УстановитьПодключениеСБазойСМАРТС], передав в качестве аргумента Идентификатор (Код) базы или Строку подключения к базе.
Идентификатор и код в менеджере баз:
C#:
var connector = new Cleverence.Warehouse.StorageConnector(); // Создаем экземпляр объекта try
{
// Выполняем подключение
connector.SelectCurrentApp("михаил-пк:10501/d7c15f54-fd05-4811-8f6d-c7c7003887c5");
}
catch
{
// При подключении возникла ошибка, обрабатываем исключение
}
«1С:Предприятие 8»:
connector = новый COMОбъект("Cleverence.Warehouse.StorageConnector"); // Создаем экземпляр объекта Попытка
connector.УстановитьПодключениеСБазойСМАРТС("михаил-пк:10501/d7c15f54-fd05-4811-8f6d-c7c7003887c5");
//Выполняем подключение Исключение
// При подключении возникла ошибка, обрабатываем исключение КонецПопытки;
Получение списка баз, зарегистрированных на ПК
Получить список баз может быть нужно, например, для того, чтобы дать пользователю учетной системы возможность выбирать базу, с которой будет выполняться обмен, из списка баз и хранить это как настройку в учетной системе, вместо того, чтобы жестко прописывать в коде строку подключения.
Воспользуемся для этого функцией GetAppsList [ПолучитьСписокБаз]. Перед вызовом этой функции выполнять подключение к какой‑либо базе не нужно. Функция возвращает как локальные, так и удаленные базы, зарегистрированные на данном компьютере.
C#:
var connector = new Cleverence.Warehouse.StorageConnector(); // Создаем экземпляр объекта
try
{
var appInstanceList = connector.GetAppsList(""); //Получаем список баз - объект AppInstanceCollection for(int i=0; i<appInstanceList.Count; i++) // Обходим в цикле полученный список
{
var appInstance = appInstanceList[i]; //Получаем элемент списка - объект AppInstance var id = appInstance.Id; //Идентификатор базы
var connectionString = appInstance.ConnectionString; //Строка подключения var name = appInstance.Name; //Имя базы
// Обрабатываем полученнные значения
}
}
catch
{
// Обработка исключения
}
«1С:Предприятие 8»:
connector = новый COMОбъект("Cleverence.Warehouse.StorageConnector"); // Создаем экземпляр объекта Попытка
СписокБаз = connector.ПолучитьСписокБаз(“”); //Получаем список баз - объект AppInstanceCollection Для Инд=0 По СписокБаз.Количество - 1 Цикл // Обходим в цикле полученный список
БазаСмартса = СписокБаз.Item(Инд); //Получаем элемент списка - объект AppInstance Ид = БазаСмартса.Ид; //Идентификатор базы
СтрокаПодключения = БазаСмартса.СтрокаПодключения; //Строка подключения Имя = БазаСмартса.Имя; //Имя базы
… // Обрабатываем полученнные значения КонецЦикла;
Исключение
// Обработка исключения КонецПопытки;
Получение и сохранение произвольных настроек
Есть возможность сохранять произвольные настройки в базе данных Mobile SMARTS из учетной системы. Например, это могут быть какие‑либо настройки, используемые при выгрузке номенклатуры, параметры отборов документов и др. Настройки сохраняются в виде «Ключ‑Значение», Ключ — строка, задающее имя настройки, Значение — данные простого типа (строка, число, булево). Для работы с настройками необходимо получить объект базы AppInstance [БазаСМАРТС] и использовать функции
GetSettings [ПолучитьНастройки] и SaveSettings [СохранитьНастройки]. Объектом настроек является
AppInstanceSettings [НастройкиБазыСМАРТС].
C#:
var connector = new Cleverence.Warehouse.StorageConnector(); // Создаем экземпляр объекта try
{
// Получаем базу по строке подключения или идентификатору
var appInstance = connector.GetAppById("михаил-пк:10501/d7c15f54-fd05-4811-8f6d-c7c7003887c5");
var appInstanceSettings = appInstance.GetSettings(); //Получаем объект настроек AppInstanceSettings var settingNode = appInstanceSettings.GetSetting("ИмяНастройки"); //Получаем узел настройки по имени
var value = settingNode.Value; //Значение настройки settingNode.Value = newValue; // Присваиваем новое значение настройке
appInstance.SaveSettings(appInstanceSettings); // Сохраняем настройки в базу
}
catch
{
// Обработка исключения
}
«1С:Предприятие 8»:
connector = новый COMОбъект("Cleverence.Warehouse.StorageConnector"); // Создаем экземпляр объекта Попытка
БазаСМАРТС = connector.ПолучитьБазуСМАРТСПоИД("михаил-пк:10501/d7c15f54-fd05-4811-8f6d-c7c7003887c5");
//Получаем базу по строке подключения или идентификатору
НастройкиБазы = БазаСМАРТС.ПолучитьНастройки(); //Получаем объект настроек AppInstanceSettings УзелНастройки = НастройкиБазы.Настройка("ИмяНастройки"); //Получаем узел настройки по имени
ЗначениеНастройки = УзелНастройки.Значение; //Значение настройки УзелНастройки.Значение = НовоеЗначение; // Присваиваем новое значение настройке
БазаСМАРТС.СохранитьНастройки(НастройкиБазы); // Сохраняем настройки в базу Исключение
// Обработка исключения КонецПопытки;
Получение режима работы базы
Рассмотрим, как получить, в каком режиме работает база данных (Прямое подключение к устройству, Прямая работа с папкой (RDP режим)) или Подключение к серверу, см. Настройка базы данных Mobile SMARTS. Нам нужно будет получить объект базы AppInstance [БазаСМАРТС], получить настройки базы с помощью функции GetSettings [ПолучитьНастройки] и использовать следующие свойства объекта настроек AppInstanceSettings [НастройкиБазыСМАРТС]:
| Свойство | Тип | Описание |
| ServerMode [РаботаССервером] | Булево | Режим работы с сервером. Истина — база работает в режиме с сервером, Ложь — без сервера. |
| LocalServerMode [РаботаСЛокальнымСервером] | Булево | Возвращает признак, работает ли серверная база на локальном компьютере. Истина — серверная база на локальном компьютере, Ложь — удаленная серверная база или база не серверная (прямой обмен с ТСД или с папкой). |
| RemoteServerMode | Булево | Возвращает признак того, что база работает на |
| [РаботаСУдаленнымСервером] | удаленном сервере. Истина — серверная база на удаленном компьютере, Ложь — локальная серверная база или база не серверная (прямой обмен с ТСД или с папкой). | |
| FolderMode [РаботаСКаталогом] | Булево | Возвращает признак того, что база работает в режиме «с каталогом». Истина — база работает работает в режиме «с каталогом». Режим RDP — обмен данными через общую папку, терминал подключается физически к другому компьютеру, обмен непосредственно с терминалом выполняет специальная утилита, установленная на компьютере, к которому подключается терминал. |
| DeviceMode [РаботаСУстройствомНапрямую] | Булево | Возвращает признак того, что база работает в режиме напрямую с терминалом (батч‑режим). Истина — база работает в режиме напрямую с терминалом (батч‑режим). Обмен с терминалом происходит через проводное подключение. |
C#:
var connector = new Cleverence.Warehouse.StorageConnector(); // Создаем экземпляр объекта соединения
try
{
// Получаем базу по строке подключения или идентификатору
var appInstance = connector.GetAppById("михаил-пк:10501/d7c15f54-fd05-4811-8f6d-c7c7003887c5");
var appInstanceSettings = appInstance.GetSettings(); //Получаем объект настроек AppInstanceSettings if(appInstanceSettings.ServerMode == true)
{
//Работа с сервером if(appInstanceSettings.LocalServerMode == true)
{
// Локальный сервер
}
else
{
// Удаленный сервер
}
}
else if(appInstanceSettings.FolderMode == true)
{
// Работа с папкой
}
else if(appInstanceSettings.DeviceMode == true)
{
// Работа с ТСД напрямую
}
}
catch
{
// Обработка исключения
}
«1С:Предприятие 8»:
connector = новый COMОбъект("Cleverence.Warehouse.StorageConnector"); // Создаем эк земпляр объекта
//соединения Попытка
БазаСМАРТС = connector.ПолучитьБазуСМАРТСПоИД("михаил-пк:10501/d7c15f54-fd05-4811-8f6d-c7c7003887c5");
//Получаем базу по строке подключения или идентификатору
НастройкиБазы = БазаСМАРТС.ПолучитьНастройки(); //Получаем объект настроек AppInstanceSettings Если НастройкиБазы.РаботаССервером = Истина Тогда //Работа с сервером
Если НастройкиБазы.РаботаСЛокальнымСервером = Истина Тогда // Локальный сервер
...
Иначе // Удаленный сервер
...
КонецЕсли;
ИначеЕсли НастройкиБазы.РаботаСКаталогом = Истина Тогда //Работа с папкой
…
ИначеЕсли НастройкиБазы.РаботаСУстройствомНапрямую = Истина Тогда //Работа с ТСД напрямую
...
КонецЕсли;
Исключение
// Обработка исключения КонецПопытки;
Выгрузка номенклатуры через СОМ‑компоненту
Выгрузк а справочника номенклатуры является в большинстве случаев первоочередной задачей при интеграции Mobile SMARTS с внешней учетной системой.
Выгрузка необходима, чтобы иметь возможность на терминале идентифицировать товар (находить по сканированному штрихкоду, выбирать из списка, находить по наименованию). Если просто сканировать штрихкоды без идентификации товара, то у оператора не будет возможности прямо на месте узнать: известен ли этот штрихкод учетной системе? верно ли заведена карточка товара? верная ли цена?
Сидя у компьютера будет очень трудно понять, к чему относятся ошибки загрузки результатов в учетную систему. Ошибки надо выдавать прямо на ТСД еще во время сканирования. Иначе на большом экране ПК будет список ошибок и будет написано «неизвестный штрихкод 1234567890». А как понять, что это был за товар в торговом зале? Мы целые пол часа ходили сканировали собирали штрихкоды.
Кроме того, в каждой строке выгружаемых на терминал документов‑заданий должен быть указан идентификатор товара и упаковки, которые обязаны соответствовать и дентификаторам позиций выгруженного в базу Mobile SMARTS справочника номенклатуры.
В каждой учетной системе справочник номенклатуры имеет свою структуру. В общем случае из учетной системы может выгружаться не обязательно «номенклатура», это могут быть «основные средства», «инвентарные позиции», «детали» и т.п. Любой большой список позиций, для которых требуется идентификация и быстрый поиск с занесением в строку документа. Перед написанием кода для выгрузки номенклатуры из учетной системы в Mobile SMARTS необходимо решить, как отобразится структура данных из учетной системы на объекты Mobile SMARTS.
Для «1С:Предприятия» выгрузку номенклатуры лучше всего проводить через методы TerminalConnector, которые не только принимают таблицы значений, но и поддерживают самые последние стандарты 1С для драйверов торгового оборудования.
Для остальных систем необходимо работать с ComConnector и объектами номенклатуры, которые в нем представлены.
Объектом, представляющим товар в Mobile SMARTS является Product [Товар], каждый товар содержит коллекцию упаковок Packing [Упаковка](у товара должна быть хотя бы одна упаковка). У товара должна быть установлена базовая упаковка при помощи свойства BasePackingId [ИдБазовойУпаковки]. Базовая упаковка должна содержатся в коллекции упаковок Packings [Упаковки]. Базовая упаковка обычно имеет коэффициент (количество единиц UnitsQuantity [КоличествоБазовыхЕдиниц]) равный 1. Для остальных упаковок (например, коробки, палеты) UnitsQuantity [КоличествоБазовыхЕдиниц] определяет, сколько базовых упаковок содержится в данной (например, в коробке 10 шт, в палете 500 шт).
Если товар весовой и упаковок в действительности нет, при выгрузке в Mobile SMARTS должна быть создана одна упаковка (например, Килограммы (кг)) и она же назначена базовой.
Если различать упаковки товара нет необходимости (в учетной системе есть только сущность «Товар»), также нужно создать одну упаковку (например, «шт») и назначить ее базовой.
В учетной системе могут быть различные сущно сти, связанные с товаром отношением «один ко многим» и идентифицируемые по штрихкоду, но не являющиеся упаковками. Например, серии и характеристики товара. Эти сущности в Mobile SMARTS также могут быть отражены как упаковки товара. (Примечание: можно использовать и дополнительные таблицы, которые определяются разработчиком конфигурации Mobile SMARTS, и связь с номенклатурой через ключ связи (Идентификатор товара), но при использовании упаковок уже будут работать все готовые механизмы по выбору номенклатуры, быстрому поиску по штрихкоду, записи в документ).
Объекты Product [Товар] и Packing [Упаковка] содержат как основные свойства, такие как Id [Ид], Name [Имя], Barcode [Штрихкод], Marking [Артикул], которые есть всегда в объектах данного типа, так и дополнительные, определяемые разработчиком конкретной конфигурации Mobile SMARTS. См. ниже Дополнительные поля.