• Модуль: catalog
  • Путь к файлу: ~/bitrix/modules/catalog/lib/product/systemfield.php
  • Класс: BitrixCatalogProductSystemField
  • Вызов: SystemField::handlerHighloadBlockBeforeUpdate
static function handlerHighloadBlockBeforeUpdate(ORMEvent $event): ORMEventResult
{
	$result = new ORMEventResult();

	if (CatalogProductSystemFieldTypeHighloadBlock::isAllowed())
	{
		$primary = $event->getParameter('primary');
		$fields = $event->getParameter('fields');
		if (!empty($primary))
		{
			$iterator = HighloadHighloadBlockTable::getList([
				'filter' => $primary,
			]);
			$row = $iterator->fetch();
			unset($iterator);
			if (!empty($row))
			{
				$fieldList = self::getBuildedFieldList();
				foreach ($fieldList as $field)
				{
					if ($field::getTypeId() !== CatalogProductSystemFieldTypeHighloadBlock::class)
					{
						continue;
					}
					if (!$field::isAllowed() || !$field::isExists())
					{
						continue;
					}
					$config = $field::getConfig();

					if ($row['NAME'] === $config['HIGHLOADBLOCK']['NAME'])
					{
						if (
							(isset($fields['NAME']) && $row['NAME'] != $fields['NAME'])
							|| (isset($fields['TABLE_NAME']) && $row['TABLE_NAME'] != $fields['TABLE_NAME'])
						)
						{
							$result->addError(new ORMEntityError(
								Loc::getMessage(
									'BX_CATALOG_PRODUCT_SYSTEMFIELD_ERR_CANNOT_UPDATE_HIGHLOADBLOCK',
									['#NAME#' => $row['NAME']]
								)
							));
						}
					}
					unset($config);
				}
				unset($field, $fieldList);
			}
			unset($row);
		}
		unset($primary);
	}

	return $result;
}