Статья успешно отправлена на почту

Пример запроса к базе MSSQL с помощью коннектора из Mobile SMARTS

Применимо к продуктам: Mobile SMARTS платформа
Последние изменения: 2024-03-26

Выделите текст или фото, с замеченной ошибкой > нажмите карандаш для редактирования

Заметили ошибку в тексте?
Напишите нам, мы исправим!

Кроме хранимых процедур, которые должны возвращать xml, можно использовать маппинг таблиц базы SQL на объекты Mobile SMARTS.


Скачать пример базы Mobile SMARTS с настроенным маппингом и базы SQL

Для работы с базой SQL Server в конфигурацию Mobile SMARTS нужно добавить коннектор к SQL Server и настроить подключение к базе.


Для получения данных из базы можно использовать действие «Вызов внешней системы». Также есть возможность с помощью коннектора обрабатывать события сервера Mobile SMARTS. Для получения номенклатуры онлайн по запросу с терминала используется событие «Получить товар».

После этого создайте в базе SQL хранимую процедуру:

CREATE PROCEDURE [dbo].[GetProduct] ( @productId varchar(50), @packingId varchar(50), @userId varchar(50), @mode int, @resultXml xml OUTPUT ) AS BEGIN ... END

В обработчике события «Получить товар» укажите SqlServerConnector:serverEvent_GetProduct (SqlServerConnector — ID коннектора, serverEvent_ — указание на обработчик серверного события). Процедура должна возвращать через параметр @resultXml xml-файл особого вида, который представляет собой сериализованные объекты Mobile SMARTS. В случае режима 1 (поиск по ШК или другим атрибутам товара) это объекты Cleverence.Warehouse.PackedProduct (если найден один товар) или Cleverence.Warehouse.PackedProductCollection (несколько объектов), подробнее здесь. В процедуре нужно создать соответствующие COM-объекты, получить xml с помощью вызова ToXml объекта StorageConnector, можно также самим сформировать нужный xml, пример:

IF @mode = 1 BEGIN SET @resultXml = '<?xml version="1.0" encoding="windows-1251"?> <PackedProduct expiredDate="0001-01-01T00:00:00" quantity="1" registrationDate="0001-01-01T00:00:00"><Fields /> <Product barcode="" basePackingId="шт" id="cbcf492a-55bc-11d9-848a-00112f43529a" marking="Х-1234" name="BOSCH"> <Packings><Packing barcode="888999" id="шт" marking="" Int32_qty="0" Int32_price="27960" currency="RUB"></Packing></Packings> </Product> <Packing barcode="888999" id="шт" marking="" Int32_qty="0" Int32_price="27960" currency="RUB"></Packing> <Quantities /> </PackedProduct>' END

При попадании завершенного документа с ТСД на сервер Mobile SMARTS вызывается событие «ДокументЗавершен» — с помощью обработчика этого события можно загрузить документ в базу SQL. Есть два варианта обработчика для SQL

1. SqlServerConnector:serverEvent_DocumentCompleted) 2. SqlServerConnector:serverEvent_DocumentCompletedXml
CREATE PROCEDURE [dbo].[DocumentCompleted]
( @documentId varchar(50), @resultXml xml OUTPUT ) AS BEGIN /*
CREATE PROCEDURE [dbo].[DocumentCompletedXml]
(
@documentXml xml,
@result int OUTPUT
)
AS
BEGIN
SET @result = 1;
END

Нужно создать COM-объект Cleverence.Warehouse.StorageConnector, выполнить подключение к базе Mobile SMARTS c помощью SelectCurrentApp (<строка подключения к базе Mobile SMARTS или ID базы>),
загрузить с сервера документ при помощи GetDocument (@documentId), обработать документ и, если загрузка выполнилась успешно, удалить с сервера документ при помощи RemoveDocument (@documentId).

 */ SET @resultXml = ''; END

documentXml содержит xml документа Mobile SMARTS, который можно разобрать внутри процедуры.

Если через result возвращается 1, коннектор удалит документ с сервера.


Для получения списка документов для работы на терминале и выгрузке из базы SQL используются события «ПолучитьСписокДокументов» и «ПолучитьДокумент».

Примеры процедур:

CREATE PROCEDURE [dbo].[GetDocumentsList] ( @userId varchar(50), @documentTypeName varchar(50), @resultXml xml OUTPUT ) AS BEGIN SET @resultXml = '<?xml version="1.0" encoding="windows-1251"?> <DocumentDescriptionCollection xmlns:clr="http://schemas.cleverence.ru/clr"> <DocumentDescription barcode="123" createDate="0001-01-01T00:00:00" distributeByBarcode="True" documentTypeName="Инвентаризация" id="123" name="Инвентаризация 123" warehouseId="1"><Fields /> </DocumentDescription> </DocumentDescriptionCollection>'; END

 CREATE PROCEDURE [dbo].[GetDocument] ( @userId varchar(50), @documentTypeName varchar(50), @documentId varchar(50), @mode int, @resultXml xml OUTPUT ) AS BEGIN SET @resultXml = '<?xml version="1.0" encoding="windows-1251"?> <Document xmlns:clr="http://schemas.cleverence.ru/clr" barcode="00003" createDate="2014-03-06T16:53:33" deviceId="" deviceIP="" deviceName="" documentTypeName="Инвентаризация" id="123" name="Инвентаризация товаров на складе РТЦУТД00003 от 26.06.2008 11:22:45" appointment="оператор" userId="оператор" userName="оператор" warehouseId="1"> <DeclaredItems> <DocumentItem declaredQuantity="8" expiredDate="0001-01-01T00:00:00" packingId="пара" productId="dee6e1d0-55bc-11d9-848a-00112f43529a" registeredDate="0001-01-01T00:00:00"><Fields capacity="4"><FieldValue fieldName="price"><Value clr:Type="Int32">1424</Value></FieldValue></Fields></DocumentItem> <DocumentItem declaredQuantity="20" expiredDate="0001-01-01T00:00:00" packingId="3" productId="dee6e1d0-55bc-11d9-848a-00112f43529a" registeredDate="0001-01-01T00:00:00"><Fields capacity="4"><FieldValue fieldName="descr"><Value clr:Type="String">6, 39, Зеленый</Value></FieldValue><FieldValue fieldName="price"><Value clr:Type="Int32">1424</Value></FieldValue></Fields></DocumentItem> <DocumentItem declaredQuantity="9" expiredDate="0001-01-01T00:00:00" packingId="пара" productId="dee6e1d3-55bc-11d9-848a-00112f43529a" registeredDate="0001-01-01T00:00:00"><Fields capacity="4"><FieldValue fieldName="price"><Value clr:Type="Int32">1780</Value></FieldValue></Fields></DocumentItem> <DocumentItem declaredQuantity="20" expiredDate="0001-01-01T00:00:00" packingId="3" productId="dee6e1d3-55bc-11d9-848a-00112f43529a" registeredDate="0001-01-01T00:00:00"><Fields capacity="4"><FieldValue fieldName="descr"><Value clr:Type="String">6, 39, Белый</Value></FieldValue><FieldValue fieldName="price"><Value clr:Type="Int32">1780</Value></FieldValue></Fields></DocumentItem> </DeclaredItems><CurrentItems capacity="0" /> <ClassificatorIds capacity="0" /> <Classificators capacity="0" /> <ClassificatorUsings capacity="0" /><Errors capacity="0" /> <Fields capacity="4"><FieldValue fieldName="КонтрольКолва"><Value clr:Type="Int32">0</Value></FieldValue><FieldValue fieldName="ПоЯчейкам"><Value clr:Type="Int32">0</Value></FieldValue> </Fields> <Tables capacity="0" /> </Document>' END

Также не обязательно формировать xml вручную, можно использовать COM-объекты Mobile SMARTS.

Была ли статья полезна?
Спасибо за ваш отзыв!
Отзыв
Заполните, пожалуйста, данную форму, что конкретно вы не нашли, оставьте свои комментарии о работе сайта / полезности / сложности с навигацией
0/500