• Модуль: imopenlines
  • Путь к файлу: ~/bitrix/modules/imopenlines/lib/crm/common.php
  • Класс: BitrixImOpenLinesCrmCommon
  • Вызов: Common::update
static function update($type, $id, $updateFields): bool
{
	$result = false;
	$entity = null;
	$options = [];

	if(Loader::includeModule('crm'))
	{
		if ($type === Crm::ENTITY_LEAD)
		{
			$entity = new CCrmLead(false);
		}
		elseif ($type === Crm::ENTITY_COMPANY)
		{
			$entity = new CCrmCompany(false);

			unset(
				$updateFields['COMPANY_ID'],
				$updateFields['CONTACT_ID'],
				$updateFields['NAME'],
				$updateFields['LAST_NAME'],
				$updateFields['SECOND_NAME'],
				$updateFields['SOURCE_DESCRIPTION']
			);
		}
		elseif ($type === Crm::ENTITY_CONTACT)
		{
			$entity = new CCrmContact(false);

			unset(
				$updateFields['COMPANY_ID'],
				$updateFields['CONTACT_ID']
			);
		}
		elseif ($type === Crm::ENTITY_DEAL)
		{
			$entity = new CCrmDeal(false);

			unset(
				$updateFields['COMPANY_ID'],
				$updateFields['CONTACT_ID'],
				$updateFields['FM'],
				$updateFields['NAME'],
				$updateFields['LAST_NAME'],
				$updateFields['SECOND_NAME']
			);
		}

		if(!empty($updateFields['EDITOR_ID']))
		{
			$options['CURRENT_USER'] = $updateFields['EDITOR_ID'];

			unset($updateFields['EDITOR_ID']);
		}

		if(
			$entity !== null
			&& !empty($updateFields)
			&& (
				!isset($updateFields['FM'])
				|| !empty($updateFields['FM'])
			)
		)
		{
			$previousFields = $entity::GetByID($id, false) ?: [];
			if ($entity->Update($id, $updateFields, true, true, $options))
			{
				$errors = [];
				CCrmBizProcHelper::AutoStartWorkflows(
					CCrmOwnerType::ResolveID($type),
					$id,
					CCrmBizProcEventType::Edit,
					$errors
				);

				//Region automation
				if (BitrixCrmAutomationFactory::isAutomationRunnable(CCrmOwnerType::ResolveID($type)))
				{
					$starter = new BitrixCrmAutomationStarter(CCrmOwnerType::ResolveID($type), $id);
					$starter->runOnUpdate($updateFields, $previousFields);
				}
				//End region
			}

			$result = true;
		}
	}

	return $result;
}