Структура конфигурируемого дела
Выберите инструмент для разработки с AI-агентом:
- используйте Битрикс24 Вайбкод, чтобы создать приложение для Битрикс24 по описанию задачи без знания языков программирования. Агент напишет код и разместит приложение на сервере без ручной настройки хостинга
- используйте MCP-сервер, чтобы разрабатывать интеграцию через REST API в своем проекте. Агент будет обращаться к официальной REST-документации
LayoutDto — верхнеуровневый объект, который описывает внешний вид записи таймлайна. Приложение собирает из него всю запись: иконку, заголовок с тегами, контентную область и нижнюю часть с кнопками и меню.
Объект передают в параметре layout методов crm.activity.configurable.add и crm.activity.configurable.update. Метод crm.activity.configurable.get возвращает ту же структуру в поле layout ответа.
При обновлении структура заменяется целиком, поля не объединяются. Передавайте layout полностью, даже если поменялся один блок.
Структура иерархическая: каждое поле LayoutDto — самостоятельный объект со своим набором полей, описанный на отдельной странице. Такие объекты называют DTO, Data Transfer Object.
LayoutDto описывает запись целиком и работает только для дел, которые создало само приложение. Чтобы добавить свои блоки к чужой записи таймлайна, используют другой объект — RestAppLayoutDto.

Scope:
crmКто может выполнять метод: пользователь с доступом на изменение элемента CRM, к которому привязано дело. Без такого доступа метод вернет ошибку
ACCESS_DENIED
Методы, которые принимают LayoutDto, работают только в контексте приложения. Вызов через входящий вебхук вернет ошибку ERROR_WRONG_CONTEXT.
Параметры объекта LayoutDto
Обязательные параметры отмечены *
|
Поле |
Описание |
|
icon* |
Иконка слева от записи |
|
header* |
Заголовок записи |
|
body* |
Основная контентная область записи |
|
footer |
Нижняя часть записи с блоком действий |
Как собрать структуру
- Заполните обязательные поля
icon,headerиbody, а если у записи есть действия — необязательныйfooterс кнопками и пунктами меню. - Содержимое записи соберите из контентных блоков — они лежат в
body.blocks. - Опишите реакцию на нажатия —
ActionDto. Этот объект принимают заголовок, теги, логотип, ссылки, кнопки и пункты меню. - Передайте готовую структуру в параметр
layoutметода crm.activity.configurable.add.
Тексты, которые видит пользователь, принимают тип textWithTranslation — их можно сразу передать на нескольких языках.
Поле scope у блоков, кнопок и пунктов меню скрывает элемент в браузере или в мобильном приложении. Со scope приложения оно не связано.
Ограничения структуры
|
Ограничение |
Код ошибки |
|
Не более двух тегов в заголовке |
|
|
Не более двух кнопок в нижней части |
|
|
Не более 20 контентных блоков в основной области |
|
|
Не более десяти пунктов меню и не более десяти разделов меню |
|
|
Ключи ассоциативных массивов |
|
|
Обязательное поле объекта не передано |
|
|
Передано поле, которого нет в описании объекта |
|
|
Значение поля не входит в список допустимых, например неизвестный тип тега |
|
|
В мультиязычном значении передан код языка, не установленного в Битрикс24 |
|
Полный перечень ошибок — на страницах crm.activity.configurable.add и crm.activity.configurable.update.
Пример объекта
Запись о входящем звонке: иконка, заголовок с тегом, клиент и ответственный в контентной области, кнопка открытия приложения и два пункта меню.
{
"icon": {
"code": "call-completed"
},
"header": {
"title": "Входящий звонок",
"tags": {
"status2": {
"type": "warning",
"title": "не расшифрован"
}
}
},
"body": {
"logo": {
"code": "call-incoming",
"action": {
"type": "redirect",
"uri": "/crm/deal/details/123/"
}
},
"blocks": {
"client": {
"type": "withTitle",
"properties": {
"title": "Клиент",
"inline": true,
"block": {
"type": "text",
"properties": {
"value": "ООО Рога и Копыта"
}
}
}
},
"responsible": {
"type": "lineOfBlocks",
"properties": {
"blocks": {
"name": {
"type": "link",
"properties": {
"text": "Сергей Востриков",
"bold": true,
"action": {
"type": "redirect",
"uri": "/crm/lead/details/789/"
}
}
},
"phone": {
"type": "text",
"properties": {
"value": "+7 999 888 7777"
}
}
}
}
}
}
},
"footer": {
"buttons": {
"aboutClient": {
"title": "О клиенте",
"action": {
"type": "openRestApp",
"actionParams": {
"clientId": 456
}
},
"type": "primary"
}
},
"menu": {
"showPostponeItem": false,
"items": {
"confirm": {
"title": "Подтвердить заявку",
"action": {
"type": "restEvent",
"id": "confirm",
"animationType": "loader"
}
},
"decline": {
"title": "Отклонить заявку",
"action": {
"type": "restEvent",
"id": "decline",
"animationType": "loader"
}
}
}
}
}
}