пример запроса на SQL

Зайчиков Алексей 7 лет назад обновлен Илья Каракчеев 5 лет назад 1

Из всех возможных вариантов взаимодействия с нашей КИС подходит вариант Коннектор с SQL Server. Можно ли увидеть примеры запросов к SQL. К примеру как результаты инвентаризации загружаются в КИС и как справочник ТМЦ загружается из КИС в вашу систему. Кстати имеется ли какой нибудь коннектор позволяющий отсылать запросы через http к web серверу

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

Для получения данных из базы можно использовать действие Вызов внешней системы http://www.cleverence.ru/support/%D0%94%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D0%B8%D0%B5+%C2%AB%D0%92%D1%8B%D0%B7%D0%BE%D0%B2+%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%B0+%D0%B2%D0%BD%D0%B5%D1%88%D0%BD%D0%B5%D0%B9+%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B%C2%BB/

Пример обычного запроса:


Также есть возможность обрабатывать с помощью коннектора события сервера Mobile SMARTS (http://www.cleverence.ru/support/%D0%A1%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%BD%D1%8B%D0%B5+%D1%81%D0%BE%D0%B1%D1%8B%D1%82%D0%B8%D1%8F/).

Для получения номенклатуры он-лайн по запросу с терминала используется событие ТоварНеНайден (http://www.cleverence.ru/support/%D0%A2%D0%BE%D0%B2%D0%B0%D1%80%D0%9D%D0%B5%D0%9D%D0%B0%D0%B9%D0%B4%D0%B5%D0%BD/)

Создайте в базе 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 - ид. коннектора, serverEvent_ - указание на обработчик серверного события). Процедура должна возвращать через параметр @resultXml xml особого вида, который представляет собой сериализованные объекты Mobile SMARTS, в случае режима 1 (поиск по ШК или другим атрибутам товара) - это объекты Cleverence.Warehouse.PackedProduct (если найден один товара) или Cleverence.Warehouse.PackedProductCollection (несколько объектов). См. http://www.cleverence.ru/devlib/TerminalConnector_v3/index.html. В процедуре нужно создать соответствующие 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, первый (SqlServerConnector:serverEvent_DocumentCompleted):

CREATE PROCEDURE [dbo].[DocumentCompleted]
(
@documentId varchar(50),
@resultXml xml OUTPUT
)
AS
BEGIN
/*
Здесь нужно создать COM-объект Cleverence.Warehouse.StorageConnector, выполнить подключение к базе MS c помощью SelectCurrentApp(<строка подключения к базе Mobile SMARTS или ид базы>),
загрузить с сервера документ при помощи GetDocument(@documentId), обработать документ и, если загрузка выполнилась успешно, удалить с сервера документ
при помощи RemoveDocument(@documentId)
*/
SET @resultXml = '';
END

Второй (SqlServerConnector:serverEvent_DocumentCompletedXml):

CREATE PROCEDURE [dbo].[DocumentCompletedXml]
(
@documentXml xml,
@result int OUTPUT
)
AS
BEGIN
SET @result = 1;
END


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

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

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

В Панеле управления укажите обработчики таким образом:
Встроенное изображение 1


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

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.




Сервис поддержки клиентов работает на платформе UserEcho