Переброс данных между связанными каталогами
1. Введение
Если вы хотите автоматически перебрасывать значения однотипных полей из одного каталога в другой, то нужно писать для целевого каталога переброса сценарий автоматизаций.
Например: у вас есть каталог «Контакты» с полями «Фамилия», «Имя» и «Отчество». Также, у вас есть каталог «Заявки», в котором есть связь с каталогом «Контакты» и точно такие же поля «Фамилия», «Имя», «Отчество». Вы хотите заполнять поля в «Заявках» автоматически и пишете для этого сценарий переброса данных из связанного каталога «Контакты». В случае с одним каталогом — процесс несложный, но если каталогов становится несколько, то писать под каждый отдельный сценарий — нецелесообразно.
Процесс переброса данных — однотипный, поэтому в этом случае используется универсальный каталог с правилами переброса.
В каталоге правил фиксируется целевой каталог для переброса, связанный каталог из которого (или в который) нужно дублировать значения полей и правило сопоставления полей между каталогами.
2. Принцип работы

- При сохранении записи в каталоге с правилами сценарий обработки каталога проверяет типы полей для переброса в целевом каталоге и его связанном каталоге. Типы перебрасываемых полей в обоих каталогах должны быть идентичными. Если они не совпадают, то сценарий выдаст ошибку и завершится.
- Если проверка прошла успешно, в каталоге «События» создается новая запись (или обновляется существующая), которая будет отслеживать изменения указанных полей в выбранном каталоге.
- При необходимости можно обновить все ранее созданные записи согласно новому правилу переброса, выбрав соответствующий пункт в записи каталога правил.
- При изменении записи в выбранном каталоге сценарий переброса автоматически обновит запись в связанном каталоге.
3. Реализация
3.1. Открытие каталога каталогов
Бипиум хранит список всех каталогов в виде записей в служебном каталоге «Каталоги». Этот каталог по умолчанию скрыт в системе. Для того, чтобы реализовать механизм переброса значений полей нужно открыть отображение этого каталога.
ВНИМАНИЕ!
Каталог каталогов является системной сущностью, поэтому запрещено создавать/изменять/удалять записи в данном каталоге, а также вносить изменения в структуру каталога. Ручное внесение изменений может повлечь дальнейшую некорректную работу системы.
Восстановление работоспособности в этом случае выполняется на платной основе.
Вам необходимо отправить официальный запрос в техническую поддержку Бипиума по электронной почте: support@bpium.ru.
Что обязательно указать в письме:
- Суть запроса: напишите, что вам необходимо открыть «каталог каталогов».
- Домен компании: укажите точный адрес вашей системы (например, company.bpium.ru).
Процедура верификации:
Обратите внимание, что доступ к системным настройкам предоставляется только владельцам или администраторам системы. После отправки письма вам потребуется пройти процедуру верификации для подтверждения ваших прав на управление указанным доменом.
3.2. Создание каталога правил переброса
Создайте каталог «Правила». В этом каталоге будут собраны правила переброса значений полей между каталогами. Поля каталога нужно создавать в том же порядке, не нарушая последовательность id полей:

- Правило (секция)
- Каталог (Связанный каталог)
Описание: Содержит каталог, для которого будет применено правило переброса.
Настройки: Обязательно поле, связь с каталогом «Каталоги».
- Направление (статус)
Описание: Выборка целевого каталога для переброса: возможен переброс данных в связанную запись основного каталога или из связанного каталога в основной.
Значения: «Из связанной записи», «В связанную запись».
Настройки: Обязательное поле.
- ID поля связанного каталога (текст)
Описание: Содержит id поля связанного каталога в основном каталоге.
Настройки: Обязательное поле.
- Правила сопоставления полей (Контакт)
Описание: Содержит сопоставление полей основного и связанного каталогов, данные из которых будут синхронизироваться. В основном поле указываются id полей связанного каталога, в дополнительном – основного.
Настройки: Обязательное поле, телефон.
- Доп. параметры (Набор галочек)
Описание: Содержит дополнительные параметры синхронизации. По умолчанию параметр один - «Обновить предыдущие записи». Если он проставлен, то вместе с созданием правила синхронизации будут обновлены все предыдущие записи в целевом каталоге.
Настройки: По умолчанию: первый элемент.
- Событие (Связанный каталог)
Описание: Содержит в себе созданное по правилу переброса событие. Будет проставляться автоматически при создании правила.
Настройки: Связь с каталогом «События», редактируемое только через API.
3.3. События обработки каталога правил
В системном каталоге «События» нужно создать три события для каталога «Правила»:
- Событие: Создание/обновление событий по правилу

Событие отслеживает создание/изменение записей (уведомление) в каталоге правил и запускает сценарий создания или обновления события для целевого каталога.
В качестве сценария прикрепите сценарий создания/обновления события по правилу.
- Событие: Проверка типов связанных полей

Событие отслеживает создание/изменение записей (запрос) в каталоге правил и запускает сценарий проверки типов синхронизируемых полей. Сценарий проверяет типы полей в целевом и связанном каталогах из поля «Правила сопоставления полей» на соответствие друг другу. Если поля идентичны по типу, то сценарий завершается. Если тип полей не идентичен – выбивает ошибку и не дает сохранить запись в каталоге правил. В качестве сценария прикрепите сценарий проверки типов связанных полей.
- Событие: Проверка типа поля связанного каталога

Событие отслеживает создание/изменение записей (запрос) в каталоге правил и запускает сценарий проверки типа поля связанного каталога. Сценарий проверяет на заполненность поля «Каталог» и «ID связанного каталога» и не дает сохранить запись, если они заполнены некорректно. В качестве сценария прикрепите сценарий проверки типа поля связанного каталога.
3.4. Сценарии переброса данных
В системном каталоге «Сценарии» создайте две записи и приложите к ним файлы сценария:
Эти сценарии не связаны с событиями описанными выше. Они запускаются из создаваемого сценарием «Создание/обновление событий по правилу» (описан выше) событию. Это событие создается для целевого каталога при сохранении записи в каталоге правил.
Оба сценария идентичны по алгоритму работы, но различаются по направлению переброса данных. Первый прокидывает данные полей в целевой каталог ИЗ его связанной записи («Из связанной записи»). Второй прокидывает данные из целевого каталога В его связанную запись («В связанную запись»).
Сценарий переброса в связанную запись
Сценарий выглядит следующим образом:

Сценарий выполняет:
- Поиск правила сопоставления полей в каталоге правил (поле «Правила сопоставления полей»)
- Изменение значений полей в связанной записи по правилам сопоставления.
В сценарии нужно изменить:
- В компоненте «Ищем правило дублирования полей» в поле «Каталог» выберите ваш каталог с правилами переброса.
Сценарий переброса из связанной записи
Сценарий выглядит следующим образом:

Сценарий выполняет:
- Поиск правила сопоставления полей в каталоге правил (поле «Правила сопоставления полей»).
- Получение значения полей связанной записи.
- Изменение значений полей в основной записи по правилам сопоставления.
В сценарии нужно изменить:
- В компоненте «Ищем правило дублирования полей» в поле «Каталог» выберите ваш каталог с правилами переброса.
3.5. Сценарии обработки каталога правил
3.5.1. Сценарий создания/обновления события по правилу
Сценарий выглядит следующим образом:

Сценарий выполняет:
- Формирование списка отслеживаемых полей из поля «Правила сопоставления полей».
- Создание для указанного в поле «Каталог» нового события с одним из сценариев переброса («Из связанной записи», «В связанную запись») или изменение существующего события.
- Обновление предыдущих записей в каталоге, если был выбран доп. параметр «Обновить предыдущие записи».
В сценарии нужно изменить:
- В компоненте «Изменяем событие по правилу» выберите системный каталог «События».
- В компоненте «Создать событие для правила» выберите системный каталог «События».
- В компонента «Зафиксировать созданное событие» выберите каталог правил.
- В компоненте «Запуск процесса» выберите сценарий обновления предыдущих записей (описан ниже).
3.5.2. Сценарий обновления предыдущих записей
Если в каталоге правил выбран доп. параметр «Обновить предыдущие записи», то сценарий «Создания/обновления событий по правилу» запускает сценарий обновления предыдущих записей в целевом каталоге. Создайте в системном каталоге «Сценарии» новую запись и прикрепите к ней сценарий обновления предыдущих записей. Этот же сценарий нужно выбрать в компоненте «Запуск процесса» сценария, описанного выше.
Сценарий обновления предыдущих записей выглядит следующим образом:

Сценарий выполняет:
- Получение всех записей целевого каталога.
- Изменение данных в полученных записях по полю «Правила сопоставления полей» каталога правил.
3.5.3. Сценарий проверки типов связанных полей
Сценарий выглядит следующим образом:

Сценарий выполняет:
- Получение структуры основного и связанного каталога.
- Проверку типов полей в каталогах на соответствие друг другу.
- Если типы полей не совпадают, выводит сообщение с ошибкой и не дает сохранить запись.
3.5.4. Сценарий проверки типа поля связанного каталога
Сценарий выглядит следующим образом:

Сценарий выполняет:
- Получение структуры основного каталога.
- Проверку типа поля с id из «ID поля связанного каталога».
- Если тип поля не связанный каталог, то выводится сообщение с ошибкой и запись не сохраняется.
4. Тестирование
Для тестирования создайте два тестовых каталога с одинаковыми по типу полями, из которых планируется перебрасывать данные. В одном из каталогов добавьте поле типа «Связанный каталог» и свяжите его со вторым тестируемым каталогом.
В каталоге «Правила» создайте новую запись с направлением «Из связанной записи». Выберите тестовый каталог (основной), в котором есть связь со вторым тестовым каталогом. Введите id поля типа «Связанный каталог» выбранного каталога и укажите поля, которые должны синхронизироваться в поле «Правила сопоставления полей». В основное поле введите нужные поля из связанного каталога. В дополнительное – поля основного каталога. При необходимости, отметьте доп. параметр «Обновить предыдущие записи». Пример заполнения записи в каталоге «Правила»:

Если правила сопоставления каталогов верны, то сценарий создаст новую запись в каталоге «События»:

При создании новой записи в целевом каталоге с выбранным связанным каталогом, значения полей связанного каталога будут переброшены в целевой каталог:

В каталоге «Правила» измените направление на «В связанную запись». При необходимости, отметьте доп. параметр «Обновить предыдущие записи». Пример заполнения записи в каталоге «Правила»:

Если правила сопоставления каталогов верны, то сценарий изменит созданную ранее запись в каталоге «События»:

При изменении записи в целевом каталоге, значения полей будут переброшены в связанный каталог:
