Настройка показа полей в зависимости от значений других полей. Все настройки хранятся на вашем портале Битрикс24.
Логика «при каком значении триггера какие поля показывать» задаётся здесь: нажмите «Добавить настройку зависимых полей» → в открывшемся окне выберите поле-триггер → нажмите «+ Ветка по значению» и для каждого значения триггера укажите, какие поля показывать. Можно добавить несколько веток и вложенные условия (цепочка из 2–3 списков и более).
Где это работает: правила из этого блока действуют только во вкладке «Зависимые поля» в карточке CRM — не в левой колонке основной формы. После сохранения настройки обязательно нажмите ниже «Добавить зависимые поля в карточку» (блок A) и проверяйте результат на этой вкладке.
Есть два способа вывода — выберите подходящий:
После настройки нажмите «Добавить зависимые поля в карточку» — во вкладке карточки откроется виджет. При дублях вкладок: «Очистить вкладки» → F5 → «Добавить зависимые поля в карточку». Основное хранилище — портал Битрикс24; копия правил по домену сохраняется на сервере приложения.
Создаёт пользовательское поле специального типа, которое само показывается или скрывается в зависимости от значения поля-триггера. Поле появляется в общей раскладке карточки CRM (как стандартное поле), оператор не уходит во вкладку. Значение хранится в Битрикс24 (стандартное UF-поле); приложение только управляет показом.
Чтобы поле появилось в раскладке карточки сущности, после создания откройте любую карточку сущности и через «Выбрать поле» добавьте созданное поле в нужный раздел (или используйте «Создать раздел»). После этого настройки раскладки сохранятся для всех карточек данной сущности.
Выберите поле-триггер и для каждого его значения укажите, какие поля показывать дальше. Можно добавлять вложенные ветвления.
Ниже: при каком значении триггера какие поля показывать. Тип ввода (дата, список, число…) подставится после выбора поля.
Поле будет автоматически создано в выбранной сейчас сущности (см. блок «Сущность CRM» вверху). Видимость поля определяется значением поля-триггера: при подходящем значении поле появляется в карточке, иначе — пустая ячейка.
Полезно, когда поле должно появляться в самом начале (пока оператор не выбрал значение триггера).
Удерживайте Ctrl (⌘ на macOS) для выбора нескольких значений.
Когда условие срабатывает и поле появляется в карточке, оно будет помечено красным и подсвечено как обязательное. Если оставить пустым — оператор увидит ошибку у поля.
rest_105_df, где 105 — это внутренний номер). Теперь проверка использует тот же тип, что и при создании поля, и дополнительно сверяется с реальным списком зарегистрированных типов от Битрикс24 — поле считается нашим, если у его типа handler-адрес ведёт на наш домен.400 Handler already binded в журнале сетевых запросов. Раньше при каждом открытии приложение пыталось заново привязать вкладки в карточках, и Битрикс отвечал ошибкой (мы её ловили, но в Network-логе клиента и ИБ-сервиса это выглядело как сбой). Теперь приложение сначала проверяет список уже привязанных мест встраивания и привязывает только недостающие — журнал чистый.Указан неверный пользовательский тип», и поле не создавалось. Теперь многострочное текстовое поле корректно создаётся в любой сущности — лиды, сделки, контакты, компании и смарт-процессы.[df-inline]. Если что-то не работает — откройте F12 → Console и пришлите вывод, мы быстрее поможем.В карточке CRM (Лид, Сделка, Контакт, Компания, Смарт-процесс) поля сами появляются и скрываются в зависимости от того, что менеджер выбрал в другом поле. Классический пример: при выборе в поле «Причина отказа» определённого значения снизу появляется поле «Комментарий к отказу» — оператору не нужно лишний раз думать «нужно заполнить или нет». Все настройки хранятся на вашем портале Битрикс24.
Частая ошибка: настройки в блоке «Настройки зависимостей» не меняют видимость полей в основной форме карточки (слева). Они работают только после добавления вкладки (вариант A) и открытия вкладки «Зависимые поля». Для показа в левой колонке без вкладки — только inline (вариант B), с созданием нового поля приложения.
Подходит, когда нужно связать несколько уже созданных полей CRM (в том числе списки) или построить цепочку «А → Б → В».
Сценарий «Причина отказа → Комментарий» (как у клиента):
Управление inline-правилами — внизу блока «B. Inline-поле…»: список созданных правил, для каждого — кнопка «Удалить» (правило показа). При удалении правила само поле в CRM остаётся — если оно больше не нужно, удалите его в Битрикс24 вручную, чтобы случайно не потерять данные.
Это цепочка, а не два независимых правила. Пример: основное поле (1) — «Тип», при значении «Отказ» показываем поле (2) «Причина отказа». Внутри этой ветки нажимаете «+ Вложенное условие» и выбираете второе поле-триггер — то же поле (2) «Причина отказа»: при значении «Другое» показываем поле (3) «Комментарий». В карточке: выбрали «Тип» = «Отказ» → показалось поле «Причина отказа»; выбрали в нём «Другое» → дополнительно показалось «Комментарий». То есть поле 2 зависит от поля 1, поле 3 зависит от поля 2.
В Битрикс24 «Лид» — это одна сущность, а «Первичный лид» и «Повторный лид» — это направления (категории) одной и той же сущности «Лид». То же самое для сделок: «Продажа услуг», «Продажа товаров» и т.д. — это категории сделки. Что это значит для приложения:
Краткий чек-лист настройки «Причина отказа → Комментарий к отказу» с нуля для двух направлений лидов:
Это особенность того, как Битрикс24 встраивает кастомные поля. Само поле работает в отдельном маленьком iframe, и Битрикс не передаёт нам события «значение другого поля карточки изменилось». Приложение раз в 1,5–3 секунды само опрашивает текущее значение триггера и при изменении показывает/скрывает зависимое поле. Поэтому небольшая задержка — это нормально. В первую минуту после открытия карточки опрос идёт чаще (1,5 с), потом реже (3 с).
Важное уточнение про режим редактирования карточки. Если оператор поменял значение триггера в дропдауне, но ещё не нажал «Сохранить» внизу карточки — новое значение хранится только в форме на экране, в БД его пока нет. Битрикс не разрешает встроенным полям приложений читать «несохранённые» значения других полей. Поэтому приложение увидит новое значение только после нажатия «Сохранить». На этот случай в плейсхолдере скрытого поля сразу появляется подсказка «Нажмите Сохранить в карточке».
Также в плейсхолдере есть кнопка «↻ Обновить» — если уверены, что значение уже сохранено, но поле не обновилось, кликните её для мгновенной перепроверки.
Polling приостанавливается, если вкладка браузера свёрнута — экономит запросы и батарею. Когда вы вернётесь на вкладку, опрос продолжится с обычной частотой.
/rest/ (см. раздел «Информация для ИТ/ИБ-службы»).Не нужно делать много скриншотов. Нажмите кнопку ниже — приложение автоматически соберёт максимум технической информации (версия, права, портал, тип поля, привязки, правила и т.д.). Текст скопируется в буфер обмена — просто вставьте его в обращение в поддержку. Это заметно ускорит решение вопроса.
В отчёт не попадают содержимое сделок/лидов и персональные данные клиентов — только техническая информация о настройке приложения.
Если ваш Битрикс24 закрыт от внешнего интернета (reverse proxy, allow-list, корпоративный фаервол), для работы приложения нужно разрешить двусторонний обмен между сервером Битрикс24 и сервером приложения. Важно: портал (особенно коробочная версия) должен иметь доступ по HTTPS к серверу нашего приложения — без этого Битрикс не сможет зарегистрировать тип поля и inline-поля работать не будут.
Заявка для ИТ/ИБ (можно скопировать):
Прошу внести следующий домен / IP-адреса для работоспособности приложения на портале Битрикс24:
dependent-fields.safekit.tech (рекомендуется выполнять резолв по домену, так как IP может меняться; актуальные IP на текущий момент — ниже)159.194.219.102, 159.194.209.127, 95.79.129.155, 132.243.239.15880/443Для работы приложения «Зависимые поля» требуется обеспечить двусторонний обмен данными между сервером Битрикс24 (внутри контура) и сервером приложения (dependent-fields.safekit.tech). Приложение реализовано по классической модели Bitrix24 REST API (self-hosted app).
Исходящий трафик (Outgoing) — от клиента к серверу приложения:
widget.php, JS-модули и стили с домена dependent-fields.safekit.tech. Без этого доступа вкладка приложения будет пустой или выдаст ошибку.Входящий трафик (Incoming) — от сервера приложения к порталу:
crm.item.update или userfieldtype.add). Это необходимо, чтобы приложение могло скрыть или показать поле в интерфейсе CRM на основе заданной логики.AUTH_ID. Сервер приложения проверяет валидность сессии, обращаясь к порталу клиента.Доступ требуется для:
Настройки (логика скрытия полей) хранятся в зашифрованном виде в app.option самого портала клиента, а внешний сервер используется преимущественно как «движок» для исполнения этой логики.
Технические уточнения: на стороне портала приложение обращается только к пути https://<домен-вашего-портала>/rest/*; к /bitrix/*, /admin/*, /upload/*, /disk/*, /im/* и прочим внутренним адресам обращений нет. Обновление OAuth-токена идёт на облачный сервис самого Битрикса https://oauth.bitrix.info/oauth/token/ (не ваш сервер). WebSocket-соединений, длинных коннектов и постоянных пуллов приложение не использует — только короткие синхронные HTTPS-вызовы. IP сервера приложения может меняться, поэтому в allow-list предпочтительно указывать домен с резолвом; если нужен фиксированный IP — напишите в нашу поддержку.