1 5000,00 

Есть вопрос? Звоните!

+7 923 192-46-05

Привязка элемента смарт-процесса к сделке (коробка)

25.04.2022
3686
Привязка элемента смарт-процесса к сделке

У клиента был настроен смарт процесс, который запускался из сделки. По каким-то причинам использовалась не стандартная привязка сделки и смарт-процесса, а было создано пользовательское поле Сделка типа Привязка к элементу CRM. Элемент смарт-процесса создавался отдельным процессом в БП этого типа смарт-процессов (Настройки —> Роботы и бизнес-процессы —> Бизнес-процессы —> Смарт-процесс —> Список шаблонов).

Содержание

Задача: 

  1. Изменить привязку на стандартную при создании элемента смарт-процесса;
  2. Связать уже созданные элементы со сделками.

Стандартная привязка позволяет создавать сколько угодно элементов смарт-процесса, привязанных к сделке.

Создание элемента смарт-процесса

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

Настройки смарт-процесса

Откройте связи, там включите переключатель Привязать к этому смарт-процессу и выберите ниже сделку.

Настройки связей

Далее меняем в бизнес-процессе стадии сделки запуск бп создания элемента смарт-процесса на действие Создать элемент CRM.

Создание элемента смарт-процесса

Это действие уже связывает элемент смарт-процесса со сделкой, т.к. при создании есть соответствующее поле. Первый пункт задачи выполнен.

Привязка существующих элементов к сделкам

Я решила, что самый простой способ – SQL запрос. Рассмотрим таблицы, которые отвечают за смарт-процессы и связи:

  • b_crm_dynamic_items_191 — таблица с элементами смарт-процесса типа 191. На каждый тип смарт-процесса своя таблица.
  • b_crm_entity_relation — таблица связей сущностей.

  • b_crm_deal — таблица сделок.

 

В таблице b_crm_dynamic_items_191 было пользовательское поле со сделкой, им можно воспользоваться для привязки. 

ID сделок

Но ID сделки записывалось в поле с префиксом D_, поэтому от него сначала нужно избавиться.

 

Есть два варианта выполнить запрос:

  1. Подключить любую удобную программу для работы с SQL к базе данных;
  2. Выполнить запрос в административной панели Настройки —> SQL запрос.

Т.к. это разовое мероприятие, то быстрее и проще 2й вариант.

SQL запрос

Выполняем запрос для удаления префикса:

функция SUBSTRING возвращает строку по заданным параметрам.

  1. Строка, которую надо модифицировать
  2. Символ, с которого читать строку 
  3.  Количество символов, которые нужно возвратить (т.к. нам нужна вся строка с 3го символа, то можно этот параметр опустить)
				
					UPDATE b_crm_dynamic_items_191
SET UF_CRM_1_1632041040 = SUBSTRING(UF_CRM_1_1632041040, 3)
where UF_CRM_1_1632041040 like 'D_%'
				
			
Запрос успешно выполнен

Введите запрос и нажмите Выполнить запрос. Если все успешно, то внизу появится соответствующее сообщение. В результате мы получим ID сделок без префиксов. Это не повлияет на отображение сделки в карточке элемента смарт-процесса.

Сделки без префиксов

Теперь в таблицах есть общее значение, по которому их можно сопоставить. Чтобы появилась связь между сделками и элементами смарт-процесса, надо добавить записи в таблицу b_crm_entity_relation. Эта таблица имеет следующие поля:

  • SRC_ENTITY_TYPE_ID — тип сущности (2 — сделка),
  • SRC_ENTITY_ID — ID сущности,
  • DST_ENTITY_TYPE_ID — тип смарт-процесса,
  • DST_ENTITY_ID — ID смарт-процесса,
  • RELATION_TYPE — тип связи.

Соответственно нам нужно добавить записи в таком же виде.

Таблица связей

Сформируем запрос, который найдет все непривязанные пары:

				
					SELECT 
'2',
D.ID as deal, 
'191', 
S.ID as smart,
'BINDING' 
FROM b_crm_dynamic_items_191 AS S, b_crm_deal AS D 
where D.ID=S.UF_CRM_1_1632041040 and D.CATEGORY_ID=4 and (D.ID not in (select SRC_ENTITY_ID from b_crm_entity_relation where SRC_ENTITY_TYPE_ID=2))
order by D.ID desc
				
			

Т.к. мне нужна определенная воронка сделок, то я добавила фильтрацию по категории сделки CATEGORY_ID. Когда мы убедились, что данные верны, можно добавлять их в таблицу связей.

				
					INSERT INTO b_crm_entity_relation (SRC_ENTITY_TYPE_ID,SRC_ENTITY_ID,DST_ENTITY_TYPE_ID,DST_ENTITY_ID,RELATION_TYPE)
SELECT 
'2',
D.ID as deal, 
'191', 
S.ID as smart,
'BINDING' 
FROM b_crm_dynamic_items_191 AS S, b_crm_deal AS D 
where D.ID=S.UF_CRM_1_1632041040 and D.CATEGORY_ID=4 and (D.ID not in (select SRC_ENTITY_ID from b_crm_entity_relation where SRC_ENTITY_TYPE_ID=2))
order by D.ID desc
				
			

Готово!

Читайте также

5 4 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
Авторизация
*
*
Регистрация
*
*
*
Пароль не введен
Генерация пароля
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x
1
  • Товар добавлен в корзину
1
Корзина
Комментарий к задаче
Битрикс24. Активити «Комментарий к задаче». Лицензия (12 мес.)
Цена: 5000,00 
- +
5000,00