﻿# Связь элементов двух приложений

> [HTML Version](field-for-linking.html)

Настройка **Поле для связи** позволяет создать связь между двумя [приложениями](360006963072.md) для автоматической синхронизации связанных элементов.

Допустим, у вас есть приложения **Заявки** и **Клиенты**. Вы хотите, чтобы они работали так:

1. Сотрудник добавляет заявку в систему и указывает в ней обратившегося клиента. Тогда в карточку клиента автоматически записывается ссылка на эту заявку.

2. Если сотрудник изменяет клиента в заявке, например для исправления ошибки, данные о связанных заявках в карточках клиентов обновляются.

3. Сотрудник может прикрепить заявку к клиенту из его карточки. После этого он также автоматически записывается в поле заявки.

Для этого в приложениях добавляются ссылки друг на друга с помощью свойств типа [Приложение](app-data-type.md). Для них по умолчанию включена настройка **Поле для связи**. Если значение полей пользователи заполняют вручную без автоматической синхронизации, создание связи можно отменить.

Особенности настройки **Поле для связи**: 

- неважно, на стороне какого из двух приложений включается настройка: данные обновляются в обоих направлениях;

- настроить или отменить связь между приложениями можно с помощью опции **Поле для связи** только при создании свойства типа **Приложение**. После сохранения свойства значение, выбранное в этой опции, изменить нельзя;

- созданную связь нельзя отредактировать или удалить, так как она добавляется на уровне базы данных. Чтобы настроить связь через другое поле или не использовать автоматическое обновление, нужно добавить в приложения новую пару полей и задать для них другие настройки;

- добавленные связи проверяются при импорте [экспортированного приложения](360009669292.md). Если в целевой компании поле уже существует, и для него добавлена другая связь, импортировать приложение нельзя.

О других доступных настройках поля типа **Приложение** и читайте в статье [«Тип данных „Приложение”»](app-data-type.md).

## Настроить или отменить связь между приложениями

Рассмотрим, как настроить автоматическую синхронизацию данных для одного поля и отменить её для другого.  

Допустим, у нас есть два приложения:

- **Заявки** — хранит обращения от клиентов по исправлению проблем и ошибок. В карточке клиента есть поле **Заявки** для отображения всех его обращений;

- **Клиенты** — хранит обслуживаемые компании.

В приложении **Заявки** создадим два разных поля со ссылками на приложение **Клиенты**, но взаимодействие этих полей с карточками клиентов будет отличаться: 

- **Основной клиент** — автор заявки.   
  
Чтобы все заявки автоматически отображались в карточке клиента, настроим связь между приложениями **Заявки** и **Клиенты**;

- **Все затронутые клиенты** — сотрудник вручную добавляет в это поле другие компании, которые столкнулись с ошибкой, описанной в заявке. Помогает определить приоритетность проблемы.   
  
Поскольку затронутые клиенты не создавали заявку, в их карточках она не должна быть доступна. Для этого отменим связь между приложениями **Заявки** и **Клиенты**.

Рассмотрим, как это сделать.

### Шаг 1. Настроить автоматическую связь полей



1. Перейдите к [настройке формы](360009918011.md#edit_form) приложения **Клиенты**. Добавьте поле типа **Приложение** и укажите в нём приложение **Заявки**. Выберите подтип **Несколько**, так как в поле хранятся все заявки клиента.

(fiels-for-linking-1.png)

2. Нажмите **Сохранить**.

3. Откройте приложение **Заявки** и перейдите в настройки формы. Добавьте поле типа **Приложение**, ссылающееся на приложение **Клиенты**, и назовите его **Основной клиент**. Выберите подтип **Один**, так как у заявки всегда один автор.

Если клиент указан в заявке как основной, ссылка на эту заявку должна автоматически записываться в его карточку. Поэтому в настройках свойства **Основной клиент** оставьте опцию **Поле для связи** заполненной по умолчанию ранее добавленным полем **Заявки** из приложения **Клиенты**.

(fiels-for-linking-3.png)

Для указанного поля **Заявки** из приложения **Клиенты** настройка **Поле для связи** включится автоматически.

### Шаг 2. Отменить автоматическую связь полей

1. Создайте ещё одно поле типа **Приложение** с ссылкой на приложение **Клиенты** и введите для него название **Все затронутые клиенты**. Укажите опцию **Несколько**, так как в поле будут ссылки на дополнительные компании, которые столкнулись с совпадающей проблемой. Однако эти компании не являются авторами заявки, поэтому она не должна записываться в их карточки.   
  
Для этого отмените синхронизацию связанных элементов. В настройках свойства **Все затронутые клиенты** напротив опции **Поле для связи** выберите **<Новое поле>**.

(fiels-for-linking-2.png)

2. Сохраните форму.

## Как работает связь при создании элемента

Когда сотрудник добавляет информацию по заявке в систему, он указывает обратившегося клиента. 

(fiels-for-linking-4.png)

После сохранения ссылка на заявку автоматически записывается в карточку выбранного клиента в поле **Заявки**, которое указано как поле для связи.

(fiels-for-linking-5.png)

## Как работает связь при изменении значения поля

Связь между приложениями позволяет обновить список связанных элементов после редактирования данных. 

Допустим, при добавлении заявки сотрудник выбрал в поле **Основной клиент** неправильного клиента с похожим названием. Ссылка на заявку записалась в его карточку. Чтобы исправить данные, пользователю с [правом на редактирование элементов](360007527512.md#assign) в приложении **Заявки** нужно:

1. Открыть карточку заявки.

2. Нажать **Редактировать**.

3. Заменить элемент в поле **Основной клиент**.

4. Нажать **Сохранить**.

Редактировать элементы приложения **Клиенты** не нужно. Заявка автоматически удалится с карточки неправильного клиента и добавится в карточку нового.