← Назад к заметкам

Заметки

Как загрузить файл на Диск и прикрепить к CRM

Как загрузить файл на Диск Битрикс24 и связать его с CRM: uploadfile, объект Диска, прикрепление и таймлайн.

Для CRM лучше не пытаться прикреплять локальный путь. Сначала загрузите файл на Диск, получите ID объекта Диска и уже его используйте в таймлайне, деле, документе или поле типа «Файл Диска».

Задача

Если файл нужно прикрепить к CRM, чаще всего его сначала загружают на Диск, а потом связывают с CRM-сущностью: через комментарий таймлайна, дело, документ или файловое поле типа «Файл Диска».

Загрузка на Диск

Для загрузки в папку используется disk.folder.uploadfile. В ответе вы получаете объект Диска, с которым уже можно работать дальше.

BX24.callMethod(
    'disk.folder.uploadfile',
    {
        id: 15,
        data: { NAME: 'contract.pdf' },
        fileContent: ['contract.pdf', 'base64_encoded_content_here'],
    },
    function (result) {
        console.log(result.data());
    }
);

Перед загрузкой нужно знать ID папки. Его можно получить через хранилище, дочерние элементы папки или заранее сохранить в настройках интеграции.

Прикрепление к CRM

Один из удобных сценариев — добавить комментарий в таймлайн CRM и приложить к нему файл. Так файл становится виден в истории карточки.

BX24.callMethod(
    'crm.timeline.comment.add',
    {
        fields: {
            ENTITY_TYPE: 'deal',
            ENTITY_ID: 123,
            COMMENT: 'Файл загружен автоматически',
            FILES: [9043],
        },
    },
    function (result) {
        console.log(result.data());
    }
);

Формат поля FILES зависит от метода и версии API. Если метод ждёт файлы Диска, передавайте ID объекта Диска, а не путь к файлу и не ID прикреплённого объекта.

Где появляется attached object

После прикрепления файла к CRM может появиться отдельная запись связи — прикреплённый объект. Это не сам файл, а связь файла Диска с CRM-объектом, комментарием или делом.

BX24.callMethod(
    'disk.attachedObject.get',
    { id: 423 },
    function (result) {
        console.log(result.data());
    }
);

Если дальше нужно получить сам файл, идите от прикрепления к объекту Диска, а уже потом к внутреннему файловому ID или ссылке.