Для организации обмена данными между учетной системой пользователя и Mobile SMARTS применяется специальная COM компонента.
После ее установки и регистрации в ОС Windows становится возможным создание и операции с объектами компоненты, непосредственно в процедурах учетной системы.
Все средства доступа к серверу Mobile SMARTS сосредоточены в одном единственном COM- компоненте Cleverence.Warehouse.StorageConnector.
Операция создания объектов, описанных в COM, специфична для каждой системы:
Псевдокод:
1 var connector = новый Cleverence.Warehouse.StorageConnector();«1С:Предприятие 7»:
1 connector = СоздатьОбъект("Cleverence.Warehouse.StorageConnector");«1С:Предприятие 8»:
1 connector = новый COMОбъект("Cleverence.Warehouse.StorageConnector");Microsoft Dynamics AX (Axapta):
1 var connector = new COM("Cleverence.Warehouse.StorageConnector");
StorageConnector содержит функции для выгрузки/загрузки справочников и документов, а также для работы со специальными возможностями системы (управление терминалами, редактирование и печать этикеток и так далее). Все объекты метаданных Mobile SMARTS и прочие объекты Mobile SMARTS в рамках компоненты доступа к серверу Mobile SMARTS также представлены в виде COM-компонентов.
После создания, к COM-объекту могут применяться операции чтения и записи свойств и вызов его функций, в соответствии с синтаксисом языка разработки применяемой учетной системы.
Посмотреть все установленные в системе COM компоненты, их свойства и функции, возможно с помощью утилиты oleview.exe компании Microsoft.
Сервер Mobile SMARTS принимает обращения и возвращает результаты только в виде XML- документов. Формат этих документов может меняться от версии к версии, и нигде не документирован. StorageConnector облегчает работу прикладного программиста, автоматически транслируя графы объектов Mobile SMARTS в XML-документ и наоборот.
В процессе интеграции, разработчик создает код учетной системы, который создает и заполняет некоторый объект Mobile SMARTS, иногда достаточно сложный, в соответствии с данными учетной системы, и отправляет его на сервер Mobile SMARTS при помощи вызова StorageConnector. При загрузке данных происходит обратная операция – анализ объекта Mobile SMARTS и модифицирование на его основе данных учетной системы.
Доступ к серверу
После создания StorageConnector в обязательном порядке требуется провести его инициализацию с помощью функции InitializeServerConnection.
C#:
1234 void InitializeServerConnection(string connectionString)void InitializeProxyServerConnection(string connectionString,string proxyName,int port)Строка соединения connectionString представляет собой url к Web-сервису сервера Mobile SMARTS и имеет следующий формат:
http://DNS-имя-сервера[:порт для доступа]/путь-к-странице/DataStorage.asmx
Самый первый шаг на пути к интеграции – это попытка выполнить следующий код:
C#:
1234 Cleverence.Warehouse.StorageConnector connector =new Cleverence.Warehouse.StorageConnector();connector.InitializeServerConnection("http://server:8000/DataStorage.asmx");«1С:Предприятие 7»:
1234 // Создание объекта коннектора и инициализация его соединения с сервером.connector = СоздатьОбъект("Cleverence.Warehouse.StorageConnector");connector.InitializeServerConnection(СокрЛП(Константа.ПолучитьАтрибут("СтрокаПодключения")));«1С:Предприятие 8»:
123 // Создание объекта коннектора и инициализация его соединения с сервером.connector = новый COMОбъект("Cleverence.Warehouse.StorageConnector");connector.InitializeServerConnection(Константы.СтрокаПодключения);Microsoft Dynamics AX (Axapta):
12345 // Создание объекта коннектора и инициализация его соединения с сервером.COM connector = new COM("Cleverence.Warehouse.StorageConnector");connector.InitializeServerConnection(EasyWarehouse.GetConnectionString());
Если доступ к серверу возможен только через прокси, следует использовать второй вариант этой функции.
Если объект создан успешно и InitializeServerConnection выполнилась без ошибок, можно переходить к попытке выгрузить некоторые справочники.
Что могло случиться, если экземпляр StorageConnector создать не удалось:
Ошибка | ||
Возможная причина |
Диагностика | Решение |
Создание экземпляра Cleverence.Warehouse.StorageConnector завершилось с ошибкой «Cleverence.Warehouse.StorageComConnector were not registered» («COM-компонент не зарегистрирован») или какой-то подобной. |
||
На компьютере не установлена компонента доступа. |
В «Установке и удалении программ» нет записи о «Mobile SMARTS 2.x — Компонента доступа». |
Найти дистрибутив Mobile SMARTS и произвести установку компоненты доступа. |
Компонента установлена, но часть файлов отсутствует. |
Папка установки компоненты доступа отсутствует либо пуста (и в ней нет файла Cleverence.Warehouse.StorageComConnector.dll). |
Найти дистрибутив Mobile SMARTS, через «Установку и удаление программ» удалить компоненту доступа и установить ее заново. |
Компонента установлена, но регистрация COM не произошла. |
А) В Oleview нет компонента «Cleverence.Warehouse.StorageComConnector», либо Б) В системном реестре (regedit.exe) нет ни одной записи, содержащей строку «Cleverence.Warehouse.StorageComConnector». |
Произвести регистрацию вручную, запустив из папки компоненты доступа файл «Зарегистрировать COM-компонент StorageComConnector.bat».Если файл регистрации не может найти путь «Framework. v1.1.4322» или файл «RegAsm.exe», необходимо переустановить .NET Framework 1.1. |
Создание экземпляра Cleverence.Warehouse.StorageConnector завершилось с ошибкой «Cannot resolve Cleverence.Warehouse.StorageComConnector assembly or one of it’s references» («Немогунайтисборку Cleverence.Warehouse.StorageComConnector или одну из используемых ею») или какой-то подобной. |
||
Компонента установлена, но часть файлов отсутствует. |
Папка установки компоненты доступа отсутствует, либо заполнена только на половину (и в ней нет главного файла — Cleverence.Warehouse.StorageComConnector.dll). |
Найти дистрибутив Mobile SMARTS, через «Установку и удаление программ» удалить компоненту доступа и установить ее заново. |
Вызов метода InitializeServerConnection завершилось с ошибкой «Сервер не найден» или какой-то подобной. | ||
Неверно указана строка подключения. |
Скопировать строку подключения в браузер и дожидаться загрузки страницы Web-сервиса. Браузер выдаст ошибку «The page cannot be displayed» («Невозможно отобразить страницу») или «Server Error in ‘/’ Application. The resource cannot be found» («Ошибка в приложении ‘/’, ресурс не найден»). |
Выяснить точную строку подключения. Например, на компьютере сервера |
Расширения ASP.NET 1.1 не были зарегистрированы в MS IIS. |
Microsoft Internet Information Services (IIS) был установлен уже после установки .NET Framework 1.1.Скопировать строку подключения в браузер и дожидаться загрузки страницы Web-сервиса. Браузер выдаст ошибку «The page cannot be found» («Страница не найдена»). |
Произвести регистрацию вручную, запустив из папки сервера файл «Зарегистрировать ASP.NET под MS IIS.bat».Например, на компьютере сервера запустить Internet Information Services (IIS) Manager (inetmgr.exe), найти виртуальную папку Cleverence.Warehouse.DataService и выяснить, где она расположена физически, выбрав в контекстном меню команду «Properties…» («Свойства…»). Если путь к папке выглядит как «\Cleverence.Warehouse.DataService», ее следует искать в папке «Inetpub\wwwroot» диска, на котором установлена операционная система (чаще всего, это диск C:, но может быть и по-другому). |
В локальной сети установлен прокси-сервер для доступа к HTTP, а разработчик об этом не знает. |
В настройке Internet Explorer, Opera, Firefox и других браузерах указаны настройки прокси.Например, в IE в закладке «Tools\Internet Options…\Connections\LAN Settings…» («Сервис\Свойства обозревателя…\Подключения\Настройка LAN…») что-то сказано про «Use a proxy server for…» («Использовать прокси-сервер для…»). |
Выяснить настройки прокси-сервера и внести их в вызов метода InitializeServerConnection. |
Настройки безопасности доступа к папке с Web-сервисом Mobile SMARTS настроены неверно. |
Скопировать строку подключения в браузер и дожидаться загрузки страницы Web-сервиса. Браузер выдаст ошибку «You are not authorized to view this page» («Доступ к странице запрещен»). |
На компьютере сервера запустить Internet Information Services (IIS) Manager (inetmgr.exe) и убедиться в правильности политики доступа к виртуальной папке Cleverence.Warehouse.DataService.На компьютере сервера найти физическую папку Cleverence.Warehouse.DataService (например, Inetpub\wwwroot\Cleverence…Dataservice) и настроить политику доступа для локальных и удаленных пользователей по всем файлам и подпапкам. |
На компьютере установлен ISA- клиент. |
В трее видны значки ISA-клиента. | Временно отключить Firewall Client, чтобы более точно диагностировать ошибку:Если c выключенным Firewall Client вызов работает, выяснить настройки прокси-сервера и локальных политик и внести их в вызов метода InitializeServerConnection.Если нет – искать другую причину. |
Выгрузка и загрузка данных
Рассмотрим небольшой пример выгрузки данных с использованием компоненты доступа, в котором мы выгрузим на сервер Mobile SMARTS одну-единственную позицию номенклатуры «Товар1»:
C#:
12345678910111213141516171819202122 using Cleverence.Warehouse;…// Создание объекта продукта «Товар1»Product продукт = new Cleverence.Warehouse.Product();продукт.Id = “1”;продукт.Name = “Товар1”;продукт.Marking = “АРТИКУЛ1”;// Cоздание объекта упаковки для товараPacking упаковка = new Cleverence.Warehouse.Packing();упаковка.Id = “1”;упаковка.Name = “шт”;упаковка.UnitsQuantity = 1;продукт.Packings.Add(упаковка);продукт.BasePackingId = “1”;// Cоздание коннектора, для подключения к серверуStorageConnector connector = new Cleverence.Warehouse.StorageConnector();connector.InitializeServerConnection("http://server:8000/DataStorage.asmx");// Выгрузка заполненного товара на серверconnector.SetProduct(продукт);«1С:Предприятие 7»:
123456789101112131415161718192021 // Создание объекта продукта «Товар1»продукт = СоздатьОбъект(“Cleverence.Warehouse.Product”);продукт.Id = “1”;продукт.Name = “Товар1”;продукт.Marking = “АРТИКУЛ1”;// Cоздание объекта упаковки для товараупаковка = СоздатьОбъект(“Cleverence.Warehouse.Packing”);упаковка.Id = “1”;упаковка.Name = “шт”;упаковка.UnitsQuantity = 1;продукт.Packings.Add(упаковка);продукт.BasePackingId = “1”;// Cоздание коннектора, для подключения к серверуconnector = СоздатьОбъект("Cleverence.Warehouse.StorageConnector");connector.InitializeServerConnection("http://server:8000/DataStorage.asmx");// Выгрузка заполненного товара на серверconnector.SetProduct(продукт);«1С:Предприятие 8»:
1234567891011121314151617181920 // Создание объекта продукта «Товар1»продукт = новый COMОбъект(“Cleverence.Warehouse.Product”);продукт.Id = “1”;продукт.Name = “Товар1”;продукт.Marking = “АРТИКУЛ1”;// Cоздание объекта упаковки для товараупаковка = новый COMОбъект(“Cleverence.Warehouse.Packing”);упаковка.Id = “1”;упаковка.Name = “шт”;упаковка.UnitsQuantity = 1;продукт.Packings.Add(упаковка);продукт.BasePackingId = “1”;// Cоздание коннектора, для подключения к серверуconnector = новый COMОбъект("Cleverence.Warehouse.StorageConnector");connector.InitializeServerConnection("http://server:8000/DataStorage.asmx");// Выгрузка Выгрузка заполненного товара на серверconnector.SetProduct(продукт);Microsoft Dynamics AX (Axapta):
123456789101112131415161718192021222324252627282930 // СозданиеобъектаконнектораCOM connector = new COM("Cleverence.Warehouse.StorageConnector");// CозданиеобъектатовараCOM product = new COM("Cleverence.Warehouse.Product");// СозданиеОбъектаУпаковкиCOM packing = new COM("Cleverence.Warehouse.Packing");// Дает доступ с свойству product.PackingsCOM packings;// Заполнение объекта продукта «Товар1»product.Id(“1”);product.Name(“Товар1”);product.Marking(“АРТИКУЛ1”);// Заполнение объекта упаковкиpacking.Id(“1”);packing.Name(“шт”);packing.UnitsQuantity(1);packings = product.Packings();packings.Add(packing);product.BasePackingId(“1”);// Инициализация соединения с сервером.connector.InitializeServerConnection("http://server:8000/DataStorage.asmx");// Выгрузка заполненного товара на серверconnector.SetProduct(product);
Код в примере простой, но он содержит основные элементы любой выгрузки, а именно создание коллекции под выгрузку, ее наполнение, и отправка на сервер.
Если все было сделано правильно, сервер Mobile SMARTS доступен и работает, а вызов SetProduct прошел без ошибок, поздравляем! Можно зайти в папку «C:\Program Files\Cleverence Soft\Mobile SMARTS 2008\Server\Documents\» на физическом сервере Mobile SMARTS и поискать там файл «Cleverence.Warehouse.ProductsBook.xml». Если открыть его с помошью Internet Explorer или какого-нибудь редактора XML-файлов, можно будет поближе познакомиться со структурой хранения данных Mobile SMARTS.
Что могло случиться, если функция завершилась с ошибкой:
Ошибка | ||
Возможная причина |
Диагностика | Решение |
Создание экземпляра Cleverence.Warehouse.StorageConnector завершилось с ошибкой. | ||
Со времен чтения раздела «Доступ к серверу» конфигурация вашего компьютера изменилась, либо это уже другой компьютер. |
Вернуться к разделу «Доступ к серверу» и ошибкам подключения. |