Двусторонние связи без ручного создания сценариев
Когда две записи должны ссылаться друг на друга, недостаточно настроить связанное поле только в одном каталоге. При изменении записи необходимо обновить обратную связь, а при удалении — убрать ее с другой стороны.
Для одной пары каталогов такую автоматизацию можно настроить вручную. Но если связей становится несколько, появляется большое количество однотипных событий и сценариев. В демонстрации Бипиума показано, как заменить такую схему автоматическим созданием событий на основании отдельного каталога правил.

Что хранит каталог двусторонних связей
Первым шагом создается каталог правил. В каждой его записи описывается одна двусторонняя связь.
Для первого каталога указываются его ID и ID связанного поля. Аналогичные значения задаются для второго каталога. Отдельно сохраняется информация о событиях, которые будут созданы для обеих сторон.
В каталоге также предусмотрены статус обработки и описание ошибки. Это дает возможность видеть результат применения правила непосредственно в его записи.
Проверка структуры каталогов
После создания записи запускается событие обработки каталога двусторонних связей. Сценарий получает структуры указанных каталогов и проверяет, что необходимые поля существуют и имеют подходящий тип.
Дополнительно проверяется, что связанное поле действительно указывает на нужный каталог и допускает связь только с одним каталогом. Если проверка проходит успешно, сценарий создает события для обеих сторон.
Один обработчик вместо отдельных сценариев
После автоматического создания событий начинает работать общий сценарий обработки двусторонних связей. Он получает сработавшее событие, находит соответствующее правило и извлекает из него ID каталогов и полей.
За счет этого сценарий не содержит жестко заданных идентификаторов конкретной пары каталогов. Новая связь задается новой записью в каталоге правил.
Пример: «Заявки» и «Товары»
В демонстрации рассматривается связь между каталогами заявок и товаров. До создания правила события для этой связи отключены, поэтому выбранный товар не появляется автоматически в обратном поле каталога товаров.
После создания правила система сама создает необходимые события. Пользователь выбирает товар в заявке, сохраняет запись, и автоматизация добавляет обратную связь.
На этом этапе для каждой новой пары каталогов не требуется создавать отдельный комплект сценариев.
Когда такой подход полезен
Подход особенно актуален, когда в системе существует несколько однотипных двусторонних связей. Вместо копирования автоматизации для каждой пары каталогов параметры связи хранятся отдельно, а обработка выполняется общим сценарием.
Это также упрощает изменение самой логики: если механизм обработки связей меняется, его не требуется дублировать в каждом отдельном сценарии.
Практическая демонстрация
Полная настройка показана на форуме Бипиума в материале «Двусторонние связи между каталогами». В публикации приведены практический пример и файлы сценариев.
