CIBlockElement

CIBlockElement::SetPropertyValues()

Следует отметить вот такой порядок параметров

CIBlockElement::SetPropertyValues(
    $i_ElementID, 
    $i_IblockID, 
    array('PROPERTY_CODE' => 'PROPERTY_VALUE')
);

В этом случае очень важный момент, при обновлении нужно задать все свойства элемента, иначе те которые не заданы будут сброшены.

Это напоминает логику работы CIBlockElement::Update(), если не все свойства указать в PROPERTY_VALUES.