Давольно часто приходится в момент оформления заказа формировать данные по своему. В данной ситуации делается некая проверка по имеющим профилям покупателей. Данный механизм проверяет, есть ли данный ИНН в других учетных записях пользователей. Если есть, то не даст возможность оформить заказа клиенту. Данный метод подходит для оптовых клиентов.
// События на сохранение заказа $eventManager->addEventHandler('sale', 'OnSaleOrderBeforeSaved', 'OnSaleOrderBeforeSavedCustom'); function OnSaleOrderBeforeSavedCustom(\Bitrix\Main\Event $event) { $order = $event->getParameter("ENTITY"); //Собираем свойства заказа $orderProps = []; /** @var Bitrix\Crm\Order\PropertyValue $orderProp */ foreach ($order->getPropertyCollection() as $propId => $orderProp) { if (!empty($orderProp->getField("CODE"))) { $orderProps[$orderProp->getField('CODE')] = trim($orderProp->getValue()); } } //Метод возвращает результат выборки записей из профилей покупателя //Далее по полученным полям находим информацию по ИНН $arUserProps = CSaleOrderUserPropsValue::GetList( array("ID" => "ASC"), Array( "CODE" => 'INN', "VALUE" => $orderProps['INN'] ) )->Fetch(); //если значение у свойства профиля существует //то информируем об этого пользователя if ($arUserProps) { $event->addResult(new \Bitrix\Main\EventResult( \Bitrix\Main\EventResult::ERROR, new \Bitrix\Sale\ResultError('Такой ИНН уже используется в другой учетной записи пользователя.<br> Если это ошибка, обратитесь за помощью к нам') )); } }