Обновлено 28.07.2026

Позволяет модифицировать данные перед добавлением/обновлением сделки, контакта или компании. Также позволяет отменить добавление/обновление. Параметром под номером 3 можно вернуть свой флаг того, что добавление/обновление производить не нужно. Если обработчик вернёт ошибку, данные для добавления будут сброшены.

Данное событие вызывается при обновлении/добавлении сделки, контакта или компании, при обновлении заказа или создании заказа без поиска дубликатов.

Параметры

0. Rover\AmoSale\Directory\Entity\Event — текущее событие интеграции

1. Rover\AmoSale\Directory\Entity\AbstractProfile — текущий профиль интеграции

2. AmoCRM\Models\BaseApiModel — добавляемая/обновляемая сущность амоСРМ (AmoCRM\Models\LeadModel, AmoCRM\Models\ContactModel, AmoCRM\Models\CompanyModel).

Пример

Для примера, будем отмечать кастомное поле типа чекбокс в сделке, если у создаваемого заказа задана определенная служба доставки.


use AmoCRM\Models\CustomFieldsValues\CheckboxCustomFieldValuesModel;
use AmoCRM\Models\CustomFieldsValues\ValueCollections\CheckboxCustomFieldValueCollection;
use AmoCRM\Models\CustomFieldsValues\ValueCollections\NullCustomFieldValueCollection;
use AmoCRM\Models\CustomFieldsValues\ValueModels\CheckboxCustomFieldValueModel;
use AmoCRM\Models\LeadModel;
use Bitrix\Main\EventManager;
use Bitrix\Main\Event;
use Bitrix\Main\Loader;
use Bitrix\Sale\Order;
use Bitrix\Sale\Shipment;
use Rover\AmoSale\Task\Order\OrderCreate;

$specialDeliveryId = 8; // ид службы доставки $cfCheckboxId = 888888; // ид кастомоного поля типа чекбокс $eventManager = EventManager::getInstance(); $eventManager->addEventHandler('rover.amosale', 'beforeSaveAmoEntity', function (Event $event) { /** @var \Rover\AmoSale\Directory\Entity\Event $eventEntity */ $eventEntity = $event->getParameter(0); $amoModel = $event->getParameter(2); if ($eventEntity->getCollection()->offsetGet('UF_TYPE') != OrderCreate::getType()) { return; } if (get_class($amoModel) != LeadModel::class) { return; } if (!Loader::includeModule('sale')) { return; } $order = Order::load($eventEntity->getEntityId()); if (!$order) { return; } $needCheckbox = false; /** @var Shipment $shipment */ foreach ($order->getShipmentCollection() as $shipment) { if ($shipment->isSystem()) { continue; } if ($shipment->getDeliveryId() == $specialDeliveryId) { $needCheckbox = true; } } $customFieldsValues = $amoModel->getCustomFieldsValues(); $checkboxValue = $customFieldsValues->getBy('fieldId', $cfCheckboxId); if ($needCheckbox) { if (empty($checkboxValue)) { $checkboxValue= new CheckboxCustomFieldValuesModel(); $checkboxValue->setFieldId($cfCheckboxId); $customFieldsValues->add($checkboxValue); } $checkboxValue->setValues( (new CheckboxCustomFieldValueCollection())->add( (new CheckboxCustomFieldValueModel())->setValue(true) ) ); } else { if (!empty($checkboxValue)) { $checkboxValue->setValues( (new NullCustomFieldValueCollection()) ); } } });