Задать вопрос
Afres
@Afres
Product Owner

Как запустить бизнес-процесс в Битрикс 24 на изменение определенного поля?

Есть поле типа "Список" у контакта в Битрикс24, как запустить бизнес-процесс только при изменении данного поля?

Пример: менеджер зашел в контакт и поменял в списке "Группа клиента" значение с "Группа 1" на значение "Группа 2".
При сохранении контакта должен сработать бизнес-процесс. И чтобы при изменении других полей в контакте данный бизнес-процесс не запускался.
  • Вопрос задан
  • 2130 просмотров
Подписаться 1 Средний 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
private static $isFieldChanged = false;
 
/**
 * Событие перед обновлением контакта
 **/
public static function handleOnBeforeContactUpdae(&$fields)
{
	//Если поле присутствует в массиве обновления
	if(array_key_exists('UF_CODE', $fields))
	{
		//Проверяем его текущее значение
		$currentContact = \Bitrix\Crm\ContactTable::getRow([
			'filter' => [
				'ID' => $fields['ID']
			],
			'select' => ['UF_CODE']
		]);
		
		if($currentContact['UF_CODE'] != $fields['UF_CODE'])
		{
			static::$isFieldChanged = true;
		}
		
	}
}

/**
 * Событие после обновления контакта
 **/
public static function handleOnAfterContactUpdae(&$fields)
{
	if(static::$isFieldChanged === true)
	{
		static::$isFieldChanged = false;
		// Запускаем наш бизнес-процесс
		...
	}
}
Ответ написан
Комментировать
@cudu
java developer
Я работаю в облачной версии, потому в моем случае я иду от обратного: я закрываю на изменение все поля и создаю процесс(ы) на изменение документа. Допустим, в вашем случае создать отдельный процесс для изменение поля Группа(а может быть дополнить и другими полями, которые вы хотели бы менять таким образом).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы