...Человеческий поиск в разработке...
- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_document_deal.php
- Класс: \CCrmDocumentDeal
- Вызов: CCrmDocumentDeal::CreateDocument
static function CreateDocument($parentDocumentId, $arFields) { if(!is_array($arFields)) { throw new Exception('Entity fields must be array'); } global $DB; $arDocumentID = self::GetDocumentInfo($parentDocumentId); if ($arDocumentID == false) { $arDocumentID['TYPE'] = $parentDocumentId; } $arFields = self::performTypeCast($arDocumentID, $arFields); $arFields = self::performTypeCast4CategoryAndStage($arFields); $useTransaction = static::shouldUseTransaction(); if ($useTransaction) { $DB->StartTransaction(); } $CCrmEntity = new CCrmDeal(false); $id = $CCrmEntity->Add( $arFields, true, [ 'DISABLE_USER_FIELD_CHECK' => true, 'REGISTER_SONET_EVENT' => true, 'CURRENT_USER' => static::getSystemUserId(), ] ); if (!$id || $id <= 0) { if ($useTransaction) { $DB->Rollback(); } throw new Exception($CCrmEntity->LAST_ERROR); } if (isset($arFields['TRACKING_SOURCE_ID'])) { Crm\Tracking\UI\Details::saveEntityData(\CCrmOwnerType::Deal, $id, $arFields); } if (COption::GetOptionString('crm', 'start_bp_within_bp', 'N') == 'Y') { $CCrmBizProc = new CCrmBizProc('DEAL'); if (false === $CCrmBizProc->CheckFields(false, true)) { if ($useTransaction) { $DB->Rollback(); } throw new Exception($CCrmBizProc->LAST_ERROR); } if ($id && $id > 0 && !$CCrmBizProc->StartWorkflow($id)) { if ($useTransaction) { $DB->Rollback(); } throw new Exception($CCrmBizProc->LAST_ERROR); } } //region automation $starter = new Crm\Automation\Starter(\CCrmOwnerType::Deal, $id); $starter->setContextToBizproc()->runOnAdd(); //endregion if ($id && $id > 0 && $useTransaction) { $DB->Commit(); } return $id; }