• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/integration/sale/reservation/config/storage.php
  • Класс: Bitrix\Crm\Integration\Sale\Reservation\Config\Storage
  • Вызов: Storage::saveEntityValues
static function saveEntityValues(Entity $entity): void
{
	$scheme = $entity::getScheme();
	$values = $entity->getValues();

	$result = [];
	foreach ($scheme as $schemeItem)
	{
		if (!isset($values[$schemeItem['code']]))
		{
			continue;
		}
		$value = $values[$schemeItem['code']];

		if ($schemeItem['type'] === TypeDictionary::LIST)
		{
			$listValues = array_column($schemeItem['values'], 'code');
			if (!in_array($value, $listValues, true))
			{
				continue;
			}
		}
		elseif ($schemeItem['type'] === TypeDictionary::OPTION)
		{
			$value = (bool)$value;
		}
		elseif ($schemeItem['type'] === TypeDictionary::TEXT)
		{
			$value = (string)$value;
		}
		elseif ($schemeItem['type'] === TypeDictionary::INTEGER)
		{
			$value = (int)$value > 0 ? (int)$value : 0;
		}

		$result[$schemeItem['code']] = $value;
	}

	Option::set(
		'crm',
		self::RESERVATION_OPTION_TEMPLATE . $entity::getCode(),
		Json::encode($result)
	);
}