83 comconnector

Внешнее соединение — это один из механизмов интеграции с другими системами. Основная задача, решаемая с помощью внешнего соединения — обеспечение надежного и быстрого программного доступа к данным 1С:Предприятия 8 из внешних приложений.

Отличия от Automation-сервера

В общем и целом работа через внешнее соединение подобна работе в режиме Automation-сервера. Основные отличия заключаются в следующем:

  • В случае Automation-сервера запускается полноценное приложение 1С:Предприятие 8, а в случае внешнего соединения запускается относительно небольшой внутрипроцессный COM-сервер.
  • При работе через внешнее соединение недоступны функциональные возможности так или иначе связанные с организацией пользовательского интерфейса;
  • При работе внешнего соединения не используется модуль приложения. Его роль при работе с внешним соединением играет модуль внешнего соединения.

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

При использовании внешнего соединения имеются следующие преимущества по сравнению с использованием Automation-сервера:

  • более быстрая установка соединения, так как не требуется создания отдельного процесса операционной системы, а все действия производятся в рамках вызывающего процесса;
  • более быстрое обращение к свойствам и методам объектов 1С:Предприятия 8, так как для организации обращения не требуется организации межпроцессной коммуникации;
  • меньший расход ресурсов операционной системы.

Пример

Для организации доступа к данным системы 1С:Предприятие 8 через внешнее соединение, выполняется следующая последовательность действий:

  • создается менеджер COM-соединений, с помощью которого производится установка соединения;
  • через полученный объект внешнего соединения производится обращение к допустимым методам, свойствам и объектам базы данных, с которой установлено соединение.

В качестве примера можно привести обращение к информационной базе 1С:Предприятия 8 через внешнее соединение из программы на языке MS Visual Basic.

Информационная база находится в каталоге c:\InfoBases\Trade. В программе 1С:Предприятие 8 создается объект типа СправочникМенеджер.Товары и создается новая группа элементов с названием ***** Экспорт из Excel ******. Во вновь созданную группу каталога записываются данные из таблицы MS Excel:

Sub Excel_to_trade ()

Dim cntr As Object
Dim trade As Object
Dim Элемент As Object

ГруппаТоваров.Наименование = «***** Экспорт из Excel ******»
ГруппаТоваров.Записать

N = 100 ‘Количество строк в документе
For Count = 1 To N

Элемент.Записать

Next Count

End Sub

Контекст исполнения

Обязанности модуля приложения при работе через внешнее соединение выполняет модуль внешнего соединения. Данный модуль может иметь процедуры-обработчики событий, в которых могут быть размещены действия, выполняемые при инициализации и завершении соединения, соответственно.

Процедуры, функции и глобальные переменные, определенные в модуле внешнего соединения с ключевым словом Экспорт становятся, как и в случае модуля приложения, частью глобального контекста.

Внешнее соединение с информационной базой 1С:Предприятие 8 предоставляет полный доступ к глобальному контексту и в качестве своих свойств может иметь:

  • системные константы;
  • значения заданных в конфигураторе объектов, доступ к которым осуществляется с помощью менеджеров (например, константы, перечисления, справочники, документы, журналы документов, отчеты, обработки, планы видов характеристик, планы счетов, планы видов расчета, регистры);
  • переменные, объявленные в модуле внешнего соединения с ключевым словом Экспорт.

В качестве своих методов внешнее соединение может иметь:

  • системные процедуры и функции;
  • процедуры и функции модуля внешнего соединения и общих модулей, объявленные с ключевым словом Экспорт;
  • дополнительный метод NewObject.

Пул соединений

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

Варианты использования

С помощью внешнего соединения можно, например, организовать веб-доступ к базе данных 1С:Предприятия 8:

Также внешнее соединение позволяет организовать обмен XML-документами системы 1С:Предприятие 8 с внешним приложением:

Технологии интеграции 1С:Предприятия 8.3

Авторы: Е.Ю. Хрусталева

С помощью COM и OLE соединения можно из одной базы 1С подключиться к другой и прочитать или записать данные.

Пользоваться этим методом можно как в клиент-серверных вариантах баз, так и в файловых базах.

Существует два вида COM объектов для приложения 1С:

Com соединение V83.COMConnector

В случае с V83.Application запускается практически полноценный экземпляр приложения 1С. В случае использования V83.COMConnector запускается небольшая серверная часть. Скорость работы в этом случае выше, но некоторые функции могут быть недоступны.

В частности работа с формами и с общими модулями для которых, не установлено свойство работы с внешними соединениями. По большей части нужно использовать V83.COMConnector и только в случае нехватки функционала V83.Application.

Особенно сильно разница в скорости работы может быть заметна на базах большого объема.

Для платформы 1С 8.2 используется V82.Application или V82.COMConnector

Работу COM и OLE соединений к базе 1С 8 рассмотрим подробно:

Установить OLE соединение к 1С 8

1 Соединение = Новый COMОбъект(«V83.Application»);

Установить COM соединение к 1С 8

1 Соединение = Новый COMОбъект(«V83.COMConnector»);

Строка подключения к 1С 8

Разрыв соединения с 1С 8

1 Соединение = Неопределено;

Для объекта V83.Application выполнять разрыв соединения обязательно, в противном случае останется висеть незавершенный сеанс, который потом придется удалять вручную. В случае с V83.COMConnector соединение разрывается автоматически при завершении процедуры в которой выполнялось подключение.

И есть еще один маленький момент. Для пользователя под которым выполняется подключение должен быть отключен флажок «Запрашивать подтверждение при закрытии программы» в его настройках.

Метод NewObject()

Для создания нового объекта можно воспользоваться методом NewObject(), например:

для V83.COMConnector

для V83.Application

После создания Com объекта можно далее работать с ним, например

Можно также использовать менеджеры объектов конфигурации:

1 2 3 СправочникCOM = Подключение.Справочники.ИмяСправочника; ДокументCOM = Подключение.Документы.ИмяДокумента; РегистрCOM = Подключение.РегистрыСведений.ИмяРегистра;

Получение и сравнение перечисления через COM соединение

Для сравнения значений элементов перечислений, определенных в конфигурации, необходимо выполнить преобразование этих элементов к одному из примитивных типов, сравнение которых не вызывает трудности. Такими типами могут быть либо числовой, либо строковый тип. Преобразовать значение элемента перечисления к числовому типу можно так:

1 2 3 4 5 6 ЭлементПеречисления = Подключение.Справочники.Справочник1.НайтиПоКоду(1).Реквизит1; ВозможныеЗначения = ЭлементПеречисления.Метаданные().ЗначенияПеречисления; НомерЭлементаПеречисления = ВозможныеЗначения.Индекс(ВозможныеЗначения.Найти(Соединение.XMLString(ЭлементПеречисления))); Если НомерЭлементаПеречисления = 0 Тогда Сообщить(«ЗначениеПеречисления1»); ИначеЕсли НомерЭлементаПеречисления = 1 Тогда Сообщить(«ЗначениеПеречисления2»); КонецЕсли;

Получение объекта через COM по идентификатору

Через менеджеры объектов конфигурации получаем com объект, например :

1 2 3 4 5 6 7 8 9 10 11 12 ДокументCOM = Соединение.Документы.ИмяДокумента; //Затем получаем строку уникального идентификатора : СтрокаУИД = Соединение.string(ДокументCOM.УникальныйИдентификатор()); //Затем в базе данных можно найти по ссылке нужный документ, таким образом Идентификатор = Новый УникальныйИдентификатор(СтрокаУИД); СсылкаПоИдентификатору = Документы.ПолучитьСсылку(Идентификатор); //Если нужно найти com объект по документ по идентификатору, то тогда нужно написать так: УидCOM = Соединение.NewObject(«УникальныйИдентификатор»,СтрокаУИД); СсылкаПоИдентификатору = Соединение.Документы.ПолучитьСсылку(УидCOM);

2 Мар 2016

Успешно прошел очередную сертификацию на получение статуса «Совместимо! Система программ 1С:Предприятие» программный продукт «2iS:Интеграция», разработанный и тиражируемый фирмой ООО «ИИС» и представленный на сертификацию как конфигурация, разработанная в среде «1С:Предприятия 8.3» в режиме управляемого приложения.

«2iS:Интеграция»

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

При использовании продукта отпадает необходимость внесения и поддержки изменений в конфигурации управляемых баз данных в части их интеграции между собой и с другими системами, так как вся логика взаимодействия инфосистем вынесена, централизованно настраивается и поддерживается в единой базе «2iS:Интеграция». Это приводит к снижению затрат на ИТ-поддержку систем, снижению влияния «человеческого фактора», улучшению качества обслуживания систем и увеличению их производительности.

Продукт содержит гибкие средства для мониторинга процессов интеграции с автоматическим контролем проблемных ситуаций и рассылкой sms- и e-mail-уведомлений. Конфигурация работает в режиме управляемого приложения. Для мониторинга и настройки может использоваться веб-интерфейс.

Основные функциональные возможности программы:

  • Ускоренный многопоточный обмен данными:
    • С использованием правил конвертации / Без использования правил;
    • С использованием узлов планов обмена / Без использования узлов;
    • Импорт и конвертация данных из внешних источников данных (не 1С);
    • «Умная» обработка ошибок, режимы «дозакачки» и нестрого чтения XML;
  • Новый уровень информационной безопасности:
    • Управление пользователями инфобаз из единого центра. Импорт настроек из Active Directory;
    • Сбор журналов регистрации и техно-журналов инфобаз в едином хранилище;
    • Мониторинг, контроль и управление любыми автоматизированными (регламентными) заданиями;
    • Мониторинг показателей оборудования и производительности инфобаз;
    • Автоматизированные сверки данных между инфобазами.
  • Многопоточные обработки данных:
    • Нормализация НСИ (поиск дублей, обработка заявок на их удаление с заменой ссылок);
    • Свертка (сокращение) регистров сведений, накопления и бухгалтерии;
    • Продукт позволяет разрабатывать, отлаживать и запускать по расписанию автоматизированные распараллеливаемые задания в любых базах «1С:Предприятие 8»;
  • Веб-портал отчетов из любых систем (1С и не только):
    • Возможность настройки сводных отчетов по данным нескольких систем;
    • Импорт отчетов и схем компоновок из метаданных любой конфигурации;
    • Управление рассылками отчетов с компоновкой данных из нескольких инфобаз;
    • Встроенные и портативные Инструменты разработчика для быстрой и удобной разработки отчетов в любых конфигурациях 1С;
  • Администрирование инфраструктуры (серверов, кластеров, инфобаз):
    • Регистрация всех объектов инфраструктуры 1С (серверы, кластеры, инфобазы) из единой точки;
    • Создание резервных копий инфобаз средствами SQL и 1С;
    • Обновления конфигураций по расписанию и по заявкам из файла или хранилища.

Конфигурация «2iS:Интеграция» является оригинальной, но не самостоятельной, для ее работы необходимо наличие установленной платформы «1С:Предприятие 8.3» версии не ниже 8.3.5.1248. Взаимодействие с другими базами на платформе «1С:Предприятие» осуществляется с использованием COM- и DCOM-технологий.

Конфигурация защищена программным ключом защиты и содержит закрытые фрагменты кода, не подлежащие изменению пользователем. При этом реализован принцип максимальной открытости и модульности кода для обеспечения возможности адаптации продукта под нужды конечных пользователей. Для работы необходимо установить систему лицензирования конфигураций, входящую в комплект поставки.

Срок действия данного сертификата – до 02.03.2018.

Изучение возможности интеграции C# и 1С мы начнем с создания на C# простейшего COM сервера. Для этой цели нам понабиться Visual Studio 2010 и платформа 1C 8.2. И так, в визуал студии создаем новый проект, тип проекта выбираем «библиотека классов» (class library):

У нас появится заготовка библиотеки, куда мы введем вот такой текст (вместо существующего):

C#

Обратите внимание, что в юзинги мы добавили System.Windows.Forms, поэтому необходимо подключить к библиотеке соответствующую ссылку:

Сделать это можно либо кликнув на ветке «Ссылки» правой кнопочкой мыши:

либо через меню «Проект» —> «Добавить ссылку»:

Теперь обратите внимание на гуиды (текст типа CC441039-F00D-4617-B2AD-36082B7D4D9D). Их надо будет сгенерить. Для этого запускаем специальную утилиту «Генератор GUID», которая входит в стандартный пакет Visual Studio:

Для генерации выбираем формат, в котором надо генерить, нажимаем «Создать GUID» а потом «Копировать», что бы поместить его в буфер обмена, а потом вставить в текст программы:

Вставив в программу приведенный здесь код, а в код свои гуиды, займемся настройкой проекта:

Во-первых, на закладке «Построение» надо указать, что наша программа будет зарегистрирована для COM-взаимодействия:

Во-вторых, надо создать подпись на сборку (пароль создавать необязательно):

Ну, и последний штрих, идем в AssemblyInfo.cs и вставляем туда вызов AssemblyKeyFile, а ComVisible делаем true:

C#

Все, компилим проект а затем регистрируем его утилитой RegAsm:

Можно нашу компоненту не регить предварительно, а хранить в виде двоичных данных и регать перед первым использованием.

Все, теперь протестим что мы написали. И так, создаем обработину:

1С (Код)

Запустив эту обработку, мы увидим, что наш COM-объект действительно работает

Add a Comment

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