Работа с множественным свойством тип "Файл" в 1С Битрикс

Работа с множественным свойством тип "Файл" в 1С Битрикс

15.10.2022
3728
Примеры загрузки файлов в свойство, удаления файла и полной очистки свойства.

Загрузка/добавление файла(ов) в свойство, если там уже есть файлы

Чтобы загрузить файл в свойство, если там уже есть файлы, нужно выполнить следующие действия:

$elementId = 5;

// перебор массива входных данных
foreach ($_FILES["files"]["name"] as $key => $value) {

    $fileName = $_FILES["files"]["name"][$key];
    $fileTmpName = $_FILES["files"]["tmp_name"][$key];
    $fileType = $_FILES["files"]["type"][$key];

    $file = CFile::MakeFileArray($fileTmpName);
    $file['name'] = $fileName;

    $currentFiles[] = $file;
}

//Дозапись файлов в свойство инфоблока
CIBlockElement::SetPropertyValueCode($elementId, 'FILE_FIELD', $currentFiles);

Код выше добавит файл(ы) в свойство "FILE_FIELD" элемента инфоблока с ID=5, если там уже были загружены другие файлы.

Удаление файла

Если нужно удалить файл из свойства множественного свойства типа "Файл", нужно выполнить следующие действия:

// Параметры для выборки значений свойства
$fileId = 1024; // ID файла, который нужно удалить
$elementId = 5; // ID элемента инфоблока
$iblockId = 5; // ID инфоблока
$fieldCode = 'FILE_FIELD'; // Код поля, содержащего файл

// Получаем значения свойства
$currentPropertyValues = CIBlockElement::GetProperty($iblockId, $elementId, [], ['CODE' => $fieldCode]);
while ($property = $currentPropertyValues->Fetch()) {
    if($property['VALUE'] == $fileId) { // Проверяем, равно ли значение в свойстве ID файла для удаления

        // Удаляем файл из свойства
        CIBlockElement::SetPropertyValueCode($elementId, $fieldCode,
            array(
                $property['PROPERTY_VALUE_ID'] => array(
                    "VALUE"=> array(
                        "MODULE_ID" => "iblock",
                        "del" => "Y" // Параметр, отвечающий за удаление файла
                   )
                )
            )
        );
        break; // Остановка цикла выборки
    }
}

Код выше удалит файл с ID=1024 из свойства "FILE_FIELD" элемента инфоблока с ID=5.

Полная очистка свойства "Файл"

Если нужно полностью очистить свойство множественного свойства типа "Файл", нужно выполнить следующее действия:

$elementId = 5;

// Удаляем все файлы из свойства
CIBlockElement::SetPropertyValueCode($elementId, "FILE_FIELD", array());

Код выше полностью очистит свойство "FILE_FIELD" элемента инфоблока с ID=5.
* Или лучше использовать предыдущий вариант с параметром "del" => "Y" для всех элементов, так надежнее!

Заключение

Множественное свойство типа "Файл" - это удобный инструмент для работы с файлами в 1С Битрикс. С помощью приведенных примеров загрузки файла в поле, загрузки файла в свойство, удаления файла и полной очистки свойства, вы сможете эффективно использовать данную функцию. Если у вас возникнут какие-либо вопросы, обращайтесь к документации 1С Битрикс.