- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/entityrequisite.php
- Класс: Bitrix\Crm\EntityRequisite
- Вызов: EntityRequisite::checkBeforeAdd
public function checkBeforeAdd($fields, $options = array())
{
unset($fields['ID'], $fields['DATE_MODIFY'], $fields['MODIFY_BY_ID']);
$fields['DATE_CREATE'] = new \Bitrix\Main\Type\DateTime();
$fields['CREATED_BY_ID'] = \CCrmSecurityHelper::GetCurrentUserID();
$result = $this->checkRqFieldsBeforeSave(0, $fields);
if (!$result->isSuccess())
{
return $result;
}
$this->separateAddressFields($fields);
global $USER_FIELD_MANAGER, $APPLICATION;
$result = new Entity\AddResult();
$entity = RequisiteTable::getEntity();
try
{
// set fields with default values
foreach ($entity->getFields() as $field)
{
$fieldName = $field->getName();
if ($field instanceof Entity\ScalarField && !array_key_exists($fieldName, $fields))
{
$defaultValue = $field->getDefaultValue();
if ($defaultValue !== null)
{
$fields[$fieldName] = $field->getDefaultValue();
}
}
else if ($field instanceof Entity\BooleanField && array_key_exists($fieldName, $fields))
{
if ($fields[$fieldName] !== 'Y' && $fields[$fieldName] !== 'N'
&& $fields[$fieldName] !== true && $fields[$fieldName] !== false)
{
$fields[$fieldName] = $field->getDefaultValue();
}
}
}
// uf values
$userFields = array();
// separate userfields
if ($entity->getUfId())
{
// collect uf data
$userfields = $USER_FIELD_MANAGER->GetUserFields($entity->getUfId());
foreach ($userfields as $userfield)
{
if (array_key_exists($userfield['FIELD_NAME'], $fields))
{
// copy value
$userFields[$userfield['FIELD_NAME']] = $fields[$userfield['FIELD_NAME']];
// remove original
unset($fields[$userfield['FIELD_NAME']]);
}
}
}
// check data
RequisiteTable::checkFields($result, null, $fields);
// check uf data
if (!empty($userFields))
{
if (!$USER_FIELD_MANAGER->CheckFields($entity->getUfId(), false, $userFields))
{
if (is_object($APPLICATION) && $APPLICATION->getException())
{
$e = $APPLICATION->getException();
$result->addError(new Entity\EntityError($e->getString()));
$APPLICATION->resetException();
}
else
{
$result->addError(new Entity\EntityError("Unknown error while checking userfields"));
}
}
}
// check if there is still some data
if (!count($fields + $userFields))
{
$result->addError(new Entity\EntityError("There is no data to add."));
}
// return if any error
if (!$result->isSuccess(true))
{
return $result;
}
}
catch (\Exception $e)
{
// check result to avoid warning
$result->isSuccess();
throw $e;
}
return $result;
}