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

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

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