Bitrix Help
Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors
Главная » API Битрикс » CIBlockElement » CIBlockElement::SetPropertyValues в Битрикс — установка значений свойств элемента

CIBlockElement::SetPropertyValues в Битрикс — установка значений свойств элемента

Обновлено: 2026 • Раздел: CIBlockElement


Метод CIBlockElement::SetPropertyValues() используется для записи и обновления значений свойств элементов инфоблоков в 1С-Битрикс. С его помощью можно изменять текстовые свойства, списки, файлы, привязки к элементам и разделам, а также множественные свойства.

Краткий ответ

Для изменения свойства элемента необходимо вызвать метод CIBlockElement::SetPropertyValues(), передав ID элемента, ID инфоблока и массив значений свойств.

<?php

CIBlockElement::SetPropertyValues(
    123,
    5,
    [
        "PRICE" => 15000
    ]
);

Описание функции

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

В отличие от метода CIBlockElement::Update(), который предназначен для изменения основных полей элемента, SetPropertyValues() работает исключительно со свойствами инфоблока.

Метод позволяет обновлять как одно свойство, так и сразу несколько свойств за один вызов.

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

Синтаксис

CIBlockElement::SetPropertyValues(
    int $ELEMENT_ID,
    int $IBLOCK_ID,
    mixed $PROPERTY_VALUES,
    string $PROPERTY_CODE = false
);

Параметры

Параметр Тип Описание
$ELEMENT_ID int ID элемента инфоблока.
$IBLOCK_ID int ID инфоблока.
$PROPERTY_VALUES mixed Значение свойства или массив свойств.
$PROPERTY_CODE string|false Код конкретного свойства при обновлении одного значения.

Пример использования

Изменение одного свойства

<?php

CIBlockElement::SetPropertyValues(
    123,
    5,
    19990,
    "PRICE"
);

Изменение нескольких свойств

<?php

CIBlockElement::SetPropertyValues(
    123,
    5,
    [
        "PRICE" => 19990,
        "BRAND" => "Samsung",
        "IN_STOCK" => "Y"
    ]
);

Запись множественного свойства

<?php

CIBlockElement::SetPropertyValues(
    123,
    5,
    [
        "TAGS" => [
            "Битрикс",
            "PHP",
            "Разработка"
        ]
    ]
);

Обновление файлового свойства

<?php

CIBlockElement::SetPropertyValues(
    123,
    5,
    [
        "PHOTO" => CFile::MakeFileArray(
            $_SERVER["DOCUMENT_ROOT"]."/upload/photo.jpg"
        )
    ]
);

Установка привязки к элементу

<?php

CIBlockElement::SetPropertyValues(
    123,
    5,
    [
        "RELATED_PRODUCT" => 456
    ]
);

Типичные ошибки

Указан неверный ID инфоблока

CIBlockElement::SetPropertyValues(
    123,
    999,
    [
        "PRICE" => 1000
    ]
);

Если инфоблок указан неверно, свойства не будут сохранены.


Использование неверного кода свойства

[
    "PRICE_TEST" => 1000
]

Код свойства должен точно совпадать с настройками инфоблока.


Потеря значений множественного свойства

[
    "TAGS" => [
        "Новое значение"
    ]
]

При таком обновлении старые значения будут удалены и заменены новым массивом.


Неправильная загрузка файлов

[
    "PHOTO" => "/upload/image.jpg"
]

Для файловых свойств необходимо использовать CFile::MakeFileArray().

CIBlockElement::SetPropertyValuesEx

В современных проектах чаще используется метод CIBlockElement::SetPropertyValuesEx().

Он работает быстрее, обновляет только указанные свойства и не затрагивает остальные значения.

<?php

CIBlockElement::SetPropertyValuesEx(
    123,
    5,
    [
        "PRICE" => 19990
    ]
);

Для большинства новых разработок рекомендуется использовать именно SetPropertyValuesEx.

Аналог на D7

В ORM D7 свойства можно обновлять через сгенерированные классы инфоблоков.

<?php

use Bitrix\Iblock\Elements\ElementCatalogTable;

$result = ElementCatalogTable::update(
    123,
    [
        "PRICE" => 19990,
        "BRAND" => "Samsung"
    ]
);

if (!$result->isSuccess()) {
    print_r(
        $result->getErrorMessages()
    );
}

Конкретная реализация зависит от структуры инфоблока и настроек ORM-классов.

FAQ

Что делает CIBlockElement::SetPropertyValues?

Метод записывает значения свойств элемента инфоблока.

Чем отличается SetPropertyValues от Update?

Update изменяет поля элемента, а SetPropertyValues работает только со свойствами инфоблока.

Можно ли обновить одно свойство?

Да, через параметр $PROPERTY_CODE.

CIBlockElement::SetPropertyValues(
    123,
    5,
    1000,
    "PRICE"
);

Что лучше использовать — SetPropertyValues или SetPropertyValuesEx?

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

Можно ли записывать файлы?

Да, через CFile::MakeFileArray().

Можно ли обновить несколько свойств одновременно?

Да, достаточно передать массив свойств и значений в третьем параметре метода.

Услуги


База знаний