Перейти к основному содержимому

Сценарии работы с приложениями системы взаимодействия

Создание нового приложения

Перед созданием нового приложения вам необходимо получить код активации для регистрации приложения.

Для создания нового приложения используйте метод УправлениеПриложениямиВзаимодействия.СоздатьПриложениеВзаимодействия().

Для создания приложения нужно указать следующие параметры:

  • КлючиПриложенияВзаимодействия

    Экземпляр типа КлючиПриложенияВзаимодействия, который хранит открытый и закрытый ключ создаваемого приложения.

    Ключи могут быть сгенерированы «1С:Шиной» автоматически при конструировании экземпляра типа КлючиПриложенияВзаимодействия:

    новый КлючиПриложенияВзаимодействия()

    Также вы можете генерировать ключи внешними утилитами, например keytool.

    Можно создать экземпляр КлючиПриложенияВзаимодействия с сохраненными ранее параметрами:

    новый КлючиПриложенияВзаимодействия(ОткрытыйКлюч, ЗакрытыйКлюч)

    Здесь ОткрытыйКлюч и ЗакрытыйКлюч — это пара ключей в формате:

    • массива байтов;
    • строк в формате Base64.
  • ИдПользователяПриложения

    Ууид. Идентификатор пользователя приложения.

  • ИмяПользователяПриложения

    Строка. Краткое имя пользователя приложения.

  • ПолноеИмяПользователяПриложения

    Строка. Полное имя пользователя приложения.

  • КодАктивации

    Заранее полученный от сервера системы взаимодействия код для регистрации приложения.

  • ПочтаАбонента

    Адрес электронной почты пользователя, создающего приложение.

  • ИмяПриложения

    Имя приложения.

После вызова метода УправлениеПриложениямиВзаимодействия.СоздатьПриложениеВзаимодействия() сервер системы взаимодействия вернет набор реквизитов зарегистрированного приложения в экземпляре типа ПараметрыПриложенияВзаимодействия. Их нужно сохранить для дальнейшего использования:

  • ИдентификаторПриложения — идентификатор приложения на сервере системы взаимодействия типа Ууид;
  • ОткрытыйКлюч — открытый ключ системы взаимодействия типа Строка.

Все параметры можно сохранить как строки любым доступным способом (в зависимости от дальнейшего использования).

После создания приложения и перед выполнением метода СистемаВзаимодействия.Войти() нужно вызвать метод СистемаВзаимодействия.Отключиться(), чтобы отсоединиться от системы взаимодействия. Если не выполнить этого шага, сервер системы взаимодействия будет возвращать ошибку «пользователь уже авторизован».

Подключение и создание приложения

Проверка сертификатов при подключении к серверу системы взаимодействия

При соединении с сервером системы взаимодействия (СистемаВзаимодействия.Подключиться()) «1С:Шина» проверяет сертификаты. Если проверка сертификата заканчивается неудачей, то выбрасывается исключение ИсключениеСистемыВзаимодействия.

В целях отладки приложения можно воспользоваться более простым методом СистемаВзаимодействия.ПодключитьсяБезПроверкиСертификата(), но мы не рекомендуем пользоваться этим методом в реальных приложениях.

знч КодАктивации: Строка = "417929"
знч АдресЭлектроннойПочты: Строка = "ivanov@company.com"
знч ИмяПриложения: Строка = "ИмяПриложения"
знч ИдентификаторПользователя: Ууид = Ууид{84eb3ebb-95ae-4dea-a025-adfa8961703c}
знч ИмяПользователя: Строка = "Иван"
знч ПолноеИмяПользователя: Строка = "Иванов Иван"

знч Ключи: КлючиПриложенияВзаимодействия = новый КлючиПриложенияВзаимодействия()

// Подключение к системе взаимодействия.
// В данном примере используется публичный сервис «1С:Диалог».
СистемаВзаимодействия.Подключиться("wss://1cdialog.com:443",
"C:\\keystore.jks",
"keystorePassword",
"certPassword")

// Создание приложения и получение его параметров
знч ПараметрыПриложенияСВ =
УправлениеПриложениямиВзаимодействия.СоздатьПриложениеВзаимодействия(Ключи, ИдентификаторПользователя,
ИмяПользователя, ПолноеИмяПользователя,
КодАктивации, АдресЭлектроннойПочты,
ИмяПриложения)

// Работа с системой взаимодействия.
// ...

// Отключение от системы взаимодействия.
СистемаВзаимодействия.Отключиться()

Проверка сертификатов через хранилище сертификатов Java

Для упрощения работы можно подключаться к серверу системы взаимодействия без указания параметров ФайлХранилища, ПарольХранилища и ПарольКлюча в методе СистемаВзаимодействия.Подключиться(). Это возможно в том случае, если сертификат, используемый на сервере системы взаимодействия, подписан (выдан) доверенным удостоверяющим центром. Тогда будет использована встроенная проверка сертификата сервера с использованием входящих в его поставку JRE-сертификатов.

Если проверку сертификата, используемого на сервере, нельзя провести с использованием встроенных в Java сертификатов, вызов завершится исключением, а для успешного подключения необходимо будет указать параметры хранилища.

Поддержка файлов сертификатов в формате PKCS12

В параметре ФайлХранилища метода СистемаВзаимодействия.Подключиться() вы можете указывать путь к сертификату сервера взаимодействия формата PKCS12. Раньше поддерживался только формат JKS.

Получение кода активации и регистрация приложения в «1С:Диалог»

знч ПочтаАбонента = "admin@company.ru"

// Получение кода активации на электронную почту.
УправлениеПриложениямиВзаимодействия.ЗапроситьКодАктивации(ПочтаАбонента)

знч КодАктивации = "КодИзПочты"

// Регистрация приложения в системе взаимодействия.
СистемаВзаимодействия.ЗарегистрироватьПриложение(
ПочтаАбонента = ПочтаАбонента,
ИмяПриложения = "Приложение для торговли",
КодАктивации = КодАктивации)

Ручная установка данных регистрации приложения в системе взаимодействия

Данный способ предназначен для миграции приложения или восстановления данных подключения из резервной копии.

// В примере используется публичный сервис «1С:Диалог».

// Известные ранее данные.
знч ОткрытыйКлюч = "QWERTYU4567=..."
знч ЗакрытыйКлюч = "QWERTYU4567=..."
знч КлючиПриложения = новый КлючиПриложенияВзаимодействия(ОткрытыйКлюч.ВБайты(), ЗакрытыйКлюч.ВБайты())

знч ДанныеРегистрации = новый ДанныеРегистрацииПриложенияВзаимодействия(
Сервер = "wss://1cdialog.com:443",
ИдПриложения = Ууид{86669b56-32c9-49bb-9b5b-31cde9a79538},
КлючиПриложения = КлючиПриложения,
ОткрытыйКлючСервера = "QWERTYU4567=...")

// Установка данных регистрации должна выполняться от имени администратора.
СистемаВзаимодействия.УстановитьДанныеРегистрацииПриложения(ДанныеРегистрации)

Объединение приложений взаимодействия

Объединение приложений позволяет пользователям этих приложений вести переписку между собой.

знч ТекущееПриложение = СистемаВзаимодействия.ПолучитьТекущееПриложение()
знч ИдВторогоПриложения = Ууид{6c79fc60-2373-11ed-861d-0242ac120002}
знч ОбъединениеПриложений = новый ОбъединениеПриложенийВзаимодействия(ТекущееПриложение.Ид, ИдВторогоПриложения,
РежимСопоставленияПользователейВзаимодействия.ПоПолномуИмени)

СистемаВзаимодействия.ОбъединитьПриложения(ОбъединениеПриложений)

Отмена всех объединений приложений взаимодействия у абонента

знч ОбъединенияПриложений = СистемаВзаимодействия.ПолучитьОбъединенияПриложений()

для Объединение из ОбъединенияПриложений
СистемаВзаимодействия.ОтменитьОбъединениеПриложений(Объединение.ИдПриложения, Объединение.ИдПарногоПриложения)
;

Получение необъединенных приложений взаимодействия

знч СписокПриложений = СистемаВзаимодействия.ПолучитьПриложенияАбонента()
знч ОбъединенияПриложений = СистемаВзаимодействия.ПолучитьОбъединенияПриложений()

пер ПриложенияБезОбъединения = новый Массив<ПриложениеВзаимодействия>()

для Приложение из СписокПриложений
пер ОбъединениеНайдено = Ложь
для Объединение из ОбъединенияПриложений
если Приложение.Ид != Объединение.ИдПриложения или Приложение.Ид != Объединение.ИдПарногоПриложения
ОбъединениеНайдено = Истина
прервать
;
;

если не ОбъединениеНайдено
ПриложенияБезОбъединения.Добавить(Приложение)
;
;