Как обновить пользовательские поля в событии календаря?

Для обновления пользовательских полей в событии календаря в Битрикс24 вы должны использовать метод "calendar.event.update" из модуля "calendar".

Первым шагом необходимо получить информацию о событии календаря. Для этого вы можете использовать метод "calendar.event.get" с указанием идентификатора события. Ниже приведен пример запроса к АПИ:

$eventId = 123; // идентификатор события

$calendarEvent = BitrixMainLoader::includeModule('calendar') ? CCalendarEvent::GetList(
    [],
    [
        'ID' => $eventId,
        'DELETED' => 'N' // исключаем удаленные события
    ],
    false,
    [],
    ['RETURN_FULL_LIST' => true]
)->fetch() : false;

if ($calendarEvent) {
    // получение пользовательских полей
    $customFields = $calendarEvent['~USER_FIELDS'];
    
    // обновление значений пользовательских полей
    $customFields['UF_FIELD1'] = 'Новое значение 1';
    $customFields['UF_FIELD2'] = 'Новое значение 2';

    // обновление события календаря с обновленными пользовательскими полями
    $updatedFields = [
        'USER_FIELDS' => $customFields
    ];
    
    CCalendarEvent::Edit(
        [
            'arFields' => $updatedFields,
            'bAffectToDav' => true,
            'recursionEditMode' => 'this_only',
            'currentEventDateFrom' => $calendarEvent['DATE_FROM'], // необходимо указать дату начала события
            'currentEventDateTo' => $calendarEvent['DATE_TO'] // необходимо указать дату окончания события
        ]
    );
}

В этом примере мы используем метод CCalendarEvent::GetList для получения информации о событии с указанным идентификатором. Затем мы получаем значение пользовательских полей из свойства "USER_FIELDS" и обновляем их значения. Обновленные пользовательские поля передаются обратно в метод "CCalendarEvent::Edit", который обновляет событие календаря с новыми значениями пользовательских полей.

Замените 'UF_FIELD1' и 'UF_FIELD2' на собственные идентификаторы пользовательских полей. Укажите также правильные значения для $eventId, $calendarEvent['DATE_FROM'] и $calendarEvent['DATE_TO'] в соответствии с вашей конкретной ситуацией.

Напоминаем, что для выполнения этих операций вам необходимо иметь права на редактирование событий календаря.