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