• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/Model/FieldContentTypeTable.php
  • Класс: Bitrix\Crm\Model\FieldContentTypeTable
  • Вызов: FieldContentTypeTable::saveForItem
static function saveForItem(ItemIdentifier $item, array $fieldToContentTypeMap): Result
{
	$newMap = array_filter(
		$fieldToContentTypeMap,
		static function ($contentTypeId, $fieldName): bool {
			return \CCrmContentType::IsDefined($contentTypeId) && is_string($fieldName) && !empty($fieldName);
		},
		ARRAY_FILTER_USE_BOTH,
	);
	$newMap = array_map('intval', $newMap);

	$oldObjects =
		self::query()
			->setSelect(['*'])
			->where('ENTITY_TYPE_ID', $item->getEntityTypeId())
			->where('ENTITY_ID', $item->getEntityId())
			->exec()
			->fetchCollection()
	;

	[$toSave, $toDelete] = self::prepareChangedObjects($item, $oldObjects, $newMap);

	$result = new Result();

	/** @var EO_FieldContentType $entityObject */
	foreach ($toSave as $entityObject)
	{
		$saveResult = $entityObject->save();
		if (!$saveResult->isSuccess())
		{
			$result->addErrors($saveResult->getErrors());
		}
	}

	/** @var EO_FieldContentType $entityObject */
	foreach ($toDelete as $entityObject)
	{
		$deleteResult = $entityObject->delete();
		if (!$deleteResult->isSuccess())
		{
			$result->addErrors($deleteResult->getErrors());
		}
	}

	return $result;
}