• Модуль: iblock
  • Путь к файлу: ~/bitrix/modules/iblock/lib/grid/panel/ui/actions/item/elementgroup/clearcountergroupchild.php
  • Класс: BitrixIblockGridPanelUIActionsItemElementGroupClearCounterGroupChild
  • Вызов: ClearCounterGroupChild::processClearCounterElements
private function processClearCounterElements(bool $isSelectedAllRows, array $ids): Result
{
	$result = new Result();
	$entity = new CIBlockElement();

	$filter = [
		'IBLOCK_ID' => $this->getIblockId(),
	];
	if (!$isSelectedAllRows)
	{
		$filter['ID'] = $ids;
	}

	$rows = CIBlockElement::GetList(
		[],
		$filter + ['CHECK_PERMISSIONS' => 'N'],
		false,
		false,
		[
			'ID',
		]
	);
	while ($row = $rows->Fetch())
	{
		$id = (int)$row['ID'];

		if (!$this->getIblockRightsChecker()->canEditElement($id))
		{
			$message = Loc::getMessage('IBLOCK_GRID_PANEL_ELEMENT_ACTION_PANEL_ERROR_ACCESS_DENIED', [
				'#ID#' => $id,
			]);
			$result->addError(
				new Error($message)
			);

			continue;
		}

		$fields = [
			'SHOW_COUNTER' => false,
			'SHOW_COUNTER_START' => false,
		];
		$updateResult = $entity->Update($id, $fields);
		if (!$updateResult && $entity->LAST_ERROR)
		{
			$result->addError(
				new Error($entity->LAST_ERROR)
			);
		}
	}

	return $result;
}