...

Проверка на наличии дублей

Тема в разделе "Примеры сценариев", создана пользователем ELMA365, 1 дек 2021.

  1. ELMA365

    ELMA365 Moderator

    При работе с большим количеством клиентов возникает необходимость обеспечить их уникальность в системе, то есть исключить появление дублей.

    Рассмотрим пример раздела для работы с клиентами в ELMA365.

    После того как менеджер по продажам завершил обработку потенциального клиента, он конвертирует его в контрагента.

    [​IMG]

    На данном этапе менеджер указывает ИНН контрагента.

    [​IMG]

    В бизнес-процессе установлен шлюз, в настройках которого добавлена служебная переменная (тип выбор Да/Нет) и сценарий. Сценарий проверяет, есть ли среди существующих элементов приложения контрагент с таким ИНН.

    [​IMG]

    [​IMG]

    Текст сценария:

    Код:
    
    // Проверка на наличие дублей контрагента
    async function isDuplicate(): Promise {
        
    // Ищем по всем элементам приложения "Контрагенты"
        
    const count await Namespace.app.clients.search()
            .
    where(=> f.inn.eq(Context.data.inn!))
            .
    count();
        return 
    count 0;
    }
    Сценарий осуществляет поиск по всем элементам приложения «Контрагент», в которых ИНН совпадает с тем, который указал менеджер. Затем, если такие совпадения найдены, сценарий записывает значение «Да» (true) в служебную переменную. В противном случае, переменной присваивается значение «Нет» (false).

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

    [​IMG]
  2. kgorshkov921

    kgorshkov921 Новичок

    Доброго дня!
    Правильно ли я понимаю, что поиск по данному скрипту будет производиться по всем элементам приложения, даже по удаленным?
  3. Judjin

    Judjin Новичок

    Да
    Но можно в условии поставить же еще и фильтр на поиск неудаленных элементов
    f.__deletedAt.eq(null)