• Модуль: 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;
}