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

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

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

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

Для создания приложения нужно указать следующие параметры:
КлючиПриложенияВзаимодействия
Экземпляр типа КлючиПриложенияВзаимодействия, который хранит открытый и закрытый ключ создаваемого приложения.
Ключи могут быть сгенерированы «1С:Исполнителем» автоматически при конструировании экземпляра типа КлючиПриложенияВзаимодействия
новый КлючиПриложенияВзаимодействия()
Также вы можете генерировать ключи внешними утилитами, например, keytool.
Можно создать экземпляр КлючиПриложенияВзаимодействия с сохраненными ранее параметрами:
новый КлючиПриложенияВзаимодействия(ОткрытыйКлюч, ЗакрытыйКлюч)
Здесь ОткрытыйКлюч и ЗакрытыйКлюч — это пара ключей в формате:
  • массива байтов;
  • строк в формате Base64.
ИдПользователяПриложения
Идентификатор пользователя приложения типа Ууид
ИмяПользователяПриложения
Краткое имя пользователя приложения типа Строка
ПолноеИмяПользователяПриложения
Полное имя пользователя приложения типа Строка
КодАктивации
Заранее полученный от сервера системы взаимодействия код для регистрации приложения
ПочтаАбонента
Адрес электронной почты пользователя, создающего приложение
ИмяПриложения
Имя приложения

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

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

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

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

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

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

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

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

пер КодАктивации : Строка = "417929"
пер АдресЭлектроПочты : Строка = "user@domain"
пер ИмяПриложения : Строка = "имяПриложения"
пер ИдентификаторПользователя : Ууид = Ууид{84eb3ebb-95ae-4dea-a025-adfa8961703c}
пер ИмяПользователя : Строка = "Иван"
пер ПолноеИмяПользователя : Строка = "Иванов Иван"
   
пер Ключи : КлючиПриложенияВзаимодействия = новый КлючиПриложенияВзаимодействия()
   
// подключение
СистемаВзаимодействия.Подключиться("wss://develop.ecs.test:9094?transport=websocket&version=4", 
                                   "C:\\keystore.jks", 
                                   "passpass", 
                                   "passpass")  
   
// создание приложения получение его параметров
пер ПараметрыПриложенияСВ =
СистемаВзаимодействия.СоздатьПриложение(Ключи,           ИдентификаторПользователя, 
                                        ИмяПользователя, ПолноеИмяПользователя, 
                                        КодАктивации,    АдресЭлектроПочты, 
                                        ИмяПриложения)  
 
//
// ... возможна дальнейшая работа с системой взаимодействия ...
//
   
// отключение
СистемаВзаимодействия.Отключиться()

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

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

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

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

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

Обновление приложения

пер КодАктивации      = "417929"
пер АдресЭлектроПочты = "user@domain"
пер ИмяПриложения     = "имяПриложения"
пер ИдПользователя    = Ууид{84eb3ebb-95ae-4dea-a025-adfa8961703c}
   
пер КлючиПриложенияВзаимодействия = новый КлючиПриложенияВзаимодействия(
                              "MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJMNOm9mUN60O/ylCd0yenNt06L54+x56d
                               Uq+ot8s+NnznsfkfY8ieNUqAN/T00kP4qMRKCVgdZbJP+pgSDykB0CAwEAAQ==",
                              "MIIBVgIBADANBgkqhkiG9w0BAQEFAASCAUAwggE8AgEAAkEAkw06b2ZQ3rQ7/KUJ3T
                               J6c23Tovnj7Hnp1Sr6i3yz42fOex+R9jyJ41SoA39PTSQ/ioxEoJWB1lsk/6mBIPKQ
                               HQIDAQABAkAqxpZRAXpUzikE/R05cw2btj7yEa7zgyM6Fx56pPPPGlpaUC4J11nOFu
                               EspEJFQLA0UJqqFjYGl4IQ4qFaYzYhAiEAxHwKpJGKEXd1aSA6CT2bVSzIAeOnIbUQ
                               P5rgLAb75VMCIQC/mAZP/BkDyhOuIq/2wkEwIIWk5AXmkJ7lR+7La1UWzwIhAL+mDe
                               t/WiC3WHp1yKYCxWRLDbtqBjdGmNaxhj7rgP+pAiEApdpYPI0iqmEXwDpO0PE/tQWy
                               Kxco9Hpk0l3+nSEAu4kCIQC0JJQGKrl69Jsuqo/WkFNJRfyMfqDARTVsw/Bfl6IRBA
                               ==")
  
// параметры ранее созданного приложения СВ, ключ приложения знать не обязательно
пер ПараметрыПриложенияСВ = новый ПараметрыПриложенияВзаимодействия(
                                     Ууид{6c659615-0741-4e56-0000-6705c2a35298},
                                     "")
 
пер ИдПриложенияСВ : Ууид = ПараметрыПриложенияСВ.Идентификатор
  
// подключение например можно явно указать таймаут - 30 сек
попытка
    СистемаВзаимодействия.Подключиться("wss://develop.ecs.test:9094?transport=websocket&version=4",
                                       "C:\\keystore.jks", "passpass", "passpass", 30)
поймать Исключение : ИсключениеСистемыВзаимодействия
   Консоль.ЗаписатьОшибку("Не удалось 'Подключиться': " + Исключение)
;
  
// обновление приложения получение его параметров (новый публичный ключ)
попытка
    пер ПараметрыПриложенияСВ = СистемаВзаимодействия
                                   .ОбновитьПриложение(ИдПриложенияСВ,        КлючиПриложенияВзаимодействия, 
                                                       ИдПользователя,        ИмяПользователя,
                                                       ПолноеИмяПользователя, КодАктивации,
                                                       АдресЭлектроПочты,     ИмяПриложения)
// или
    пер ПараметрыПриложенияСВ = СистемаВзаимодействия
                                   .ОбновитьПриложение(ПараметрыПриложенияСВ.Идентификатор,
                                                       КлючиПриложенияВзаимодействия,
                                                       ИдПользователя,        ИмяПользователя,
                                                       ПолноеИмяПользователя, КодАктивации,
                                                       АдресЭлектроПочты,     ИмяПриложения)
  
    Консоль.Записать("Сохраните параметры приложения.")
    Консоль.Записать("Идентификатор приложения : " 
                       + ПараметрыПриложенияСВ.ИдентификаторПриложения)
    Консоль.Записать("Открытый ключ приложения : " + ПараметрыПриложенияСВ.ОткрытыйКлюч)
поймать Исключение : ИсключениеСистемыВзаимодействия
   Консоль.ЗаписатьОшибку("Не удалось 'СоздатьИлиОбновитьПриложение': " + Исключение)
;
 
 
//
// ... возможна дальнейшая работа с системой взаимодействия ...
//
  
// отключение
СистемаВзаимодействия.Отключиться()

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

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


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

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

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


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

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

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


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

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

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