Блог Горошко Андрея Bitrix24 Обновить событие calendar.event.update

Обновить событие calendar.event.update

Эффективная интеграция и кастомизация функционала в Битрикс24 часто требует работы на уровне API. Сегодня мы подробно рассмотрим «Обновить событие calendar.event.update». Вы узнаете экспертные методики работы с calendar.event.update и научитесь избегать типичных ошибок начинающих разработчиков.

Обновить событие calendar.event.update

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

Метод обновляет существующее событие.

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

Название
тип
Описание
id
integer
Идентификатор события.

Получить идентификатор можно методом calendar.event.get или calendar.event.get.nearest

type
string
Тип календаря:
— user — календарь пользователя
— group — календарь группы
— company_calendar — календарь компании
ownerId
integer
Идентификатор владельца календаря.

Для календаря компании параметр ownerId имеет значение 0

from
datetime\
dateДата и время начала события.

Можно указать дату без времени. Для этого передайте значение Y в параметре skip_time

to
datetime\
dateДата окончания события.

Можно указать дату без времени. Для этого передайте значение Y в параметре skip_time

from_ts
integer
Дата и время в формате timestamp. Можно использовать вместо параметра from
to_ts
integer
Дата и время в формате timestamp. Можно использовать вместо параметра to
section
integer
Идентификатор календаря
name
string
Название события
skip_time
string
Передать значение даты без времени в параметрах from и to. Возможные значения:
— Y — использовать только дату
— N — использовать дату и время

Формат даты по стандарту ISO-8601

timezone_from
string
Часовой пояс даты и времени начала события. По умолчанию — таймзона текущего пользователя.

Значение нужно передавать в виде строки, например, Europe/Riga.

Особенности работы с часовыми поясами

timezone_to
string
Часовой пояс даты и времени окончания события. Значение по умолчанию — таймзона текущего пользователя.

Значение нужно передавать в виде строки, например, Europe/Riga.

Особенности работы с часовыми поясами

description
text
Описание события
color
string
Цвет фона события.

Cимвол # в цвете необходимо передавать в формате unicode — %23

text_color
string
Цвет текста события.

Cимвол # в цвете необходимо передавать в формате unicode — %23

accessibility
string
Доступность на время события:
— busy — занят
— absent — отсутствую
— quest — под вопросом
— free — свободен
importance
string
Важность события:
— high — высокая
— normal — средняя
— low — низкая
private_event
string
Отметка, что событие частное. Возможные значения:
— Y — частное
— N — не частное
recurrence_mode
string
Параметр частичного редактирования повторяемого события. Возможные значения:
— this — изменения применяются только к текущему событию событию. Обязательно указать current_date_from
— next — изменения применяются к текущему и ко всем следующим событиями. Обязательно указать current_date_from
— all — изменения применяются ко всем событиям в цепочке повторений
current_date_from
date
Дата текущего события для частичного редактирования повторяемого события.

Нужен только для recurrence_mode со значениями this или next

rrule
object
Повторяемость события в виде объекта в терминах стандарта iCalendar. Структура описана ниже
is_meeting
string
Признак встречи с участниками события. Возможные значения:

— Y — встреча с участниками
— N — встреча без участников

Для встречи с участниками обязательно укажите список участников attendees и организатора события host. Без заполнения этих полей событие создано не будет

location
string
Место проведения
remind
array
Массив объектов с описанием напоминаний о событии. Структура описана ниже
attendees
array
Список идентификаторов участников события. Поле обязательное, если is_meeting = Y
host
string
Идентиификатор организатора события. Поле обязательное, если is_meeting = Y
meeting
object
Объект с параметрами встречи. Структура описана ниже
crm_fields
array
Массив идентификаторов объектов CRM для привязки к событию. Чтобы привязать объекты, перечислите их идентификаторы с префиксами:
— CO_ — компания
— C_ — контакт
— L_ — лид
— D_ — сделка

Особенности работы с часовыми поясами {#timezone-features}

При работе с датами и временем событий можно использовать два подхода:

1. Полный формат даты с часовым поясом.

Используйте формат ISO-8601 с указанием часового пояса в параметрах from и to:

  • 2025-03-20T15:00:00+02:00 — с указанием смещения
  • 2025-08-05T10:00:00+11:00 — с указанием смещения
  • 2025-08-04T23:00:00Z — с указанием UTC

Параметры timezone_from и timezone_to игнорируются, так как часовой пояс уже указан в дате.

2. Простой формат даты с отдельными параметрами часового пояса.

Используйте простой формат в параметрах from и to:

  • 2025-03-20 15:00:00
  • 2025-08-05 10:00:00
  • 2025-08-05T10:00:00

Укажите часовой пояс в параметрах timezone_from и timezone_to:

  • Europe/Moscow
  • America/New_York
  • Asia/Tokyo

Если указан только timezone_from, его значение будет использовано и для timezone_to.

Приоритет обработки параметров часового пояса:

  • Высший приоритет. Если в параметрах from и to указан полный формат с часовым поясом, параметры timezone_from и timezone_to игнорируются.
  • Средний приоритет. Если используется простой формат даты и указаны параметры timezone_from и timezone_to, используются они.
  • Низший приоритет. Если формат даты простой и параметры часового пояса не заданы, используется часовой пояс текущего пользователя.

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

Название
тип
Описание
FREQ
string
Частота повторения
— DAILY — ежедневно
— WEEKLY — еженедельно
— MONTHLY — ежемесячно
— YEARLY — ежегодно
COUNT
integer
Количество повторений
INTERVAL
integer
Интервал между повторениями
BYDAY
array
Дни недели
— SU — воскресенье
— MO — понедельник
— TU — вторник
— WE — среда
— TH — четверг
— FR — пятница
— SA — суббота
UNTIL
date
Дата окончания повторений

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

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

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

Название
тип
Описание
notify
boolean
Флаг оповещения о подтверждении или отказе участников
reinvite
boolean
Флаг запроса повторного подтверждения участия при редактировании события
allow_invite
boolean
Флаг разрешения участникам приглашать других в событие
hide_guests
boolean
Флаг скрытия списка участников

Примеры кода

  • cURL (Webhook)
    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"id":699,"type":"user","ownerId":2,"name":"Changed Event Name","description":"New description for event","from":"2024-06-17","to":"2024-06-17","skip_time":"Y","section":5,"color":"#9cbe1c","text_color":"#283033","accessibility":"free","importance":"normal","is_meeting":"Y","private_event":"Y","recurrence_mode":"next","current_date_from":"2024-12-04","remind":[{"type":"min","count":10}],"location":"London","attendees":[1,2,3],"host":2,"meeting":{"notify":true,"reinvite":false,"allow_invite":false,"hide_guests":false},"rrule":{"FREQ":"WEEKLY","BYDAY":["MO","WE"],"COUNT":10,"INTERVAL":1},"crm_fields":["C_5","L_11"]}' \
    https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webbhook_here**/calendar.event.update
  • cURL (OAuth)
    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"id":699,"type":"user","ownerId":2,"name":"Changed Event Name","description":"New description for event","from":"2024-06-17","to":"2024-06-17","skip_time":"Y","section":5,"color":"#9cbe1c","text_color":"#283033","accessibility":"free","importance":"normal","is_meeting":"Y","private_event":"Y","recurrence_mode":"next","current_date_from":"2024-12-04","remind":[{"type":"min","count":10}],"location":"London","attendees":[1,2,3],"host":2,"meeting":{"notify":true,"reinvite":false,"allow_invite":false,"hide_guests":false},"rrule":{"FREQ":"WEEKLY","BYDAY":["MO","WE"],"COUNT":10,"INTERVAL":1},"crm_fields":["C_5","L_11"],"auth":"**put_access_token_here**"}' \
    https://**put_your_bitrix24_address**/rest/calendar.event.update
  • JS
    try
    {
    	const response = await $b24.callMethod(
    		'calendar.event.update',
    		{
    			id: 699,
    			type: 'user',
    			ownerId: 2,
    			name: 'Changed Event Name',
    			description: 'New description for event',
    			from: '2024-06-17',
    			to: '2024-06-17',
    			skip_time: 'Y',
    			section: 5,
    			color: '#9cbe1c',
    			text_color: '#283033',
    			accessibility: 'free',
    			importance: 'normal',
    			is_meeting: 'Y',
    			private_event: 'Y',
    			recurrence_mode: 'next',
    			current_date_from: '2024-12-04',
    			remind: [
    				{
    					type: 'min',
    					count: 10
    				}
    			],
    			location: 'London',
    			attendees: [1, 2, 3],
    			host: 2,
    			meeting: {
    				notify: true,
    				reinvite: false,
    				allow_invite: false,
    				hide_guests: false,
    			},
    			rrule: {
    				FREQ: 'WEEKLY',
    				BYDAY: ['MO', 'WE'],
    				COUNT: 10,
    				INTERVAL: 1,
    			},
    			crm_fields: ['C_5', 'L_11']
    		}
    	);
    	
    	const result = response.getData().result;
    	console.log('Updated event with ID:', result);
    	// Нужная вам логика обработки данных
    	processResult(result);
    }
    catch( error )
    {
    	console.error('Error:', error);
    }
  • PHP
    try {
        $response = $b24Service
            ->core
            ->call(
                'calendar.event.update',
                [
                    'id'              => 699,
                    'type'            => 'user',
                    'ownerId'         => 2,
                    'name'            => 'Changed Event Name',
                    'description'     => 'New description for event',
                    'from'            => '2024-06-17',
                    'to'              => '2024-06-17',
                    'skip_time'       => 'Y',
                    'section'         => 5,
                    'color'           => '#9cbe1c',
                    'text_color'      => '#283033',
                    'accessibility'   => 'free',
                    'importance'      => 'normal',
                    'is_meeting'      => 'Y',
                    'private_event'   => 'Y',
                    'recurrence_mode' => 'next',
                    'current_date_from' => '2024-12-04',
                    'remind'          => [
                        [
                            'type'  => 'min',
                            'count' => 10
                        ]
                    ],
                    'location'        => 'London',
                    'attendees'       => [1, 2, 3],
                    'host'            => 2,
                    'meeting'         => [
                        'notify'      => true,
                        'reinvite'    => false,
                        'allow_invite' => false,
                        'hide_guests' => false,
                    ],
                    'rrule'           => [
                        'FREQ'     => 'WEEKLY',
                        'BYDAY'    => ['MO', 'WE'],
                        'COUNT'    => 10,
                        'INTERVAL' => 1,
                    ],
                    'crm_fields'      => ['C_5', 'L_11']
                ]
            );
    
        $result = $response
            ->getResponseData()
            ->getResult();
    
        echo 'Success: ' . print_r($result, true);
        // Нужная вам логика обработки данных
        processData($result);
    
    } catch (Throwable $e) {
        error_log($e->getMessage());
        echo 'Error updating calendar event: ' . $e->getMessage();
    }
  • BX24.js
    BX24.callMethod(
        'calendar.event.update',
        {
            id: 699,
            type: 'user',
            ownerId: 2,
            name: 'Changed Event Name',
            description: 'New description for event',
            from: '2024-06-17',
            to: '2024-06-17',
            skip_time: 'Y',
            section: 5,
            color: '#9cbe1c',
            text_color: '#283033',
            accessibility: 'free',
            importance: 'normal',
            is_meeting: 'Y',
            private_event: 'Y',
            recurrence_mode: 'next',
            current_date_from: '2024-12-04',
            remind: [
                {
                    type: 'min',
                    count: 10
                }
            ],
            location: 'London',
            attendees: [1, 2, 3],
            host: 2,
            meeting: {
                notify: true,
                reinvite: false,
                allow_invite: false,
                hide_guests: false,
            },
            rrule: {
                FREQ: 'WEEKLY',
                BYDAY: ['MO', 'WE'],
                COUNT: 10,
                INTERVAL: 1,
            },
            crm_fields: ['C_5', 'L_11']
        }
    );
  • PHP CRest
    require_once('crest.php');

    $result = CRest::call(
        'calendar.event.update',
        [
            'id' => 699,
            'type' => 'user',
            'ownerId' => 2,
            'name' => 'Changed Event Name',
            'description' => 'New description for event',
            'from' => '2024-06-17',
            'to' => '2024-06-17',
            'skip_time' => 'Y',
            'section' => 5,
            'color' => '#9cbe1c',
            'text_color' => '#283033',
            'accessibility' => 'free',
            'importance' => 'normal',
            'is_meeting' => 'Y',
            'private_event' => 'Y',
            'recurrence_mode' => 'next',
            'current_date_from' => '2024-12-04',
            'remind' => [
                [
                    'type' => 'min',
                    'count' => 10
                ]
            ],
            'location' => 'London',
            'attendees' => [1, 2, 3],
            'host' => 2,
            'meeting' => [
                'notify' => true,
                'reinvite' => false,
                'allow_invite' => false,
                'hide_guests' => false,
            ],
            'rrule' => [
                'FREQ' => 'WEEKLY',
                'BYDAY' => ['MO', 'WE'],
                'COUNT' => 10,
                'INTERVAL' => 1,
            ],
            'crm_fields' => ['C_5', 'L_11']
        ]
    );

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

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

HTTP-статус: 200

  • Одиночное событие
    {
        "result": 1246,
        "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": {
            "originalDate": "12/24/2024 05:59:00 pm",
            "originalDavXmlId": "20241205T124346Z-e3ccab8aebc16d0c5cccecb63fef2bc3@b24evo.lan",
            "instanceTz": "Europe/Riga",
            "recEventId": 1261,
            "id": 1260
        },
        "time": {
            "start": 1733402626.139122,
            "finish": 1733402626.740063,
            "duration": 0.6009409427642822,
            "processing": 0.3765721321105957,
            "date_start": "2024-12-05T12:43:46+00:00",
            "date_finish": "2024-12-05T12:43:46+00:00"
        }
    }

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

  • Одиночное событие
Название
тип
Описание
result
integer
Идентификатор обновленного события
  • Повторяемое событие
Название
тип
Описание
result
object
Корневой элемент ответа
originalDate
datetime
Дата начала новой серии повторяемого события
originalDavXmlId
string
Идентификатор события для синхронизации
instanceTz
string
Таймзона события
recEventId
integer
Идентификатор новой серии повторяемого события
id
integer
Идентификатор предыдущей серии повторямого события

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

HTTP-статус: 400

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

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

КодCообщение об ошибкеОписание
Пустая строкаНе задан обязательный параметр «id» для метода «calendar.event.update»Не передан обязательный параметр id
Пустая строкаНе задан обязательный параметр «ownerId» для метода «calendar.event.update»Не передан обязательный параметр ownerId
Пустая строкаНе задан обязательный параметр «type» для метода «calendar.event.update»Не передан обязательный параметр type
Пустая строкаНедопустимое значение параметра «name»Передан неверный формат данных в поле name
Пустая строкаНедопустимое значение параметра «description»Передан неверный формат данных в поле description
Пустая строкаДоступ запрещенЗапрещено создание событий в указанном календаре
Пустая строкаВы задали неверный ID секции календаря или у данного пользователя нет к ней доступаПередан идентификатор недоступного или несуществующего календаря
Пустая строкаУказан несуществующий тип редактирования повторяемого событияПередан неверное значение поля recurrence_mode
Пустая строкаСписок связей события с CRM должен быть массивомПередан неверный формат данных в поле crm_fields
Пустая строкаПри изменении события произошла ошибкаДругая ошибка

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

Советы эксперта по интеграции:

  • Всегда используйте кэширование при частых запросах к calendar.event.update, чтобы разгрузить базу данных.
  • Соблюдайте стандарты PSR при написании обработчиков для «Обновить событие calendar.event.update».
  • Регулярно проводите аудит производительности системы с помощью встроенного монитора 1С-Битрикс.

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

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

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

Related Post

Получить список элементов табличной части отгрузки sale.shipmentitem.listПолучить список элементов табличной части отгрузки sale.shipmentitem.list

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

Изменить документ складского учета catalog.document.updateИзменить документ складского учета catalog.document.update

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

Получить счет по идентификатору crm.invoice.getПолучить счет по идентификатору crm.invoice.get

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