Блог Горошко Андрея Bitrix24 Установить пользовательские настройки календаря calendar.user.settings.set

Установить пользовательские настройки календаря calendar.user.settings.set

Каждый PHP-разработчик, работающий с экосистемой Bitrix Framework, должен глубоко понимать работу её ключевых компонентов. В этой статье мы проведем подробный аудит темы «Установить пользовательские настройки календаря calendar.user.settings.set», проанализируем лучшие практики и покажем, как правильно использовать calendar.user.settings.set в реальных задачах.

Установить пользовательские настройки календаря calendar.user.settings.set

> Scope: calendar
>
> Кто может выполнять метод: любой пользователь

Метод устанавливает пользовательские настройки календаря для текущего пользователя.

Параметры метода

Название
тип
Описание
settings*
object
Объект со значениями пользовательских настроек календаря

Параметр settings {#settings}

view
string
Стандартное представление для календаря. Возможные значения:
— day — день
— week — неделя
— month — месяц
— list — список
meetSection
string
Календарь для приглашений
crmSection
string
Календарь для CRM
showDeclined
boolean
Показывать события, в которых пользователь отказался принять участие
denyBusyInvitation
boolean
Запрещать приглашать в событие, если время занято
collapseOffHours
string
Скрывать нерабочее время в календаре в недельном и дневном представлении. Возможные значения:
— Y — скрывать
— N — не скрывать
showWeekNumbers
string
Показывать номер недель. Возможные значения:
— Y — показывать
— N — не показывать
showTasks
string
Отображать задачи в календаре. Возможные значения:
— Y — отображать
— N — не отображать
syncTasks
string
Синхронизировать календарь задач. Возможные значения:
— Y — да
— N — нет
showCompletedTasks
string
Отображать завершенные задачи. Возможные значения:
— Y — отображать
— N — не отображать
lastUsedSection
string
Идентификатор календаря, который используется при создании событий, если в параметрах не передан идентификатор календаря.

Значение по умолчанию — false

sendFromEmail
string
E-mail для отправки почтовых приглашений
defaultSections
object
Настройки предустановленных календарей.

Ключем объекта настроек может быть:
— user[id] — тип Календарь пользователя c идентификатором пользователя. Например, user12 соответствует календарю пользователя с идентификатором 12
— group[id] — тип Календарь группы с идентификатором группы. Например, group36 соответствует календарю группы с идентификатором 36

Значением объекта является идентификатор календаря

syncPeriodPast
string
Количество месяцев для синхронизации в прошлом периоде
syncPeriodFuture
string
Количество месяцев для синхронизации в будущем периоде
defaultReminders
object
Объект со стандартными настройками напоминаний о событии

Объект defaultReminders {#defaultReminders}

Название
тип
Описание
fullDay
array
Массив стандартных настроек напоминаний для целодневных событий
withTime
array
Массив стандартных настроек напоминаний для событий с указанием времени

Объект настроек напоминания {#reminder-settings}

Название
тип
Описание
type
string
Временной тип напоминания. Возможные значения:
— min — минуты
— hour — часы
— day — дни
count
integer
Числовое значение временного промежутка

Примеры кода

  • cURL (Webhook)
    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"settings":{"view":"month","meetSection":"4","crmSection":"4","showDeclined":true,"denyBusyInvitation":false,"collapseOffHours":"N","showWeekNumbers":"N","showTasks":"Y","syncTasks":"N","showCompletedTasks":"N","lastUsedSection":"false","sendFromEmail":"","defaultSections":{"user1":"4","group6":"49"},"syncPeriodPast":"3","syncPeriodFuture":"12","defaultReminders":{"fullDay":[{"type":"min","count":15}],"withTime":[{"type":"min","count":50}]}}}' \
    https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webbhook_here**/calendar.user.settings.set
  • cURL (OAuth)
    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"settings":{"view":"month","meetSection":"4","crmSection":"4","showDeclined":true,"denyBusyInvitation":false,"collapseOffHours":"N","showWeekNumbers":"N","showTasks":"Y","syncTasks":"N","showCompletedTasks":"N","lastUsedSection":"false","sendFromEmail":"","defaultSections":{"user1":"4","group6":"49"},"syncPeriodPast":"3","syncPeriodFuture":"12","defaultReminders":{"fullDay":[{"type":"min","count":15}],"withTime":[{"type":"min","count":50}]}},"auth":"**put_access_token_here**"}' \
    https://**put_your_bitrix24_address**/rest/calendar.user.settings.set
  • JS
    try
    {
    	const response = await $b24.callMethod(
    		'calendar.user.settings.set',
    		{
    			settings: {
    				view: 'month',
    				meetSection: '4',
    				crmSection: '4',
    				showDeclined: true,
    				denyBusyInvitation: false,
    				collapseOffHours: 'N',
    				showWeekNumbers: 'N',
    				showTasks: 'Y',
    				syncTasks: 'N',
    				showCompletedTasks: 'N',
    				lastUsedSection: 'false',
    				sendFromEmail: '',
    				defaultSections: {
    					user1: '4',
    					group6: '49'
    				},
    				syncPeriodPast: '3',
    				syncPeriodFuture: '12',
    				defaultReminders: {
    					fullDay: [
    						{
    							type: 'min',
    							count: 15
    						}
    					],
    					withTime: [
    						{
    							type: 'min',
    							count: 50
    						}
    					]
    				}
    			}
    		}
    	);
    	
    	const result = response.getData().result;
    	console.log('Result:', result);
    	// Нужная вам логика обработки данных
    	processResult(result);
    }
    catch( error )
    {
    	console.error('Error:', error);
    }
  • PHP
    try {
        $response = $b24Service
            ->core
            ->call(
                'calendar.user.settings.set',
                [
                    'settings' => [
                        'view'              => 'month',
                        'meetSection'       => '4',
                        'crmSection'        => '4',
                        'showDeclined'      => true,
                        'denyBusyInvitation' => false,
                        'collapseOffHours'  => 'N',
                        'showWeekNumbers'   => 'N',
                        'showTasks'         => 'Y',
                        'syncTasks'         => 'N',
                        'showCompletedTasks' => 'N',
                        'lastUsedSection'   => 'false',
                        'sendFromEmail'     => '',
                        'defaultSections'   => [
                            'user1'  => '4',
                            'group6' => '49'
                        ],
                        'syncPeriodPast'    => '3',
                        'syncPeriodFuture'  => '12',
                        'defaultReminders'  => [
                            'fullDay'  => [
                                [
                                    'type'  => 'min',
                                    'count' => 15
                                ]
                            ],
                            'withTime' => [
                                [
                                    'type'  => 'min',
                                    'count' => 50
                                ]
                            ]
                        ]
                    ]
                ]
            );
    
        $result = $response
            ->getResponseData()
            ->getResult();
    
        echo 'Success: ' . print_r($result, true);
        // Нужная вам логика обработки данных
        processData($result);
    
    } catch (Throwable $e) {
        error_log($e->getMessage());
        echo 'Error setting user calendar settings: ' . $e->getMessage();
    }
  • BX24.js
    BX24.callMethod(
        'calendar.user.settings.set',
        {
            settings: {
                view: 'month',
                meetSection: '4',
                crmSection: '4',
                showDeclined: true,
                denyBusyInvitation: false,
                collapseOffHours: 'N',
                showWeekNumbers: 'N',
                showTasks: 'Y',
                syncTasks: 'N',
                showCompletedTasks: 'N',
                lastUsedSection: 'false',
                sendFromEmail: '',
                defaultSections: {
                    user1: '4',
                    group6: '49'
                },
                syncPeriodPast: '3',
                syncPeriodFuture: '12',
                defaultReminders: {
                    fullDay: [
                        {
                            type: 'min',
                            count: 15
                        }
                    ],
                    withTime: [
                        {
                            type: 'min',
                            count: 50
                        }
                    ]
                }
            }
        }
    );
  • PHP CRest
    require_once('crest.php');

    $result = CRest::call(
        'calendar.user.settings.set',
        [
            'settings' => [
                'view' => 'month',
                'meetSection' => '4',
                'crmSection' => '4',
                'showDeclined' => true,
                'denyBusyInvitation' => false,
                'collapseOffHours' => 'N',
                'showWeekNumbers' => 'N',
                'showTasks' => 'Y',
                'syncTasks' => 'N',
                'showCompletedTasks' => 'N',
                'lastUsedSection' => 'false',
                'sendFromEmail' => '',
                'defaultSections' => [
                    'user1' => '4',
                    'group6' => '49'
                ],
                'syncPeriodPast' => '3',
                'syncPeriodFuture' => '12',
                'defaultReminders' => [
                    'fullDay' => [
                        [
                            'type' => 'min',
                            'count' => 15
                        ]
                    ],
                    'withTime' => [
                        [
                            'type' => 'min',
                            'count' => 50
                        ]
                    ]
                ]
            ]
        ]
    );

    echo '<PRE>';
    print_r($result);
    echo '</PRE>';

Обработка ответа

HTTP-статус: 200

{
    "result": true,
    "time": {
        "start": 1733318565.183275,
        "finish": 1733318565.695058,
        "duration": 0.5117831230163574,
        "processing": 0.29406094551086426,
        "date_start": "2024-12-04T13:22:45+00:00",
        "date_finish": "2024-12-04T13:22:45+00:00"
    }
}

Возвращаемые данные

Название
тип
Описание
result
boolean
Возвращает true в случае успешного выполнения

Обработка ошибок

HTTP-статус: 400

{
    "error": "",
    "error_description": "Не задан обязательный параметр "settings" для метода "calendar.user.settings.set""
}

Возможные коды ошибок

КодСообщение об ошибкеОписание
Пустая строкаНе задан обязательный параметр «settings» для метода «calendar.user.settings.set»Не передан обязательный параметр settings
  • [](./index)
  • [](./calendar-settings-get)
  • [](./calendar-user-settings-get)

💡 Экспертное мнение и рекомендации

Ключевые выводы по теме «Установить пользовательские настройки календаря calendar.user.settings.set»:

Использование современных стандартов D7 при работе с calendar.user.settings.set позволяет писать чистый, масштабируемый и безопасный код. Не забывайте обрабатывать исключения (try/catch) и проверять права доступа текущего пользователя перед выполнением критических операций.

Похожая задача в бизнесе?

Помогу автоматизировать процессы и внедрить ИИ

Меня зовут Андрей Горошко. Я Full-stack разработчик и эксперт по 1С-Битрикс. Настраиваю CRM Битрикс24, разрабатываю защищенные API и создаю умных ИИ-агентов для автоматизации рутины.

Related Post

Получить список цен по фильтру catalog.price.listПолучить список цен по фильтру catalog.price.list

При разработке и поддержке проектов на платформе 1С-Битрикс критически важно использовать современные стандарты D7 API. В этом руководстве мы детально изучим тему «Получить список цен по фильтру catalog.price.list», разберем архитектурные

Добавить единицу измерения crm.measure.addДобавить единицу измерения crm.measure.add

Оптимизация производительности и безопасности — залог успешного проекта на 1С-Битрикс. Данный материал посвящен практическому применению «Добавить единицу измерения crm.measure.add». Мы подготовили подробный разбор принципов работы и развернутые примеры интеграции. Добавить

Получить товарные позиции предложения crm.quote.productrows.getПолучить товарные позиции предложения crm.quote.productrows.get

Эффективная интеграция и кастомизация функционала в Битрикс24 часто требует работы на уровне API. Сегодня мы подробно рассмотрим «Получить товарные позиции предложения crm.quote.productrows.get». Вы узнаете экспертные методики работы с crm.quote.productrows.get и