Блог Горошко Андрея 1C-Битрикс Свойства элементов Битрикс: Работа со Списком, Файлом и Привязкой

Свойства элементов Битрикс: Работа со Списком, Файлом и Привязкой

Средний рейтинг
Еще нет оценок

При добавлении или обновлении элементов через API (CIBlockElement::Add/Update) работа с простыми свойствами (строка, число) интуитивно понятна.

Однако сложные типы, такие как «Список», «Файл» и «Привязка к элементам», требуют передачи данных в строго определенном формате.

Общий принцип: PROPERTY_VALUES и SetPropertyValuesEx

  • При добавлении (Add) или полной перезаписи всех свойств (Update) используется ключ PROPERTY_VALUES в основном массиве полей.
  • При точечном обновлении одного или нескольких свойств без затрагивания остальных, всегда используйте CIBlockElement::SetPropertyValuesEx.

1. Свойство типа «Список» (List)

Как хранится: В базе хранится не само значение («Да», «Нет», «Красный»), а ID этого значения из настроек свойства.

Как обновлять:
Нужно передавать ID значения списка.

// Допустим, у свойства "Цвет" (код COLOR) есть значения:
// Красный (ID: 15)
// Синий (ID: 16)

$elementId = 123;
$iblockId = 5;

// Устанавливаем значение "Красный"
CIBlockElement::SetPropertyValuesEx($elementId, $iblockId, [
    'COLOR' => 15
]);

// Для множественного списка передаем массив ID
CIBlockElement::SetPropertyValuesEx($elementId, $iblockId, [
    'COLORS' => [15, 16]
]);

Ошибка новичка: Пытаться передать строковое значение (‘COLOR’ => ‘Красный’). Это не сработает.

2. Свойство типа «Файл» (File)

Как хранится: Хранится ID файла из таблицы b_file.

Как обновлять:
Нужно передать массив, подготовленный функцией CFile::MakeFileArray().

$elementId = 123;
$iblockId = 5;

// Готовим массив файла
$arFile = CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"]."/upload/my_image.jpg");

// Устанавливаем значение
CIBlockElement::SetPropertyValuesEx($elementId, $iblockId, [
    'MORE_PHOTO' => $arFile
]);

Для множественного свойства:
Для добавления нового файла к существующим нужно передавать массив, где ключ — это n<порядковый_номер>, а значение — массив файла.

$arFiles = [];
$arFiles['n0'] = CFile::MakeFileArray(...);
$arFiles['n1'] = CFile::MakeFileArray(...);

CIBlockElement::SetPropertyValuesEx($elementId, $iblockId, ['GALLERY' => $arFiles]);

Удаление файла:
Чтобы удалить файл, нужно передать массив с ключом del и значением Y.

// Удаляем файл из одиночного свойства
CIBlockElement::SetPropertyValuesEx($elementId, $iblockId, [
    'DOC_FILE' => ['del' => 'Y']
]);

3. Свойство типа «Привязка к элементам/разделам» (Binding)

Как хранится: Хранится ID привязанного элемента или раздела.

Как обновлять:
Нужно передавать ID элемента/раздела.

$elementId = 123; // ID нашего элемента
$iblockId = 5;
$relatedElementId = 456; // ID элемента, который мы хотим привязать

// Устанавливаем привязку
CIBlockElement::SetPropertyValuesEx($elementId, $iblockId, [
    'RELATED_PRODUCTS' => $relatedElementId
]);

// Для множественной привязки передаем массив ID
CIBlockElement::SetPropertyValuesEx($elementId, $iblockId, [
    'RELATED_PRODUCTS' => [456, 457, 458]
]);

4. Свойство со значением и описанием

Для свойств, у которых в настройках включена опция «Показывать поле для описания значения», формат массива усложняется.

// Обновляем множественное свойство "Телефоны" с описаниями
$arPhones = [
    ['VALUE' => '+7 (495) 111-22-33', 'DESCRIPTION' => 'Основной'],
    ['VALUE' => '+7 (495) 444-55-66', 'DESCRIPTION' => 'Дополнительный'],
];

CIBlockElement::SetPropertyValuesEx($elementId, $iblockId, ['PHONES' => $arPhones]);

Для множественных свойств с описанием при добавлении новых значений к существующим, нужно использовать сложный формат с ключами n<X>.

Вывод:
Правильное формирование массива данных для сложных свойств — ключ к успешной работе с API Битрикс.

Запомните главное: Список — ID значения, Файл — массив MakeFileArray, Привязка — ID элемента/раздела. 

Для точечных обновлений всегда используйте SetPropertyValuesEx, чтобы случайно не затереть другие свойства.

CIBlockElement::SetPropertyValuesEx, свойства инфоблока, свойство список, привязка к элементам, свойство файл, PROPERTY_VALUES, Битрикс.

Мой рейтинг:

Добавить комментарий

Related Post

Управление правами доступа через API: GetGroupRight, GetUserGroupArrayУправление правами доступа через API: GetGroupRight, GetUserGroupArray

Средний рейтинг Еще нет оценок Проверка прав доступа — критически важная часть любого веб-приложения. Она позволяет скрывать или показывать определенные кнопки, блокировать доступ к страницам или разрешать выполнение специфических действий.

Система событий в Битрикс: AddEventHandler и современный EventManager из D7Система событий в Битрикс: AddEventHandler и современный EventManager из D7

Средний рейтинг Еще нет оценок Система событий — один из самых мощных механизмов в 1С-Битрикс. Она позволяет «вклиниваться» в стандартные процессы (например, перед добавлением товара в корзину или после обновления

Чем отличается ядро D7 bitrix и bitrix старое ядроЧем отличается ядро D7 bitrix и bitrix старое ядро

Средний рейтинг Еще нет оценок D7 Bitrix — это новое ядро Битрикс, которое было создано для замены старого ядра. D7 Bitrix является новым ядром разработки, которое было введено в версии