Задача
Во внешнем сервисе реализовать возможность доступа к программным интерфейсам приложения 1С
Сценарий
- Пользователь в личном кабинете внешнего сервиса вводит логин и пароль от учетной записи облачного сервиса Фреш.
- Внешний сервис под учетной записью пользователя создает служебного пользователя абонента для доступа к API приложения
- Внешний сервис добавляет в приложение пользователя служебного пользователя для работы с API
- Внешний сервис получает возможность использования приложения 1С через API
Пример для плагина REST Client на Visual Studio Code
### ПРИМЕР СОЗДАНИЯ ПОЛЬЗОВАТЕЛЯ ДЛЯ ДОСТУПА К API ПРИЛОЖЕНИЯ В СЕРВИСЕ ФРЕШ # Включает операции: # 1. Получение кода абонента # 2. Создание нового пользователя абонента # 3. Получение списка областей абонента # 4. Добавление пользователя в конкретную область с доступом к API # # Используемые переменные: # server - адрес облачного сервиса Фреш # url - адрес ExtAPI менеджера сервиса (a/adm/hs/ext_api/execute) # authorization - авторизация абонента ### @server = https://1cfresh.com @url = a/adm/hs/ext_api/execute @authorization = Basic andreev.6@yopmail.com 123Qwer ### 1. Получение кода абонента. ## Выполняется запрос к менеджеру сервиса и возвращается: ## account[] - абоненты по текущему пользователю ## name - наименование абонента ## id - код абонента ## role - роль текущего пользователя для абонента ## ## ВАЖНО: ## Дальнейшая работа доступна только для роли Owner # @name accountInfo POST {{server}}/{{url}} Authorization: {{authorization}} { "general":{ "type":"ext", "method":"account/list" } } ### 2. Создание нового пользователя абонента. ## Для абонента создается новый пользователь, под которым ## будут осуществляться запросы к API ## ## Важно! ## На этом этапе следует придумать имя пользователя и пароль для учетной записи. ## ## Используемые переменные: ## account - код абонента (id из предыдущего этапа) = accountInfo.response.body.$.account[0].id ## service_password - пароль для служебного пользователя @service_password = 123Qwer POST {{server}}/{{url}} Authorization: {{authorization}} { "general":{ "type":"ext", "method":"account/users/create" }, "auth": { "account":{{accountInfo.response.body.$.account[0].id}} }, "id": {{accountInfo.response.body.$.account[0].id}}, "login": "{{$timestamp}}", "name": "{{$timestamp}}", "password": "{{service_password}}", "email_required": false, "role": "user" } ### 3. Получение списка областей абонента. ## Определяем области, соответствующие абоненту. ## Для авторизации используется логин и код абонента, полученные на предыдущем этапе. ## ## Используемые переменные: ## account - код абонента # @name tenantInfo POST {{server}}/{{url}} Authorization: {{authorization}} { "general":{ "type":"ext", "method":"tenant/list" }, "auth": { "account":{{accountInfo.response.body.$.account[0].id}} } } ### 4. Добавление пользователя в конкретную область. ## Созданного пользователя следует добавить в конкретную область, полученную на этапе 3. ## Пользователь добавляется с ролью "Доступ к API" ## ## Используемые переменные: ## tenant_role - Используемая роль (api, user, administrator) ## tenant_id - номер области = tenantInfo.response.body.$.tenant[0].id ## service_login - логин служебного пользователя @tenant_role = api POST {{server}}/{{url}} Authorization: {{authorization}} { "general":{ "type":"ext", "method":"tenant/users/add" }, "auth": { "account":{{accountInfo.response.body.$.account[0].id}} }, "id": {{tenantInfo.response.body.$.tenant[0].id}}, "login":"{{service_login}}", "role": "{{tenant_role}}" }