Каким образом подготовить пол в Лиде для повторной конвертации?

Здравствуйте! <br/> <br/> У меня есть задача, с которой нужна помощь. Есть кастомное поле UF_CRM_1712022125, которое является обязательным и заполняется менеджером при конвертации. Мне нужно, чтобы это поле очищалось в следующих случаях: если менеджер нажал кнопку «конвертировать как успешный», открыл карточку компании, но понял, что допустил ошибку или система выдала ошибку, после чего закрыл карточку компании и вернулся в раздел «Лид». При повторном нажатии кнопки «конвертировать», поле UF_CRM_1712022125 должно вновь стать пустым и доступным для заполнения. <br/> <br/> Стоит отметить, что функция convert вызывается каждый раз, что будет приводить к очищению поля даже при первой попытке конвертации. Я рассматриваю вариант создания дополнительного поля-счетчика для отслеживания, когда именно следует очищать основное поле. 
  • 1 апреля 2025 г. 16:25
Ответы на вопрос 2
Для решения вашей задачи по подготовке поля в Лиде для повторной конвертации, вам нужно учитывать условия, при которых поле должно очищаться и когда — оставаться заполненным. Вот несколько шагов, которые могут помочь вам организовать это:

1. **Создание счетчика**: Как вы уже правильно заметили, имеет смысл создать дополнительное кастомное поле, например UF_CRM_CONVERT_ATTEMPTS, которое будет считать количество попыток конвертации. Это поле можно будет использовать для определения, нужно ли очищать основное поле UF_CRM_1712022125.

2. **Логика конвертации**:
   - При первой попытке конвертации вы устанавливаете значение UF_CRM_CONVERT_ATTEMPTS в 1.
   - Если конвертация прошла успешно, вы можете оставить значение UF_CRM_CONVERT_ATTEMPTS как есть или обнулить его.
   - Если произошла ошибка и менеджер вернулся в раздел Лид, вы можете увеличить значение UF_CRM_CONVERT_ATTEMPTS на 1.

3. **Проверка поля перед конвертацией**:
   - Перед вызовом функции `convert` проверьте значение поля UF_CRM_CONVERT_ATTEMPTS.
   - Если оно равно 1 (первая попытка), вы делаете конвертацию, но UF_CRM_1712022125 остается заполненным.
   - Если значение UF_CRM_CONVERT_ATTEMPTS больше 1, вы очищаете UF_CRM_1712022125 перед конвертацией.

4. **Триггер для обнуления счетчика**: Вам нужно будет добавить логику, которая будет обнулять UF_CRM_CONVERT_ATTEMPTS, когда конвертация успешна или когда идет конвертация в другой статус.

### Пример кода на PHP (псевдокод):
```php
// Обработка события на конвертацию
function handleConversion($leadId) {
    $lead = getLead($leadId); // Получаем данные лида
    $conversionAttempts = $lead['UF_CRM_CONVERT_ATTEMPTS'] ?? 0;

    if ($conversionAttempts > 1) {
        // Очищаем поле перед повторной попыткой конвертации
        updateLeadField($leadId, 'UF_CRM_1712022125', null);
    }

    // Логика конвертации
    $success = attemptToConvert($leadId);

    if ($success) {
        // Конвертация успешна, обнуляем счетчик попыток
        updateLeadField($leadId, 'UF_CRM_CONVERT_ATTEMPTS', 0);
    } else {
        // Увеличиваем счетчик попыток
        updateLeadField($leadId, 'UF_CRM_CONVERT_ATTEMPTS', $conversionAttempts + 1);
    }
}
```

### Убедитесь:
- Проверяйте правильность получения и обновления значений кастомных полей.
- Обработайте все возможные состояния (успех, ошибка) и возможные исключения.

С данным подходом вы сможете контролировать состояние вашего поля и обрабатывать нужные условия для повторной конвертации данных лида.
А если поле проверять иначе:=? 
Можно даже не делать его обязательным
На стадию - Успех, конвертация в Сделку поставить БП.
В этом БП получение значения из поля и передача в автоматизацию.
В автоматизации просим пользователя проверить (при необходимости заполнить) и подтвердить верность поля.

Всё. Каждый раз при конвертации система будет требовать проверить значение. В текст автоматизации перенести то, что нужно для проверки - например ФИО клиента...
Похожие вопросы