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

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

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

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

Для создания приложения нужно указать следующие параметры:
КлючиПриложенияВзаимодействия
Экземпляр типа КлючиПриложенияВзаимодействия, который хранит открытый и закрытый ключ создаваемого приложения.
Ключи могут быть сгенерированы «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.

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

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

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

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

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

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

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

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

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

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

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