Для обновления пользовательских полей в событии календаря в Битрикс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'] в соответствии с вашей конкретной ситуацией.
Напоминаем, что для выполнения этих операций вам необходимо иметь права на редактирование событий календаря.