• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/Service/Factory/SmartDocument.php
  • Класс: Bitrix\Crm\Service\Factory\SmartDocument
  • Вызов: SmartDocument::getDeleteOperation
public function getDeleteOperation(Item $item, Context $context = null): Operation\Delete
{
	$operation = parent::getDeleteOperation($item, $context);

	$operation->addAction(
		Operation::ACTION_BEFORE_SAVE,
		new class extends Operation\Action {
			public function process(Item $item): Result
			{
				$result = new Result();

				if (\Bitrix\Crm\Settings\Crm::isDocumentSigningEnabled())
				{
					$document = Document::resolveByEntity('SMART', $item->getId());
					if ($document && !$document->canBeChanged())
					{
						$result->addError(new \Bitrix\Main\Error(
							Loc::getMessage('CRM_TYPE_SMART_DOCUMENT_DELETE_DENIED'),
							'SIGN_ERROR_DENIED'
						));
					}
				}

				return $result;
			}
		}
	);

	$operation->addAction(
		Operation::ACTION_AFTER_SAVE,
		new class extends Operation\Action {
			public function process(Item $item): Result
			{
				if (\Bitrix\Crm\Settings\Crm::isDocumentSigningEnabled())
				{
					$itemOld = \Bitrix\Crm\Service\Operation\Action::getItemBeforeSave();

					if ($itemOld)
					{
						$document = Document::resolveByEntity('SMART', $itemOld->getId());
						if ($document)
						{
							$document->unlink();
						}
					}
				}

				return new Result();
			}
		}
	);

	return $operation;
}