Как авторизоваться в системе Диадок

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

Как загрузить внешнюю компоненту

  • Загрузка компоненты и инициализация объекта интерфейса Диадок на клиенте 1С.

    //Загрузка внешней компоненты
    ИмяФайла = "C:\Temp\AddInDiadocAPI.dll";
    ЗагрузитьВнешнююКомпоненту(ИмяФайла);
    
    //Создание объекта DiadocInvoiceAPI
    ДиадокАПИ_ = Новый("AddIn.DiadocInvoiceAPI");
    ДиадокАПИ  = ДиадокАпи_.CreateObject();
    
    //Задаем параметры подлючения к серверу
    ДиадокАпи.ApiClientId = КлючРазработчика;
    ДиадокАпи.ServerUrl   = "https://diadoc-api.kontur.ru:443";
    
  • Загрузка внешней компоненты на сервере 1С

    В случае, когда режим запуска 1С не позволяет запуск внешних компонент, использующих технологию COM, (например, на стороне сервера 1С 8.2) необходимо использовать сборку компоненты, которая реализована в виде классического COM-объекта. В этом случае перед использованием компоненты нужно зарегистрировать файл DiadocComApi.dll с помощью команды regsvr32.

    В случае запуска компоненты на 64-х битном сервере 1С, необходимо использовать 64-битную сборку данной компоненты. (64-битным должно быть именно приложение “сервер 1С”)

    После этого загрузка и инициализация компоненты производится следующим образом:

    //создаем корневой элемент COM-объекта
    ДиадокАпи = Новый ComОбъект("Diadoc.DiadocClient");
    
    //Задаем параметры подлючения к серверу
    ДиадокАпи.ApiClientId = КлючРазработчика;
    ДиадокАпи.ServerUrl   = "https://diadoc-api.kontur.ru:443";
    

Ключ разработчика представляет собой последовательность символов, идентифицирующий разработчика интеграционного решения. Для того чтобы получить ключ разработчика, необходимо отправить запрос по адресу: diadoc-api@skbkontur.ru.

Как создать соединение и авторизоваться

Для авторизации и последующих вызовов методов сервера Диадок необходимо создать DiadocConnection, который представляет собой соединение с сервером. Соединение следует создавать на каждый сеанс работы. Явно освобождать ресурсы после окончания работы с этим объектом не нужно.

При создании объекта DiadocConnection необходимо указать отпечаток сертификата для авторизации на сервере. Отпечаток сертификата можно узнать, получив список и описание всех доступных сертификатов методом GetPersonalCertificates.

// создание объекта контекста API
ДиадокАПИ_ = Новый("AddIn.DiadocInvoiceAPI");
ДиадокАПИ  = ДиадокАпи_.CreateObject();

//Получение списка сертификатов
Certificates = ДиадокАПИ.GetPersonalCertificates();

//создание соединения, здесь в явном виде указан отпечаток сертификата
//в рабочем варианте его надо получить из коллекции Certificates
//Например так PersonalCertificate = Certificates.GetItem(0).Thumbprint;
ДиадокСоединение = ДиадокАПИ.CreateConnectionByCertificate("3E859FA8FB718FB691A793AE1206C5EE85574AFD");

Создать контекст работы с организацией

Все действия с документами: отправка, получение, подписание и т.д. выполняются в контексте организации, к которой пользователь имеет права доступа в системе Диадок. Для работы с контекстом организации предназначен Organization. Он получается через DiadocConnection. Получить объект Organization можно одним из двух способов:

  • Получив Organization по идентификатору. Пример:

    BoxId = "8fd0af8abe934c7091b5ccd476ef1cb5@diadoc.ru";
    ДиадокКонтекстОрганизации = ДиадокСоединение.GetOrganizationById(BoxId);
    
  • Получив массив всех объектов Organization всех доступных ящиков. Пример:

    OrganizationList = ДиадокСоединение.GetOrganizationList();
      Ц = 0;
      Пока Ц < OrganizationList.Count() Цикл
        Organization = OrganizationList.GetItem(ц);
        Сообщить(Organization.Name);
      Ц = Ц + 1;
    КонецЦикла;
    

    Пример

Пример кода для авторизации и создания контекста работы в системе Диадок:

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

Функция ВернутьКонтекстРаботыВДиадоке()

  //Загрузка внешней компоненты
  ИмяФайла = "C:\Temp\AddInDiadocAPI.dll";
  Попытка
    ЗагрузитьВнешнююКомпоненту(ИмяФайла);
  Исключение
    ВызватьИсключение("Ошибка загрузки внешней компоненты: " + ОписаниеОшибки());
  КонецПопытки;

  //Создание объекта DiadocInvoiceAPI
  ДиадокАПИ_ = Новый("AddIn.DiadocInvoiceAPI");
  ДиадокАПИ  = ДиадокАпи_.CreateObject();

  //Задаем параметры подлючения к серверу
  ДиадокАпи.ApiClientId = КлючРазработчика;
  ДиадокАпи.ServerUrl   = "https://diadoc-api.kontur.ru:443";

  //Получение списка сертификатов
  Certificates = ДиадокАПИ.GetPersonalCertificates();
  Если Certificates.Count() > 0 Тогда

    Thumbprint = Certificates.GetItem(0).Thumbprint;
    ДиадокСоединение = ДиадокАПИ.CreateConnectionByCertificate(Thumbprint);

    OrganizationList = ДиадокСоединение.GetOrganizationList();
    Если OrganizationList.Count() > 0 Тогда
      Organization = OrganizationList.GetItem(0);
      Возврат Organization.Name;
    Иначе
      ВызватьИсключение("Нет доступных организаций");
    КонецЕсли;

  Иначе
    ВызватьИсключение("Нет доступных сертификатов");
  КонецЕсли;

КонецФункции;