Установить набор дополнительных контентных блоков в дело
Scope: crm Права на выполнение: REST Приложение
Описание и параметры
Метод crm.activity.layout.blocks.set позволяет REST приложениям устанавливать набор дополнительных контентных блоков в дело.
Установка нового набора дополнительных контентных блоков в дело будет стирать ранее добавленный набор в рамках одного приложения.
Установка набора дополнительных контентных блоков не может быть применена к:
- Конфигурируемому делу
- Делу, тип которого является устаревшим
Параметры
Обязательные параметры отмечены *
Параметртип |
Описание |
---|---|
entityTypeId*integer |
Идентификатор типа объекта CRM, к которому привязано дело |
entityId*integer |
Идентификатор объекта CRM, к которому привязано дело |
activityId*integer |
Идентификатор дела |
layout*RestAppLayoutDto |
Объект, описывающий набор дополнительных контентных блоков |
Примеры кода
В дело с id = 8
, привязанного к сделке с id = 4
установим следующий набор дополнительных контентных блоков:
- Текст
- Длинный многострочный текст
- Ссылка
- Блок с заголовком
- cURL (Webhook)
curl -X POST \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{"entityTypeId":2,"entityId":4,"activityId":8,"layout":{"blocks":{"block_1":{"type":"text","properties":{"value":"Здравствуйте!\nМы начинаем.","multiline":true,"bold":true,"color":"base_90"}},"block_2":{"type":"largeText","properties":{"value":"Здравствуйте!\nМы начинаем.\nМы продолжаем.\nМы все еще работаем над этим.\nМы продолжаем.\nМы близки к результату.\nДо свидания."}},"block_3":{"type":"link","properties":{"text":"Открыть сделку","bold":true,"action":{"type":"redirect","uri":"/crm/deal/details/123/"}}},"block_4":{"type":"withTitle","properties":{"title":"Заголовок","block":{"type":"text","properties":{"value":"Какое-то значение"}}}}}}' \ https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webbhook_here**/crm.activity.layout.blocks.set
- cURL (OAuth)
curl -X POST \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{"entityTypeId":2,"entityId":4,"activityId":8,"layout":{"blocks":{"block_1":{"type":"text","properties":{"value":"Здравствуйте!\nМы начинаем.","multiline":true,"bold":true,"color":"base_90"}},"block_2":{"type":"largeText","properties":{"value":"Здравствуйте!\nМы начинаем.\nМы продолжаем.\nМы все еще работаем над этим.\nМы продолжаем.\nМы близки к результату.\nДо свидания."}},"block_3":{"type":"link","properties":{"text":"Открыть сделку","bold":true,"action":{"type":"redirect","uri":"/crm/deal/details/123/"}}},"block_4":{"type":"withTitle","properties":{"title":"Заголовок","block":{"type":"text","properties":{"value":"Какое-то значение"}}}}}},"auth":"**put_access_token_here**"}' \ https://**put_your_bitrix24_address**/rest/crm.activity.layout.blocks.set
- JS
const layout = { blocks: { 'block_1': { type: "text", properties: { value: "Здравствуйте!\nМы начинаем.", multiline: true, bold: true, color: "base_90" } }, 'block_2': { type: "largeText", properties: { value: "Здравствуйте!\nМы начинаем.\nМы продолжаем.\nМы все еще работаем над этим.\nМы продолжаем.\nМы близки к результату.\nДо свидания." } }, 'block_3': { type: "link", properties: { text: "Открыть сделку", bold: true, action: { type: "redirect", uri: "/crm/deal/details/123/" } } }, 'block_4': { type: "withTitle", properties: { title: "Заголовок", block: { type: "text", properties: { value: "Какое-то значение" } } } } } }; BX24.callMethod( 'crm.activity.layout.blocks.set', { entityTypeId: 2, // Сделка entityId: 4, // ID Сделки activityId: 8, // ID Дела привязанного к данной сделке layout: layout, // Объект, описывающий набор дополнительных контентных блоков }, (result) => { if (result.error()) { console.error(result.error()); } else { console.info(result.data()); } }, );
- PHP
require_once('crest.php'); $result = CRest::call( 'crm.activity.layout.blocks.set', [ 'entityTypeId' => 2, 'entityId' => 4, 'activityId' => 8, 'layout' => [ 'blocks' => [ 'block_1' => [ 'type' => "text", 'properties' => [ 'value' => "Здравствуйте!\nМы начинаем.", 'multiline' => true, 'bold' => true, 'color' => "base_90" ] ], 'block_2' => [ 'type' => "largeText", 'properties' => [ 'value' => "Здравствуйте!\nМы начинаем.\nМы продолжаем.\nМы все еще работаем над этим.\nМы продолжаем.\nМы близки к результату.\nДо свидания." ] ], 'block_3' => [ 'type' => "link", 'properties' => [ 'text' => "Открыть сделку", 'bold' => true, 'action' => [ 'type' => "redirect", 'uri' => "/crm/deal/details/123/" ] ] ], 'block_4' => [ 'type' => "withTitle", 'properties' => [ 'title' => "Заголовок", 'block' => [ 'type' => "text", 'properties' => [ 'value' => "Какое-то значение" ] ] ] ] ] ] ] ); echo '
'; print_r($result); echo '
';
Внешний вид
Результатом примера выше будет дело:
Если дело содержит более одного набора дополнительных контентных блоков, то они будут выводиться в порядке их добавления.
В html верстке с помощью data-атрибутов явно выделено то, каким REST приложением был добавлен набор дополнительных контентных блоков:
data-app-name
: название REST приложенияdata-rest-client-id
: идентификатор REST приложения
Обработка ответа и ошибок
HTTP-статус: 200
Возвращает { success: true }
в случае успешной записи набора дополнительных контентных блоков, иначе null
.
{ "success": true }
Возможные коды ошибок
Код | Описание |
---|---|
ERROR_WRONG_CONTEXT | Вызов метода возможен только в контексте rest приложения |
OWNER_NOT_FOUND | Сущность, к которой привязано дело, не найдена |
NOT_FOUND | Дело не найдено |
ACCESS_DENIED | Доступ запрещен |
UNSUITABLE_ACTIVITY_TYPE_ERROR | Тип данного дела не подходит для добавления набора дополнительных контентных блоков |
FIELD_IS_REQUIRED | Поле blocks в RestAppLayoutDto должно быть заполнено. |
Также метод отдает ошибки, связанные с неправильной структурой набора контентных блоков. Подробности можно узнать в тексте ошибки.
Пользовательские комментарии
Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.Для этого нужно всего лишь авторизоваться на сайте
Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.
Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.