﻿# Тип данных «Приложение»

> [HTML Version](app-data-type.html)

**Приложение** — это [тип поля](360009707032.md), который используется для указания одного или нескольких элементов определённого [приложения](360006963072.md). Например, чтобы в карточке клиента отобразить ссылки на заключённые с ним договоры.

**(app-data-type-1.png)**

Поле можно применить, чтобы сотрудник смог:

- только просмотреть значение и перейти в карточку связанного элемента;

- выбрать в поле существующий элемент приложения;

- добавить новую запись.

Когда вы создаёте поле типа **Приложение**, нужно:

1. [Установить настройки поля](#field-settings). Заполните основные опции, которые доступны всегда. Если вы добавляете поле на форму приложения, также определите дополнительные настройки.

2. Задать возможность заполнения поля. Доступные варианты различаются в зависимости от того, где оно размещается:

- [на форме приложения](#in-apps);

- [на форме в бизнес-процессе](#in-business-processes), например в карточке задачи;

- [в дизайнере интерфейсов](#in-interface-designer) при настройке страницы, виджета или шаблона формы.

````
начало внимание

````
Добавлять и настраивать поля могут только пользователи, входящие в группу [Администраторы](360006871932.md#administrators).

````
конец внимание

## ````
Настройки поля типа «Приложение»

Когда вы добавляете поле типа **Приложение** в [контекст приложения](360028941112.md), [бизнес-процесса](process_context.md) или [виджета](context_types.md), открываются его настройки:

1. Заполните основные настройки, которые доступны всегда:

- **Один** или **Несколько** — определите, сколько элементов приложения пользователь сможет указывать в поле.

Обратите внимание, если вы редактируете форму приложения, в которое уже добавлены элементы, то изменить подтип с **Несколько** на **Один** нельзя.

````
начало примечание

````
**Примечание**

При настройке [отображения элементов на странице приложения](360009923311.md) поле с подтипом **Несколько** можно добавить в таблицу, на плитки или на канбан‑доску. В этом случае при открытии приложения загружаются данные по всем ссылкам из этого поля с карточки каждого отображаемого элемента. Это повышает нагрузку на систему, особенно если таких ссылок много. Чтобы оптимизировать отображение страниц приложений, можно [включить жадную загрузку данных](360009923311.md#eager-load).

````
конец примечание

- ````
**Приложение\*** — задайте приложение, элементы которого будут указываться в поле. Обратите внимание, после сохранения настроек его нельзя изменить;

- **Ограничить выбор** — настройте фильтрацию записей при выборе существующих элементов приложения в поле. Например, чтобы пользователь мог указать только записи, которые сам добавил в систему. Подробнее читайте в статье [«Ограничить выбор значений в поле»](limit-selection-of-elements.md);

- **Поиск и сортировка по полю** — включите опцию, чтобы использовать значение поля для [поиска элемента приложения](360009669952.md), а также для сортировки записей в таблице или канбан‑доске на странице приложения. Опция доступна, если выбран подтип **Один**. Для подтипа **Несколько** отобразится опция **Поиск по полю**, которая позволяет выполнять поиск элемента по значению поля.

2. Если поле добавляется в контекст приложения, также доступны дополнительные опции:

**(app-data-type-2.png)**

- **Поле для связи** — позволяет связать поля в двух приложениях, чтобы ссылки на связанные элементы в них автоматически синхронизировались. Если в приложении, которое вы указали, есть поле со ссылкой на текущее приложение, опция автоматически включится. Подробнее читайте в статье [«Связь элементов двух приложений»](field-for-linking.md);

- **Значения по умолчанию для новых элементов** — используется, чтобы ускорить создание связанных элементов с помощью автоматического заполнения полей. Вы можете настроить копирование данных из элемента текущего приложения или задать значения вручную. Подробнее читайте в статье [«Значения по умолчанию для новых элементов»](360022129191.md);

- **Зависимое поле** — управляет сохранением связанного элемента. Используется, когда новая запись в поле должна добавляться только вместе с элементом текущего приложения. При включённой настройке дочерний элемент не создаётся в системе, пока родительский не сохранён. Подробнее читайте в статье [«Зависимое поле для дочернего приложения»](360020016471.md).

После этого определите возможность заполнения поля. 

## Размещение поля на формах приложения

Когда вы добавляете поле типа **Приложение** во время создания приложения:

- при работе в стандартном режиме настройки форм — изменить возможность заполнения поля нельзя, используются [настройки, заданные в системе по умолчанию](#standard-mode).

При создании и редактировании пользователь всегда сможет выбрать или добавить запись в поле, а с формы просмотра — создать новый элемент;

- после перехода в расширенный режим настройки форм — можно гибко настроить работу пользователя с полем отдельно для [форм создания и редактирования](#create-edit-forms), а также для [формы просмотра приложения](#view-form).

Вы можете разрешить или запретить выбор из существующих элементов и создание новых, сделать доступным только просмотр значения, отобразить данные из карточки связанного элемента. 

### Заполнение поля в стандартном режиме настройки форм

По умолчанию после создания приложения вы работаете в [стандартном режиме настройки форм](360009918011.md). Он позволяет задать единый набор полей, который пользователи увидят при создании, просмотре и редактировании элементов.

Изменить настройки заполнения для поля типа **Приложение** в этом режиме нельзя. Сотрудник всегда сможет:

- при создании или редактировании элемента:

	- выбрать в поле существующую запись — если пользователю предоставлены [права доступа на просмотр элементов](360007527512.md#assign);

	- добавить новую запись — если он имеет права на создание элементов;

**(app-data-type-3.png)**

- на форме просмотра элемента — перейти в карточку записи или добавить новый связанный элемент с помощью кнопки **(plus-item-icon.png)**,  если пользователь имеет достаточные права.

Вы можете перейти в [расширенный режим настройки форм](360028941032.md), чтобы настроить заполнение поля отдельно для форм создания, просмотра и редактирования элементов. Подробнее о размещении полей на формах в расширенном режиме читайте в статье [«Вкладки „Создание“, „Просмотр“, „Редактирование“»](360029250871.md).

### Настройка заполнения поля на формах создания и редактирования

Если вы работаете в расширенном режиме настройки форм, при вынесении поля типа **Приложение** на вкладки **Создание** и **Редактирование** вы можете:

1. **Разрешить заполнение поля**.

Чтобы поле было заполняемым:

1. Напротив названия поля отключите опцию **Только для чтения**.

**(app-data-type-4.png)**

2. Нажмите на название поля, затем в открывшемся окне перейдите на вкладку **Добавление элемента**.

3. Настройте варианты заполнения поля:

**(app-data-type-5.png)**

- **Выбор из списка** — нажав значок лупы рядом с полем, пользователь увидит список всех доступных ему элементов приложения в виде таблицы с возможностью [поиска по параметрам](360009669952.md#expanded_search). Если вы настроили фильтр в опции [Ограничить выбор](#add-filter), пользователь увидит только записи, подходящие под заданные условия.

Выберите **Настроить колонки списка**, чтобы задать [настройки таблицы](360009923311.md#table_settings) так же, как на странице любого приложения.

Например, для поиска договора добавьте параметры **Название** и** Контрагент**, а также включите сортировку по полю **Сумма**. Тогда пользователь увидит таблицу договоров с указанием контрагентов, а их порядок в списке будет зависеть от суммы договора. Вы также можете применить параметры, заданные при настройке таблицы в приложении, нажав кнопку **По умолчанию**;

**(app-data-type-6.png)**

- **Кнопка для добавления нового элемента **— рядом с полем отобразится кнопка **+ Создать**, с помощью которой в указанное приложение можно добавить новую запись.

4. Сохраните настройки.

Обратите внимание, если при добавлении поля вы включили опцию [Зависимое поле](#bound-app-field), настроить заполнение нельзя. Так как в поле добавляется дочерняя запись, кнопка создания элемента всегда доступна, а выбор из существующих элементов — отключён.

2. **Сделать поле доступным только для просмотра и отобразить вложенные свойства**.

Оставьте опцию **Только для чтения** включённой, чтобы заполнение поля стало недоступно. Например, если установленное значение нельзя изменять при редактировании элемента или поле заполняется автоматически с помощью [скрипта](client_server_scripts.md).

В этом случае вы можете отобразить рядом с полем вложенные свойства — данные связанного элемента. Тогда пользователь увидит всю нужную информацию без перехода в карточку другой записи. Допустим, в поле **Клиент** под названием организации можно показать реквизиты, заполняемые в отдельных полях:** Юридический адрес**, **Расчётный счёт** и т. д.

Для этого:

1. Нажмите на название поля в списке.

2. В открывшемся окне перейдите на вкладку **Свойства**.

3. Переместите свойства приложения из столбца **Контекст** в столбец **Название на форме**.

**(app-data-type-7.png)**

4. Сохраните настройки.

На форме отобразится ссылка на связанный элемент и данные из его полей.

### Настройка отображения поля на форме просмотра

Если в [расширенном режиме настройки форм](360028941032.md) вы выносите поле на вкладку **Просмотр**, можно одновременно настроить отображение вложенных свойств и добавление новой записи.

Нажмите на название поля, чтобы открыть окно настроек. Вы можете:

1. **Показать вложенные свойства**.

На вкладке **Свойства** перенесите поля на форму так же, как [на вкладках Создание и Редактирование](#create-edit-forms). Данные из связанного элемента приложения отобразятся рядом с его названием в карточке.

2. **Настроить добавление записей с карточки элемента**.

На вкладке **Добавление элемента** по умолчанию включено отображение кнопки **(plus-item-icon.png)**. Пользователь сможет добавить в поле связанный элемент без редактирования текущей записи.

Чтобы настроить работу кнопки, выберите опцию:

- **<Стандартное создание>** — используется по умолчанию и позволяет добавить элемент в связанное приложение и ссылку на него в карточку элемента;

- **+ Элемент** — дублирует функции, настроенные для [кнопки создания элементов](360019229331.md) на странице приложения. Если к кнопке добавления нового элемента [привязан бизнес-процесс](360009921131.md#start-process), он запустится;

- запуск бизнес-процесса — позволяет запустить по кнопке процесс, в ходе которого добавляется элемент.

Пример настройки кнопки для добавления элемента приведён в статье [«Создание элементов приложения в карточке другого приложения»](360029148471.md).

Чтобы создание записи в поле было недоступно, на вкладке **Добавление элемента** отключите опцию **Кнопка для добавления нового элемента**.

## Размещение поля на форме в бизнес-процессе

Поле типа **Приложение** можно добавить на [форму в бизнес-процессе](360012495991.md). Например, чтобы в карточке задачи сотрудник увидел ссылку на обрабатываемый договор или указал клиента. 

Настройка поля выполняется так же, как при добавлении [на форму создания или редактирования в приложении](#create-edit-forms).

Если поле на форме задачи является редактируемым, а у сотрудника нет достаточных прав доступа, он автоматически получит возможность заполнять поле. Он не получает прямого доступа к приложению и не сможет редактировать поля элементов вне рамок задачи.

## Размещение поля в дизайнере интерфейсов

В [дизайнере интерфейсов](interface_designer.md) создаются шаблоны форм, страницы и пользовательские виджеты. Когда вы настраиваете их, вы можете использовать:

- при настройке страницы или виджета — поля, добавленные в дизайнере интерфейсов на вкладке [Контекст](context_types.md#widget-context);

- при настройке формы — поля с вкладки **Контекст**, а также из [контекста приложения](360028941112.md) или [бизнес-процесса](process_context.md), для которого создаётся форма.

Когда вы выносите свойство типа **Приложение** на поле для моделирования, в открывшемся окне вы можете:

**(app-data-type-8.png)**

- сделать поле заполняемым — отключите опцию **Только для чтения**. Пользователю будут доступны:

	- выбор существующего элемента — сотрудник сможет выбрать элемент из списка записей, на просмотр которых у него есть права. Вы можете задать фильтрацию доступных элементов, используя в настройках поля опцию [Ограничить выбор](#add-filter);

	- кнопка **+ Создать** напротив поля — если у пользователя есть права на добавление элементов приложения;

- сделать поле доступным только для просмотра — включите опцию **Только для чтения**. В поле отобразится ссылка на элемент.

### Отображение вложенных свойств в дизайнере интерфейсов

Если поле типа **Приложение** имеет подтип **Один**, то его вложенные свойства можно разместить в любом месте формы, страницы или виджета. 

Для этого в меню справа нажмите значок стрелки напротив названия поля, затем перетащите свойство из появившегося списка на поле для моделирования.

**(app-data-type-9.png)**