...Человеческий поиск в разработке...
- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/webform/resultentity.php
- Класс: Bitrix\Crm\WebForm\ResultEntity
- Вызов: ResultEntity::add
public function add($schemeId, $fields) { $this->entityMap = Entity::getMap(); $this->scheme = $schemeId; $this->fields = $this->prepareFields($fields); $this->selector = $this->createSelector(); $this->performTrace(); $results = $this->fireEvent('onSiteFormFill', [ 'id' => $this->getFormId(), 'fields' => $this->fields, 'properties' => $this->placeholders, 'assignedById' => $this->assignedById, ]); foreach ($results as $result) { if ($result->getType() === \Bitrix\Main\EventResult::ERROR) { continue; } $resultData = $result->getParameters(); if (isset($resultData['assignedById']) && $resultData['assignedById'] > 0) { $this->assignedById = $resultData['assignedById']; } } try { switch($schemeId) { case Entity::ENUM_ENTITY_SCHEME_CONTACT: $this->addClient(); break; case Entity::ENUM_ENTITY_SCHEME_LEAD: $this->addLead(); break; case Entity::ENUM_ENTITY_SCHEME_LEAD_INVOICE: $this->addLead(['ADD_INVOICE' => true]); break; case Entity::ENUM_ENTITY_SCHEME_DEAL: $this->addDeal(); break; case Entity::ENUM_ENTITY_SCHEME_QUOTE: $this->addQuote(); break; case Entity::ENUM_ENTITY_SCHEME_DEAL_INVOICE: $this->addDeal(['ADD_INVOICE' => true]); break; case Entity::ENUM_ENTITY_SCHEME_QUOTE_INVOICE: $this->addQuote(['ADD_INVOICE' => true]); break; case Entity::ENUM_ENTITY_SCHEME_CONTACT_INVOICE: $this->addClient(['ADD_INVOICE' => true]); break; default: $scheme = Entity::getSchemes($schemeId); if (!$scheme) { return; } $dynamicTypeId = null; $hasInvoice = false; foreach ($scheme['ENTITIES'] as $entityTypeName) { $entityTypeId = \CCrmOwnerType::resolveId($entityTypeName); if (\CCrmOwnerType::isUseDynamicTypeBasedApproach($entityTypeId)) { $dynamicTypeId = $entityTypeId; } elseif ($entityTypeId === \CCrmOwnerType::Invoice) { $hasInvoice = true; } } if ($dynamicTypeId) { $this->addDynamic([ 'DYNAMIC_TYPE_ID' => $dynamicTypeId, 'ADD_INVOICE' => $hasInvoice ]); } break; } $this->fillTrace(); $this->addActivity(); $this->addConsent(); $this->runAutomation(); WebFormTrigger::onFormFill($this); if(count($this->resultEntityPack) > 0) { ResultEntityTable::addBatch($this->formId, $this->resultEntityPack); } $eventData = [ 'id' => $this->getFormId(), 'fields' => $this->fields, 'properties' => $this->placeholders, 'result' => [ 'entities' => $this->getResultEntities(), ], ]; $eventNamePostfix = $this->placeholders['eventNamePostfix'] ?? ''; if ($eventNamePostfix && preg_match('/\w+/', $eventNamePostfix)) { (new Main\Event('crm', 'onSiteFormFilled' . $eventNamePostfix, $eventData))->send(); } (new Main\Event('crm', 'onSiteFormFilled', $eventData))->send(); } catch(\Exception $e) { throw $e; } }