Интеграция с сервисом Контур.Фокус

Данный раздел содержит описание примера интеграции с сервисом Контур.Фокус.

Ссылка на пример на GitHub: KonturIntegration.

Пример включает два компонента:
  • KonturServerExtension — папка с серверным расширением Web-клиента, в котором реализовано проксирование запросов к Контур.Фокус (для обхода ограничений CORS в браузере).

  • KonturWebExtension — папка с клиентским расширением, в котором реализовано открытие отчета о контрагенте и загрузка информации.

  • KonturSolution.xml — решение с разметкой для организации контрагента, содержащее разметку с необходимыми обработчиками и элементами управления.

Пример рассчитан на версию Web-клиента 6.1 или выше.

Перечень необходимых инструментов:

Сборка и установка

  1. Сборка серверной части.

    1. Откройте решение Samples.sln.

    2. Соберите проект Other > Kontur > Kontur.

  2. Сборка клиентской части.

    1. Откройте в командной строке папку Others > KonturIntergration > KonturWebExtension.

    2. Выполните команды:

      npm install
      npm update
      npm run build:prod
  3. Публикация компонентов на сервере Web-клиента.

    1. Скопируйте папку SamplesOutput\Content\Modules\KonturWebExtension\ в Путь к сайту Web-клиента\Content\Modules.

    2. Скопируйте папку SamplesOutput\Extensions\KonturServerExtension в Путь к сайту Web-клиента\Extensions.

    3. Перезапустите Web-сервис.

Проверка примера

При создании контрагента

  1. В программе Конструктор Web-разметок импортируйте решение KonturSolution.xml.

  2. В appsettings.json Web-клиента добавьте в корневой элемент настройку с ключом доступа к API Контур.Фокус:

    "KonturSettings": {
      "ApiKey": "..."
    }
  3. Откройте разметку с ЭУ PartnerDepartment, например, создание исходящего документа, откройте окно справочника и нажмите кнопку добавления организации.

  4. В открывшейся разметке введите ИНН организации, например, 6663003127.

  5. Нажмите кнопку Просмотреть отчет о контрагенте — откроется окно с информацией о контрагенте.

  6. Нажмите на кнопку Загрузить информацию — значения элементов управления на разметке заполнятся данными из Контур.Фокус.

В карточке документа

  1. Добавьте разметку карточки типа документ кнопку, назначьте ей обработчик openBriefReportAndAttachFile.

  2. В ту же разметку добавьте ЭУ с именем INN типа TextBox. Настройте его таким образом, что бы он содержал актуальный ИНН контрагента, например, через расширенные источники данных.

  3. Откройте документ и нажмите на кнопку, откроется отчет в модальном окне и к документу будет прикреплен файл отчета в качестве дополнительного файла.

Компонент "KonturServerExtension"

namespace Kontur
{
    public class KonturServerExtension : WebClientExtension (1)
    {

        public KonturServerExtension(IServiceProvider serviceProvider) (2)
            : base()
        {
        }

        public override string ExtensionName (3)
        {
            get { return Assembly.GetAssembly(typeof(KonturServerExtension)).GetName().Name; }
        }

        public override Version ExtensionVersion (4)
        {
            get { return new Version(FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).FileVersion); }
        }

        #region WebClientExtension Overrides

        public override void InitializeServiceCollection(IServiceCollection services)
        {
            services.AddSingleton<IKonturRequestService, KonturRequestService>();
            services.AddOptions<KonturSettings>().BindConfiguration(KonturSettings.Key);

        }

        protected override List<ResourceManager> GetLayoutExtensionResourceManagers() (5)
        {
            return new List<ResourceManager>
            {

            };
        }

        #endregion
    }
}
1 Задаёт описание расширения для Web-клиента, которое задано в текущей сборке.
2 Создаёт новый экземпляр, см. KonturServerExtension.
  • serviceProvider — сервис-провайдер.

3 Получить название расширения.
4 Получить версию расширения.
5 Получает менеджеры ресурсов для расширения конструктора разметок.