Найти в Дзене
ZZcode

Bitrix при интеграции с 1с не заполняется свойство список

Ниже будет приведён говно код, костыль - костылевич. Для использования не рекомендован, не кому! После не ведаемых мне работ в 1с перестало заполнятся свойство Цвет (тип список) в bitrix. Нужно было решить проблему сейчас не дожидаясь программиста 1с что бы разобраться что там выгружает 1с. Обратил внимание что цвет прилетает, но находится только в свойстве характеристики, осталось дело за малым вытащить его и загрузить в свойство цвет. Получаем список всех элементов инфоблока с помощью Getlist. По сколько у меня очень мало вероятно что изменится когда не будь цвет у элемента, что бы не изменять постоянно элемент добавляю в фильтр "PROPERTY_TSVET_VALUE" => false на выходе получу список элементов с не заполненным свойством. Далее нужно получится все значение цветов, что бы каждый раз не создавать новые для этого использую CIBlockPropertyEnum::GetList что бы получить значения свойства тип список. Формирую массив $color[название цвета] = Id значения. Перебираем все элементы, по
Ниже будет приведён говно код, костыль - костылевич. Для использования не рекомендован, не кому!

После не ведаемых мне работ в 1с перестало заполнятся свойство Цвет (тип список) в bitrix. Нужно было решить проблему сейчас не дожидаясь программиста 1с что бы разобраться что там выгружает 1с.

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

Получаем список всех элементов инфоблока с помощью Getlist.

По сколько у меня очень мало вероятно что изменится когда не будь цвет у элемента, что бы не изменять постоянно элемент добавляю в фильтр

"PROPERTY_TSVET_VALUE" => false

на выходе получу список элементов с не заполненным свойством.

Далее нужно получится все значение цветов, что бы каждый раз не создавать новые для этого использую

CIBlockPropertyEnum::GetList

что бы получить значения свойства тип список.

Формирую массив

$color[название цвета] = Id значения.

Перебираем все элементы, получаем значения свойства Характеристики и их описание. Фильтруем только нужные значения по описанию значения Цвет.

Сопоставляем по ключу $color[$cvet] и обновляем значение свойства у элемента.

Предвидим на будущие что появились уже новые цвета, по этому добавляем условие что если цвет не найден, создаём новое значение у свойства Цвет (тип список).

if ($PropID = $ibpenum->Add(array('PROPERTY_ID' => ID свойства, 'VALUE' => $cvet)));

на выходе получаем $PropID - Id созданного нового значения у свойства и обновляем элемент

Код целиком