← К заметкам

Заметки

Поле типа Файл и поле типа Файл Диска: в чём разница

Число в файловом поле не всегда является 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. У множественного поля дополнительно отличается форма массива. Разбор скачивания — в отдельной заметке.