Программный доступ к базам 1С:Предприятие 8.2 из других баз 1С

Предложенный доступ организован с использованием двух технологий: Elisy Business Connector и 1C.Net:Предприятие. Он позволяет получить доступ к любой базе 1С:Предприятие 8.2 и выше, опубликованной через веб-сервер Apache или IIS.
Пример, предложенный к статье, позволяет получить информацию из демонстрационной базы 1С, размещенной на сервере компании 1С: http://demo-ma.1c.ru/trade

Предложенный доступ организован с использованием двух технологий: Elisy Business Connector и 1C.Net:Предприятие. Он позволяет получить доступ к любой базе 1С:Предприятие 8.2 и выше, опубликованной через веб-сервер Apache или IIS.

Пример, предложенный к статье, позволяет получить информацию из демонстрационной базы 1С, размещенной на сервере компании 1С: http://demo-ma.1c.ru/trade

Elisy Business Connector

Business Connector – это технология доступа к базам 1С, опубликованных через веб-сервера. Технология обладает несколькими преимуществами относительно COM- и WS-доступа.

Преимущества 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 и мобильных устройствах.
  • Нет привязки к аппаратному ключу защиты.

1C.Net:Предприятие

Описанная выше технология доступа к базам 1С Business Connector была создана для доступа в первую очередь к базе 1С из программных платформ .Net Framework и Java. Но внешний компонент .Net Bridge позволяет использовать технологию для доступа из скриптов 1С.

1C.Net:Предприятие обеспечивает бесшовную и гармоничную интеграцию с .Net Framework посредством взаимодействия с Common Language Runtime (CLR). Облегчает обращение к .Net из 1С-скриптов и отладку 1С-конфигураций.

Последняя версия .Net Bridge 4.0.4 работает с .Net Framework 4. Необходимо, чтобы он был установлен на компьютере перед началом использования.

Описание примера

Пример выполнен как управляемая форма и выводит сообщения в окно служебных сообщений через команды Сообщить.

Инициализировать .Net Bridge. Подключить его как внешний компонент.

ПодключитьВнешнююКомпоненту("Elisy.NetBridge4");
AddIn = New("AddIn.ElisyNetBridge4");
net = AddIn.GetNet();

Сборка .Net Elisy.BusinessConnector.Net.dll находится в макете к внешней обработке с примером. Ее нужно извлечь и подключить.

Макет = ПолучитьМакет("Elisy_BusinessConnector_Net_dll");
ДвоичныеДанные = Base64String(Макет);
assemblyBytes = net.CallStatic("System.Convert", "FromBase64String", ДвоичныеДанные);
net.CallStatic("System.Reflection.Assembly", "Load", assemblyBytes);

Код по инициализации Business Connector. После инициализации потребуется вход через Login.

connection = net.New("Elisy.BusinessConnector.Connection", "ws=""http://demo-ma.1c.ru/trade"";Usr=""БахшиевПИ (руководитель)"";Pwd="""";L=""ru_RU""");
connection.Open();

На данном этапе можно получить список всех пользователей и зайти, используя имя 1го пользователя в списке и пустой пароль:

userList = connection.GetUserList();
connection.Login(userList.GetValue(0), "");

Инициализация глобального контекста для соединения:

gc = net.New("Elisy.BusinessConnector.VM.GlobalContext", connection);

Пример вызовов серверных методов-экспортных функций общих модулей без параметров:

Результат = gc.GetServerModule("ДенежныеСредстваСервер").Invoke("ПолучитьСписокКомандЗаполненияНазначенияПлатежа", Неопределено);
Результат = gc.GetServerModule("ВнешниеПользователи").Invoke("ИспользоватьВнешнихПользователей", Неопределено);
Сообщить("Использовать Внешних Пользователей: " + Результат.Value);
Результат = gc.GetServerModule("ВнешниеПользователи").Invoke("ТекущийВнешнийПользователь", Неопределено);
Результат = gc.GetServerModule("ВзаиморасчетыСервер").Invoke("ПолучитьТекстЗапросаДокументыРасчетовСПоставщиками", Неопределено);
Сообщить("Текст Запроса Документы Расчетов С Поставщиками: " + Результат.Value);

Пример вызова серверного метода с параметрами:

список = net.New("System.Collections.Generic.List", net.T("System.Object"));
список.Add("40702810800110033044");
Результат = gc.GetServerModule("ДенежныеСредстваСервер").Invoke("ПолучитьВалютуПоНомеруСчета", список.ToArray());

Можно получить также предопределенное значение:

СправочникОрганизации = gc.PredefinedValue("Справочник.Организации");

И для справочника Организации получить данные выбора через метод GetChoiceData – аналог ПолучитьДанныеВыбора глобального контекста:

параметрыПоиска = net.New("Elisy.BusinessConnector.Types.StructureType", gc);
отбор = net.New("Elisy.BusinessConnector.Types.StructureType", gc);
параметрыПоиска.Set_Item("Filter", отбор);
организации = gc.GetChoiceData(СправочникОрганизации, параметрыПоиска);

//
//

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *