Заметки
Поле типа Файл и поле типа Файл Диска: в чём разница
Число в файловом поле не всегда является ID для CFile. В Битриксе нужно различать три записи:
- обычный файл: его ID используют методы
CFile; - объект Диска: его ID используют
disk.file.*; - прикрепление: связь объекта Диска с задачей, комментарием или другим объектом.
Обычное поле «Файл» и поле «Файл Диска» поэтому нельзя заполнять одним способом. Для обычного файлового поля REST может принимать имя и Base64, а для связи с Диском сначала нужен соответствующий объект и формат привязки конкретного метода.
Если значение пришло из прикрепления, начните с него:
BX24.callMethod('disk.attachedObject.get', { id: 423 }, function (result) {
if (result.error()) {
console.error(result.error());
return;
}
console.log(result.data());
}); По ответу можно перейти к связанному объекту Диска. Передавать 423 прямо в CFile::GetPath() нельзя: совпадение чисел в разных таблицах может дать чужой файл, а не только пустой результат.
Тип пользовательского поля CRM узнают через описание полей сущности, например crm.item.fields. У множественного поля дополнительно отличается форма массива. Разбор скачивания — в отдельной заметке.