Найти в Дзене
Helpers Bitrix

Запись файла в пользовательское поле CRM-сущности Bitrix24 по ID

Оглавление

Как записывать в пользовательские поля CRM через фабрику: для поля "Файл" (множественное и не множественное)

В Bitrix CRM пользовательские поля могут быть разных типов, в том числе типа "Файл". В зависимости от того, настроено ли поле как множественное или не множественное, подход к записи данных будет отличаться. В этой статье мы рассмотрим, как работать с полями типа "Файл" для различных типов сущностей CRM, которые можно получить через фабрику, в частности, с полями, которые могут быть как множественными, так и не множественными.

Запись в не множественное поле "Файл"

Если ваше поле настроено как не множественное, оно будет хранить только один файл. В таком случае, при записи нужно передавать одиночный идентификатор файла.

Пример кода для записи в не множественное поле "Файл":

$comparisonFileId = $match ? $comparisonFileRes['GREEN'] : $comparisonFileRes['RED'];

$typeId = CrmHelpers::getIdFromCode('FINAL_SURVEY'); // Получаем ID типа сущности

$factory = Container::getInstance()->getFactory($typeId); // Получаем фабрику для этой сущности

$spItem = $factory->getItem($smartProcessId); // Получаем элемент сущности (например, сделка, контакт и т.д.)

// Устанавливаем значение в пользовательское поле (не множественное)

$spItem->set('UF_CRM_CSS_COMPARISON', $comparisonFileId);

// Получаем коллекцию полей

$fieldsCollection = $factory->getFieldsCollection();

// Получаем нужное поле

$field = $fieldsCollection->getField('UF_CRM_CSS_COMPARISON');

if ($field) {

// Создаем загрузчик файлов

$fileUploader = new \Bitrix\Crm\Service\FileUploader();

// Регистрация одиночного файла (передаем одиночный ID файла)

$fileUploader->registerFileId($field, $comparisonFileId);

}

// Сохраняем элемент

$operationResult = $spItem->save();

Комментарий:

  • Здесь мы передаем одиночный ID файла в поле UF_CRM_CSS_COMPARISON, так как это поле не настроено как множественное.
  • Мы используем метод set, чтобы записать этот ID в поле.
  • После этого создаем загрузчик файлов и регистрируем файл с помощью метода registerFileId.

Почему так делать:

  • Поле не множественное, и оно может хранить только одно значение. Именно поэтому мы передаем одиночный ID файла.
  • Использование массива в этом случае приведет к ошибке, так как поле ожидает только один файл.

Запись в множественное поле "Файл"

Если поле настроено как множественное, оно будет хранить несколько файлов, и для его записи нужно передавать массив идентификаторов файлов.

Пример кода для записи в множественное поле "Файл":

$comparisonFileId = $match ? $comparisonFileRes['GREEN'] : $comparisonFileRes['RED'];

$typeId = CrmHelpers::getIdFromCode('FINAL_SURVEY'); // Получаем ID типа сущности

$factory = Container::getInstance()->getFactory($typeId); // Получаем фабрику для этой сущности

$spItem = $factory->getItem($smartProcessId); // Получаем элемент сущности

// Устанавливаем значение в пользовательское поле (множественное)

$spItem->set('UF_CRM_CSS_COMPARISON', [$comparisonFileId]);

// Получаем коллекцию полей

$fieldsCollection = $factory->getFieldsCollection();

// Получаем нужное поле

$field = $fieldsCollection->getField('UF_CRM_CSS_COMPARISON');

if ($field) {

// Создаем загрузчик файлов

$fileUploader = new \Bitrix\Crm\Service\FileUploader();

// Регистрация файлов для множественного поля (передаем массив с ID файлов)

$fileUploader->registerFileId($field, $comparisonFileId);

}

// Сохраняем элемент

$operationResult = $spItem->save();

Комментарий:

  • В случае множественного поля важно передавать массив идентификаторов файлов. Даже если вы хотите передать только один файл, его все равно нужно обернуть в массив, так как поле ожидает несколько значений.
  • Мы передаем массив в метод set для поля UF_CRM_CSS_COMPARISON, даже если в нем только один элемент.
  • Затем используется registerFileId для привязки файлов к полю.

Почему так делать:

  • Множественное поле может хранить несколько значений, и поэтому данные должны быть переданы в виде массива. Это гарантирует, что поле будет работать корректно и можно будет добавлять или удалять файлы при необходимости.

Заключение

  1. Не множественное поле "Файл":Для записи в не множественное поле нужно передавать одиночный ID файла.
    Поле настроено для хранения только одного файла, и передача массива приведет к ошибке.
  2. Множественное поле "Файл":Для записи в множественное поле нужно передавать массив с ID файлов, даже если это только один файл.
    Это необходимо для корректной работы поля, которое предназначено для хранения нескольких файлов.

Не забывайте, что при работе с полями типа "Файл" важно точно соблюдать требования по формату данных, особенно для множественных и не множественных полей.