...Человеческий поиск в разработке...
- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/classes/general/restservice.php
- Класс: \CCrmDealRestProxy
- Вызов: CCrmDealRestProxy::innerUpdate
protected function innerUpdate($ID, &$fields, &$errors, array $params = null) { $userPermissions = CCrmPerms::GetCurrentUserPermissions(); $categoryID = CCrmDeal::GetCategoryID($ID); if($categoryID < 0) { $errors[] = !CCrmDeal::CheckUpdatePermission(0, $userPermissions) ? 'Access denied' : 'Not found'; return false; } elseif(!CCrmDeal::CheckUpdatePermission($ID, $userPermissions, $categoryID)) { $errors[] = 'Access denied.'; return false; } $diskQuotaRestriction = \Bitrix\Crm\Restriction\RestrictionManager::getDiskQuotaRestriction(); if (!$diskQuotaRestriction->hasPermission()) { $errors[] = $diskQuotaRestriction->getErrorMessage(); return false; } $entity = self::getEntity(false); $compare = true; $options = array(); if(!$this->isRequiredUserFieldCheckEnabled()) { $options['DISABLE_REQUIRED_USER_FIELD_CHECK'] = true; } if(is_array($params)) { if(isset($params['REGISTER_HISTORY_EVENT'])) { $compare = mb_strtoupper($params['REGISTER_HISTORY_EVENT']) === 'Y'; } if(isset($params['REGISTER_SONET_EVENT'])) { $options['REGISTER_SONET_EVENT'] = mb_strtoupper($params['REGISTER_SONET_EVENT']) === 'Y'; } } //check STAGE_ID changes $arPresentFields = []; if (isset($fields['STAGE_ID'])) { $dbDocumentList = CCrmDeal::GetListEx( array(), array('ID' => $ID, 'CHECK_PERMISSIONS' => 'N'), false, false, array('ID', 'STAGE_ID') ); $arPresentFields = $dbDocumentList->Fetch(); if (!is_array($arPresentFields)) { $arPresentFields = []; } } $defaultRequisiteLinkParams = Requisite\EntityLink::determineRequisiteLinkBeforeSave( CCrmOwnerType::Deal, $ID, Requisite\EntityLink::ENTITY_OPERATION_UPDATE, $fields ); $result = $entity->Update($ID, $fields, $compare, true, $options); if($result !== true) { $errors[] = $entity->LAST_ERROR; } else { Requisite\EntityLink::register( CCrmOwnerType::Deal, (int)$ID, $defaultRequisiteLinkParams['REQUISITE_ID'], $defaultRequisiteLinkParams['BANK_DETAIL_ID'] ); self::traceEntity(\CCrmOwnerType::Deal, $ID, $fields, true); if(self::isBizProcEnabled()) { CCrmBizProcHelper::AutoStartWorkflows( CCrmOwnerType::Deal, $ID, CCrmBizProcEventType::Edit, $errors ); } //Region automation $starter = new \Bitrix\Crm\Automation\Starter(\CCrmOwnerType::Deal, $ID); $starter->setContextToRest()->setUserId($this->getCurrentUserID()); $starter->runOnUpdate($fields, $arPresentFields); //End region } return $result; }