Как можно устранить ошибку «NotSupportedChoice», которая возникает при попытке добавить custom_fields_values в сущность Lead?

Здравствуйте! Я разработал логику создания сделки с использованием библиотеки amocrm-js. <br/> <br/> <pre><code class="javascript">async createLead(data: CreateLeadDto) {
  const leadData = {
    name: 'test',
    price: 0,
    custom_fields_values: [
      {
        field_id: 618311, 
        values: [{ value: 'test' }],
      }
    ],
    pipeline_id: 8720614,
    _embedded: {
      contacts: [{ id: 8763654 }],
    },
  };

  const lead = new this.client.Lead(leadData);

  await lead.save();
}</code></pre> <br/> <br/> Сделки успешно создаются, однако возникает проблема с добавлением custom_fields_values: <br/> <br/> <pre><code class="javascript">{
  "validation-errors": [
    {
      "request_id": "0",
      "errors": [
        {
          "code": "NotSupportedChoice",
          "path": "custom_fields_values.0.field_id",
          "detail": "The value you selected is not a valid choice."
        }
      ]
    }
  ],
  "title": "Bad Request",
  "type": "https://httpstatus.es/400",
  "status": 400,
  "detail": "Request validation failed"
}</code></pre> <br/> <br/> Я предполагаю, что ошибка NotSupportedChoice указывает на то, что значение field_id (в данном случае 618311) не распознается системой как допустимый выбор. Тем не менее, я точно создал это поле и его ID корректен. <br/> <br/> Пример добавления <a href="https://www.amocrm.ru/developers/content/crm_platform/leads-api?ysclid=m365oy3jeg604771015#leads-add" rel="nofollow">сделки из amacrm</a>: <br/> <br/> <pre><code class="javascript">[
    {
        "name": "Сделка для примера 1",
        "created_by": 0,
        "price": 20000,
        "custom_fields_values": [
            {
                "field_id": 294471,
                "v
  • 6 ноября 2024 г. 18:03
Ответы на вопрос 1
Ошибка `NotSupportedChoice`, возникающая при попытке добавить `custom_fields_values` в сущность Lead, действительно указывает на то, что указанный `field_id` не признан системой как допустимый выбор. Вот несколько шагов, которые вы можете предпринять, чтобы устранить эту ошибку:

1. **Проверьте существование поля:** Убедитесь, что поле с ID `618311` действительно существует в вашей аккаунте amoCRM. Это можно сделать через интерфейс amoCRM, перейдя в настройки полей и проверив, что поле с нужным ID доступно и активно.

2. **Проверьте тип поля:** Убедитесь, что значение, которое вы передаете (в данном случае `'test'`), соответствует ожидаемому типу для этого поля. Например, если поле является выпадающим списком, то должно быть передано одно из значений этого списка. Вам нужно проверить, какие значения поддерживаются для данного `field_id`.

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

4. **Используйте API для проверки полей:** Вы можете использовать метод API `GET /api/v4/leads/custom_fields` для получения списка всех пользовательских полей и их ID в вашей учетной записи. Это поможет вам убедиться, что `field_id` правильный и у вас есть доступ к нему.

   Пример запроса:
   ```javascript
   const customFields = await this.client.customFields.getAll();
   console.log(customFields);
   ```

5. **Удалите и заново создайте поле:** Если вы по-прежнему не можете найти проблему, попробуйте удалить это поле и создать его заново, чтобы обновить все связанные настройки.

6. **Логи и отладка:** Пройдите через остальные настройки и зависимости, которые могут быть связаны с тестируемой сделкой. Иногда другие поля могут вызывать конфликты или ошибки валидации.

Вот пример того, как можно получить пользовательские поля и их настройки:

```javascript
const fields = await this.client.customFields.getAll();
console.log(fields); // Вывод всех полей, включая их ID и типы
```

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