Как лучше добавить новые файлы в б24, сохранив при этом старые?
Ссылка скопирована
, битрикс24 коробка.
По вводным: есть сделка с пользовательским полем с типом файл, множественный.
По вводным: в этом поле уже имеются файлы.
Что нужно:
По вводным: отправить новые файлы через сайт в это пользовательское поле, при этом сохранив старые файлы.
По вводным: максимум что у меня получается - это то, что пользовательское поле просто перезаписывается, сохраняя НОВЫЕ файлы, стерев старые.
Каким способом добавить новые файлы, при этом сохранив старые?
Спасибо
require_once(__DIR__.'/crest.php'); // файлы, которые нужно добавить $filePaths = [ __DIR__ . '/filesForTest/test.docx', __DIR__ . '/filesForTest/test2.docx', ]; $deal = CRest::call('crm.deal.get', [ 'id' => 159 ]); $existingFiles = $deal['result']['UF_CRM_1766393619832'] ?? []; $filesForUpdate = []; // старые файлы (ID) foreach ($existingFiles as $fileId) { $filesForUpdate[] = $fileId; } // новые файлы foreach ($filePaths as $path) { if (!file_exists($path)) { continue; } $filesForUpdate[] = [ 'fileData' => [ basename($path), base64_encode(file_get_contents($path)) ] ]; } $result = CRest::call('crm.deal.update', [ 'id' => 159, 'fields' => [ 'UF_CRM_1766393619832' => $filesForUpdate ] ]); echo '<pre>'; print_r($filesForUpdate); echo '</pre>';
Нужно решить такую задачу?
Заказать помощь
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Лучший ответ
1
Другие ответы (0)
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопроскомментарий
Вам также может быть интересно
VPN
Как правильно настроить vless для Android TV?
1 ответ
Pyrogram
Как правильно зарегистрировать юзер бота в Telegram?
1 ответ
печатные-платы
Как заставить запускаться программу M3.exe от компании Hanxing AOI в инспекционной машине на Windows 7 Pro?
1 ответ
Аккумуляторные батареи
Почему при зарядке автостарта слышен писк, где искать причину?
1 ответ

В Битрикс24 “добавить новые файлы, сохранив старые” можно по-разному, и правильный способ зависит от того, где именно хранятся файлы: в поле CRM, в Диске, в пользовательском поле, в задаче, в комментарии или в сущности смарт-процесса. Главная ошибка — отправлять новое значение поля как полную замену, из-за чего старые файлы отвязываются.
Если это множественное файловое поле CRM, сначала получите текущие значения, затем добавьте новые и отправьте обратно полный массив: старые ID + новые файлы. Не передавайте только новый файл, если API ожидает полный список.
Общая логика:
Если файлы находятся на Диске Битрикс24, часто лучше не перезаписывать поле, а добавлять файл в нужную папку/хранилище и уже затем привязывать его к сущности. Для комментариев или таймлайна можно просто создать новый комментарий с вложением — тогда старые файлы останутся в истории.
Важно: разные REST-методы Битрикс24 по-разному принимают файлы: где-то нужен base64, где-то ID файла Диска, где-то массив вида
fileData. Поэтому сначала уточните конкретную сущность и поле.Итог: не обновляйте файловое поле “вслепую” только новым файлом. Сначала считайте старые значения, объедините их с новыми и отправляйте полный набор. Если нужно сохранить историю, лучше добавлять вложения новым комментарием/записью в таймлайн, а не изменять существующее поле.