Elisy Business Connector logo 1CSOFTWARE.COM

Elisy Business Connector

Логотип Elisy Business Connector для 1С:Предприятие

Elisy Business Connector позволяет взаимодействовать с системами 1С:Предприятие через Интернет-технологии. Решение является кроссплатформенным и более эффективным, чем традиционный доступ через COM/OLE и через веб-сервисы.

Elisy Business Connector – это связующий компонент. Он позволяет связываться с опубликованными информационными базами 1С:Предприятие на Apache/IIS и в облачных сервисах. Для отправки запросов и получения ответов используется http-протокол и форматы JSON/XML. В решение вошли многие разработки команды Elisy Software Design в области интеграции с 1С: .Net Bridge, MdInternals, Decompiler, Proxy.

Преимущества

Преимущества Business Connector перед веб-сервисами:

  • Кроссплатформенность, ориентация на платформы разработки. Ориентация на протокол SOAP в веб-сервисах не гарантирует совместимость между платформами.
  • Наличие совместимого API и использование родных объектов для популярных платформ Java/Mono/.Net. Веб-сервисы поддерживают стандарт SOAP, реализация которого может отличаться у популярных платформ разработки.
  • Последовательные обращения в Business Connector проходят в одной сессии. Каждое обращение к веб-операции через веб-сервис создает отдельный сеанс.
  • Кэширование возвращаемых значений модулей с повторным использованием. Для веб-сервисов не предусмотрен параметр «Повторное использование».
  • Большая доступность технологии за счет протокола http. Доступность и настройка веб-сервисов может быть ограничена или затруднена на сервисах SaaS. Настройка веб-сервисов происходит сложнее, чем публикация 1С на веб-сервере.

Преимущества Business Connector перед COM/OLE:

  • Кроссплатформенность и поддержка разных операционных систем. COM/OLE-приложения нацелены только на Windows.
  • Совместимость с 64-разрядными Windows-приложениями. Одна сборка .Net/Mono/Java может работать на 32- и 64-разрядных приложениях. Технология COM/OLE требует различных версий библиотек для 32- и 64-разрыдных приложений.
  • Большая доступность на виртуальных машинах, облачных системах, сервисах SaaS и мобильных устройствах.
  • Нет привязки к аппаратному ключу защиты.

Используемый подход является кроссплатформенным: он не только позволяет обращаться к системам 1С:Предприятие, работающим на Windows и Linux, но также к системам, размещенным на облачных сервисах. Через Java и Mono поддерживаются мобильные и другие операционные системы. Сейчас компонент доступен для Java, .Net framework, Silverlight и Mono. Архитектура Business Connector устроена так, что в будущем позволит перенести компонент на другие популярные фреймворки. Внутри семейства систем 1С:Предприятие компонент доступен на Windows через технологию 1C.Net:Предприятие.

Business Connector является более эффективным, чем COM/OLE-доступ к 1С:Предприятие через тонкий клиент. Преимущества достигаются за счет архитектуры, спланированной для кроссплатформенной и многопоточной работы. На компьютере, с которого осуществляется доступ, можно не устанавливать 1С:Предприятие. Доступ можно организовать из любой операционной системы.

Планируется, что основное применение компонент получит при интеграции Интернет-проектов с конфигурациями 1С:Предприятие, такими как: Бухгалтерия и Управление Торговлей. Это могут быть Интернет-магазины или билинговые системы.

Схема подключения технологии Elisy Business Connector

Идея создания

С выходом ознакомительной версии 1С:Предприятие 8.3 стала ясна четкая направленность компании 1С на кроссплатформенность: на одновременную поддержку Windows и Linux.

Это значит, что в будущем традиционно используемые в 1С Windows-технологии должны быть пересмотрены в сторону универсальности и общей доступности как из Windows, так и из Linux. В первую очередь это касается удобной COM/OLE-технологии. В системах 1С, начиная с 7.7, COM использовался в основном в 2х случаях:

  • Внешние компоненты по технологии COM. Частным случаем является создание и использование зарегистрированных в реестре COM-серверов сторонних разработчиков, таких как: генераторы штрихкодов, VBScript с регулярными выражениями, сокеты и др. В 1С 8.2 был представлен альтернативный Native API-интерфейс, который доступен из Linux. Но при этом Native API более урезан по функциональности, чем COM-доступ, например, не предусмотрен аналог IDispatch-объектов. Также урезанной альтернативой Linux станет вызов через командную строку приложений и обработка файлов на их выходе.
  • Внешний доступ к приложению 1С:Предприятие через COM/OLE. Урезанная альтернатива – запуск скриптов 1С по расписанию с генерированием файлов-флагов, а также написание и публикация специализированных SOAP веб-сервисов.

Решение для первой проблемы не может впечатлить своей универсальностью и эффективностью с точки зрения разработчика. Так как всеобъемлющее Native API-приложение должно быть скомпилировано для Windows, Linux, (MacOS в 8.3), а также для популярных браузеров: IE, FireFox, Chrome, Opera, Safari. Число поддерживаемых проектов увеличивает вероятность ошибок из-за специфики каждой из поддерживаемых ИТ-архитектур.

Вторая проблема не славится стандартными решениями. Задания, генерирующие файлы-флаги, запускаются только по расписанию, а не по требованию. А веб-сервисы требуют вмешательства в конфигурацию, сложны конфигурированием и ограничены SOAP-стандартом.

Более универсальный подход для решения второй проблемы, положенный в основу Elisy Business Connector, состоит в следующем. Опубликованная через веб-браузер конфигурация 1С версии 8.2 и выше рассматривается как набор веб-сервисов с доступом по http/https. Используемые форматы JSON и XML обеспечивют универсальное подключение более легкое, чем через SOAP.

Насколько перспективен Linux для 1С:Предприятие в ближайшее время? Скорее всего, доля Linux в локальных сетях коммерческих компаний возрастет не сильно в ближайшие 10-20 лет. Но всю картину меняют облачные сервисы 1С, которые с вероятностью 99% будут строиться не на основе Windows Azure. Это значит, что значительная часть типовых конфигураций будет размещена на Linux с экономией на поддержке и сисадминах. Какую конкретно долю займут облачные сервисы сказать трудно.

Простые примеры

Простые примеры демонстрируют возможности версии 1.0, которая доступна для Java, Mono, Net framework, Silverlight. Это первая версия, предназначенная для ознакомления сообщества с технологией. На основе полученных отзывов и замечаний будет планироваться расширение функциональности конечного продукта и расширение или сокращение поддерживаемых платформ.

Доступная функциональность:

  • Подключение к информационной базе и отключение;
  • Получение информации о подключении;
  • Вызов удаленных серверных методов без параметров;
  • Распознавание простейшего типа: строка;
  • Поддержка Java 1.6 SE, .Net framework 4, Silverlight 4, Mono 2.8

Особенности программирования для Java:

  • Названия методов для Java начинаются с прописной буквы. Например, Open, Close и GetUserList следует писать как open, close и getUserList.

Особенности программирования для Silverlight:

  • 1. Политика безопасности запрещает в Сильверлайте междоменные обращения. Поэтому необходимо создать файл clientaccesspolicy.xml или crossdomain.xml в корневом каталоге домена, к которому выполняется обращение. Соответственно, нельзя обращаться к приложениям с демо-сервера 1С так как таких файлов на сервере 1С нет.
  • 2. Приведенный ниже код нужно запускать в отдельном потоке, так как Сильверлайт очень трепетно относится к основному GUI-потоку и асинхронные вызовы, задействующие основной поток дают некорректные результаты (Например, HttpWebResponse.EndGetResponse(), запущенный в основном потоке возвращает null).

Пример возвращает строку, полученную при запуске серверной функции ПолучитьТекстЗапросаДокументыРасчетовСПоставщиками модуля ВзаиморасчетыСервер:

  1. string connectionString = "ws=\"http://demo-ma.1c.ru/trade\";Usr=\"АфанасьевВМ (руководитель отдела оптовых продаж)\";Pwd=\"\";L=\"ru_RU\"";
  2. Connection connection = new Connection(connectionString);
  3. connection.Open();
  4. connection.Login();
  5. GlobalContext gc = new GlobalContext(connection);
  6. string serverValue = gc.GetServerModule("ВзаиморасчетыСервер").Invoke("ПолучитьТекстЗапросаДокументыРасчетовСПоставщиками", null).ToString();
  7. connection.Close();

Данный пример получает в массив users всех пользователей информационной базы из списка при запуске 1С:

  1. string connectionString = "ws=\"http://demo-ma.1c.ru/trade\";Usr=\"АфанасьевВМ (руководитель отдела оптовых продаж)\";Pwd=\"\";L=\"ru_RU\"";
  2. Connection connection = new Connection(connectionString);
  3. connection.Open();
  4. string[] users = connection.GetUserList();

Расширенные примеры

Расширенные примеры будут доступны в обновлении 1.1, над которым начата работа. В первую очередь будет выполнена реализация для .Net framework и Mono, которые стали лидерами по числу скачиваемых библиотек.

Запланировано в версии 1.1:

  • Распознавание простейших типов: строка, число, дата, булево, неопределено;
  • Распознавание составных типов: структура, массив;
  • Распознавание ссылочных типов: справочник;
  • Состояние соединения: открыто, разорвано, закрыто, поломано;

Комплексный пример для инициализации структуры с простейшими типами и вызов серверной процедуры Invoke в серверном модуле ElisyBusinessConnector, возвращающий эту же структуру. Считается, что подключение Сonnection уже создано (см. предыдущие примеры).

  1. StructureType s = new StructureType(GlobalContext);
  2. s["null"] = new NullType();
  3. s["undefined"] = new UndefinedType();
  4. s["string"] = new StringType() { Value = "String1" };
  5. s["number"] = new NumberType() { Value = 12345.678 };
  6. s["date"] = new DateType() { Value = DateTime.Now };
  7. s["boolean"] = new BooleanType() { Value = true };
  8. GlobalContext = new GlobalContext(Connection);
  9. var result = GlobalContext.GetServerModule("ElisyBusinessConnector").Invoke("Invoke", new object[] { "result = parameters;", s }) as StructureType;

Пример выполняет запрос и возвращает предопределенный элемент из справочника Организации. Используется процедура Query в серверном модуле ElisyBusinessConnector:

  1. StructureType parameters = new StructureType(GlobalContext);
  2. IBaseType ref = GlobalContext.PredefinedValue("Справочник.Организации. УправленческаяОрганизация");
  3. parameters["Ссылка"] = ref;
  4. var record = GlobalContext.GetServerModule("ElisyBusinessConnector").Invoke("Query", new object[] {
  5.     @"ВЫБРАТЬ Справочник.Ссылка КАК Ref, Справочник.Наименование КАК Name
  6.     ИЗ Справочник.Организации КАК Справочник
  7.     ГДЕ Справочник.Ссылка = &Ссылка",
  8.     parameters
  9. }).OfType<StructureType>().FirstOrDefault();

Многопоточность

Организация многопоточности возможна только в серверном режиме работы 1С на разных сессиях. Опыты показали, что выигрыша в производительности в файловом режиме работы 1С нет. Нет выигрыша также в серверном режиме на одной сессии – сервер 1С обрабатывает серверные вызовы для одной сессии последовательно.

Цены и лицензирование

Бесплатное ознакомительное использование предусмотрено на платформе «1С:Предприятие 8 Версия для обучения программированию» без использования в реальных системах.

Лицензия на 1 организацию позволяет использовать определенную версию продукта на выбранной платформе для одной организации, не зависимо от числа подключений и пользователей.

Предусмотрены скидки 20% дилерам, 40% разработчикам тиражных решений на основе Elisy Business Connector.