вот это то что надо, спасибо, дополните документацию пожалуйста для метода CIBlockElement::SetPropertyValuesEx
В общем я получил значение своего свойства($ob->GetProperties()) как:
Код |
---|
Array
(
[ID] => 36
[TIMESTAMP_X] => 2021-12-15 22:49:45
[IBLOCK_ID] => 12
[NAME] => Варианты билетов
[ACTIVE] => Y
[SORT] => 500
[CODE] => tickets_variants
[DEFAULT_VALUE] => Array
(
[code] =>
[name] =>
[price] => 0
[stock_count] => 0
)
[PROPERTY_TYPE] => S
[ROW_COUNT] => 1
[COL_COUNT] => 30
[LIST_TYPE] => L
[MULTIPLE] => Y
[XML_ID] =>
[FILE_TYPE] =>
[MULTIPLE_CNT] => 5
[TMP_ID] =>
[LINK_IBLOCK_ID] => 0
[WITH_DESCRIPTION] => N
[SEARCHABLE] => N
[FILTRABLE] => N
[IS_REQUIRED] => N
[VERSION] => 1
[USER_TYPE] => gtable
[USER_TYPE_SETTINGS] => Array
(
[COLUMNS] => Array
(
[0] => Array
(
[NAME] => name
[SORT] => 10
[LANG] => Array
(
[ru] => Array
(
[NAME] => Название
[TOOLTIP] =>
)
[en] => Array
(
[NAME] =>
[TOOLTIP] =>
)
)
[TYPE] => text
[DEFAULT_VALUE] =>
[SIZE] => 20
)
[1] => Array
(
[NAME] => price
[SORT] => 20
[LANG] => Array
(
[ru] => Array
(
[NAME] => Цена
[TOOLTIP] =>
)
[en] => Array
(
[NAME] =>
[TOOLTIP] =>
)
)
[TYPE] => text
[DEFAULT_VALUE] => 0
[SIZE] => 20
)
[2] => Array
(
[NAME] => stock_count
[SORT] => 30
[LANG] => Array
(
[ru] => Array
(
[NAME] => Остатки
[TOOLTIP] =>
)
[en] => Array
(
[NAME] =>
[TOOLTIP] =>
)
)
[TYPE] => text
[DEFAULT_VALUE] => 0
[SIZE] => 20
)
)
[PUBLIC_VIEW_TEMPLATE] =>
[PUBLIC_EDIT_TEMPLATE] =>
[ADMIN_VIEW_TEMPLATE] =>
[ADMIN_EDIT_TEMPLATE] =>
[INCLUDE_SCRIPTS] =>
)
[HINT] =>
[PROPERTY_VALUE_ID] => Array
(
[0] => 13530
[1] => 13531
)
[VALUE] => Array
(
[0] => Array
(
[code] =>
[name] => взрослый + ребенок
[price] => 1800
[stock_count] => 10
)
[1] => Array
(
[code] =>
[name] => взрослый + ребенок 31 дек
[price] => 2000
[stock_count] => 10
)
)
[DESCRIPTION] => Array
(
[0] =>
[1] =>
)
[VALUE_ENUM] =>
[VALUE_XML_ID] =>
[VALUE_SORT] =>
[~VALUE] => Array
(
[0] => Array
(
[code] =>
[name] => взрослый + ребенок
[price] => 1800
[stock_count] => 10
)
[1] => Array
(
[code] =>
[name] => взрослый + ребенок 31 дек
[price] => 2000
[stock_count] => 10
)
)
[~DESCRIPTION] => Array
(
[0] =>
[1] =>
)
[~NAME] => Варианты билетов
[~DEFAULT_VALUE] => Array
(
[code] =>
[name] =>
[price] => 0
[stock_count] => 0
)
)
|
не принципиально важно, но я удалил перед этим столбец code в настройках инфоблока, но в значениях по умолчанию он почему-то остался.
И теперь формирую массив $new_value для обновления записи следующий:
Код |
---|
Array
(
[13530] => Array
(
[VALUE] => Array
(
[code] =>
[name] => взрослый + ребенок
[price] => 1800
[stock_count] => 7
)
)
[13531] => Array
(
[VALUE] => Array
(
[code] =>
[name] => взрослый + ребенок 31 дек
[price] => 2000
[stock_count] => 10
)
)
)
|
и обновляю
Код |
---|
CIBlockElement::SetPropertyValuesEx($product_id, $IBLOCK_ID, ['tickets_variants' => $new_value]);
|
после чего всё прекрасно обновляется
спасибо разработчику за классный модуль, уже много лет пользуюсь, но вот иногда забываю как обновлять, оставлю это здесь для себя, если есть необходимость, обязательно раскручиваю на него заказчика)