﻿# Внешний портал в приложении

> [HTML Version](portal-app.html)

Внешние пользователи могут взаимодействовать с порталом из браузера, [приложения ELMA365 для ПК](360027248771.md) (версии 2.0.6 и выше), а также из [мобильного приложения](mobile_app.md) (версии 1.3.0 и выше).  

Чтобы внешние пользователи могли работать с порталом из приложений, [Администратору](360006871932.md#administrators) системы необходимо разместить на странице портала специальную ссылку для доступа из приложения. 

Для этого в дизайнере интерфейсов [страницы портала](portal-setting.md) перейдите на вкладку **Скрипты** и добавьте метод \[OBJECT\]. Затем разместите полученную ссылку на странице портала. Например, с помощью свойства типа [Ссылка](360009707032.md#link), в которое будет передаваться сгенерированное методом значение. Подробный пример размещения ссылки на странице мы рассмотрим [далее](#example). 

Также вы можете преобразовать ссылку в QR-код с помощью стороннего сервиса и разместить изображение с кодом на странице, например, с помощью виджета [Текст](text_widget.md). 

Чтобы получить доступ к порталу в приложении, пользователю необходимо перейти по размещённой на странице ссылке. После этого откроется приложение ELMA365 со страницей авторизации на внешнем портале. 

Для получения доступа к порталу с помощью QR-кода пользователю необходимо открыть страницу портала, на которой размещён код, и мобильное приложение ELMA365. Затем на странице авторизации в приложении нажать кнопку **Отсканировать код**. После сканирования изображения откроется страница входа на внешний портал. 

## Пример 

Рассмотрим пример добавления на страницу портала ссылки для входа в приложение. Сделаем так, чтобы ссылка генерировалась и отображалась на странице портала после нажатия кнопки. Для этого: 

1. Перейдите в [дизайнер интерфейсов](interface_designer.md) страницы внешнего портала. 

2. На вкладке **Настройки** в поле **Доступные элементы** включите опцию **Разрешить использование всех элементов**, чтобы включить доступ к глобальным константам. 

3. На вкладке **Контекст** создайте свойство типа [Ссылка](360009707032.md#link). 

(portal-app-1.png)

4. Откройте вкладку **Шаблон** и разместите на поле для моделирования созданное свойство. 

5. В открывшемся окне настроек свойства в опции **Только для чтения** установите значение **Да**. Это нужно, чтобы ссылка была доступна для перехода по нажатию. Сохраните настройки. 

6. Вынесите на поле виджет [Кнопка](button_widget.md). 

7. В открывшемся окне настроек задайте параметры виджета: 

- **Надпись/подсказка\*** — введите название кнопки, например, **Получить ссылку**; 

- **Выполняемый скрипт** — добавьте скрипт, который будет генерировать ссылку для входа в приложение и выводить её в поле **Ссылка**. Для этого нажмите **Создать**, укажите название функции** getELMAAppURL **и выберите** Сохранить, **а затем —** Открыть**. 

(portal-app-2.png)

8. На открывшейся вкладке **Скрипты** добавьте в созданную функцию следующий код: 

````
async function getELMAAppURL(): Promise<void> \{  
  const ELMAAppURL = await Namespace.portal.generateELMAAppUrl();  
  Context.data.link = ELMAAppURL; // Присваиваем сгенерированную ссылку переменной типа Ссылка  
\}

9. ````
Сохраните и опубликуйте внесённые изменения. 

После этого на странице внешнего портала будет отображаться кнопка, с помощью которой пользователи смогут получить ссылку для работы во внешнем портале из приложения. 