Документация для разработчиков
Темная тема

Установить набор дополнительных контентных блоков в дело

Scope: crm Права на выполнение: REST Приложение

Описание и параметры

Метод crm.activity.layout.blocks.set позволяет REST приложениям устанавливать набор дополнительных контентных блоков в дело.


Установка нового набора дополнительных контентных блоков в дело будет стирать ранее добавленный набор в рамках одного приложения.


Установка набора дополнительных контентных блоков не может быть применена к:

  • Конфигурируемому делу
  • Делу, тип которого является устаревшим

Параметры

Обязательные параметры отмечены *

Параметр
тип
Описание
entityTypeId*
integer
Идентификатор типа объекта CRM, к которому привязано дело
entityId*
integer
Идентификатор объекта CRM, к которому привязано дело
activityId*
integer
Идентификатор дела
layout*
RestAppLayoutDto
Объект, описывающий набор дополнительных контентных блоков

Примеры кода

В дело с id = 8, привязанного к сделке с id = 4 установим следующий набор дополнительных контентных блоков:

  1. Текст
  2. Длинный многострочный текст
  3. Ссылка
  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 должно быть заполнено.

Также метод отдает ошибки, связанные с неправильной структурой набора контентных блоков. Подробности можно узнать в тексте ошибки.



© «Битрикс», 2001-2024, «1С-Битрикс», 2024