- Модуль: iblock
- Путь к файлу: ~/bitrix/modules/iblock/lib/orm/commonelement.php
- Класс: BitrixIblockORMCommonElement
- Вызов: CommonElement::sysConvertPropertyValue
protected function sysConvertPropertyValue($value, $field)
{
$valueEntity = $field->getRefEntity();
$valueObjectClass = $valueEntity->getObjectClass();
if ($value instanceof $valueObjectClass)
{
// nothing to do
return $value;
}
/** @var EntityObject $valueObject */
$valueObject = $valueEntity->createObject();
// if we don't have primary right now, repeat setter later
if ($this->state == State::RAW)
{
$this->sysAddOnPrimarySetListener(function (EntityObject $localObject) use ($valueObject) {
$valueObject->set('IBLOCK_ELEMENT_ID', $localObject->get('ID'));
});
}
else
{
// set base fields
$valueObject->set('IBLOCK_ELEMENT_ID', $this->get('ID'));
}
if ($valueEntity->hasField('IBLOCK_PROPERTY_ID'))
{
$valueObject->set('IBLOCK_PROPERTY_ID', $field->getIblockElementProperty()->getId());
}
// set value fields
if ($value instanceof PropertyValue)
{
$valueObject->set('VALUE', $value->getValue());
if ($value->hasDescription())
{
$valueObject->set('DESCRIPTION', $value->getDescription());
}
}
else
{
$valueObject->set('VALUE', $value);
}
return $valueObject;
}