Блог Горошко Андрея 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

Обработка форм и POST-запросов в Битрикс: От HTML до component.phpОбработка форм и POST-запросов в Битрикс: От HTML до component.php

Средний рейтинг Еще нет оценок Любой интерактивный сайт нуждается в формах: обратная связь, заказ, подписка. В Битрикс вы можете легко создать свою собственную логику обработки форм внутри компонента. Это дает

Управление заголовками и мета-тегами в Битрикс: SetPageProperty, ShowTitle, ShowMetaУправление заголовками и мета-тегами в Битрикс: SetPageProperty, ShowTitle, ShowMeta

Средний рейтинг Еще нет оценок Правильное управление заголовками (<title>) и мета-тегами (description, keywords, robots) — это фундамент SEO-продвижения. В Битрикс за это отвечает глобальный объект $APPLICATION. С его помощью можно динамически устанавливать и

Работа с пользователями в Битрикс: CUser::GetList, Add, UpdateРабота с пользователями в Битрикс: CUser::GetList, Add, Update

Средний рейтинг Еще нет оценок Управление пользователями — одна из ключевых задач любой CMS. В Битрикс для этого предназначен класс CUser. Глобальный объект $USER (экземпляр этого класса) доступен на каждой странице и содержит