- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/controller/form.php
- Класс: Bitrix\Crm\Controller\Form
- Вызов: Form::checkAction
public function checkAction(array $options) { if (!$this->checkFormAccess()) { return []; } if ($options['templateId'] && !$options['id']) { return Main\DI\ServiceLocator::getInstance() ->get('crm.service.webform.scenario') ->check($options['templateId']) ; } $schemeId = (int) $options['document']['scheme'] ?? null; if (!$schemeId || empty($options['data']['fields']) || !is_array($options['data']['fields'])) { return []; } $fieldNames = []; foreach ($options['data']['fields'] as $field) { if (!is_array($field) || empty($field['name'])) { continue; } $fieldNames[] = $field['name']; } if(!in_array($schemeId, WebForm\Entity::getSchemesCodes())) { return []; } $syncErrors = []; $syncFields = []; $fieldNames = (new WebForm\FieldSynchronizer())->getSynchronizeFields($schemeId, $fieldNames); foreach ($options['data']['fields'] as $field) { if ($field['type'] === 'resourcebooking' && !WebForm\Entity::isSchemeSupportEntity($schemeId, (int) $field['editing']['entityId'])) { $syncErrors[] = Main\Localization\Loc::getMessage( 'CRM_WEBFORM_FIELD_SYNCHRONIZER_ERR_RES_BOOK', [ '%fieldCaption%' => $field['label'], '%entityCaption%' => implode( ', ', array_map( function ($entityName) { return \CCrmOwnerType::getCategoryCaption(\CCrmOwnerType::resolveID($entityName)); }, WebForm\Entity::getSchemes($schemeId)['ENTITIES'] ?? [] ) ), ] ); continue; } if (!is_array($field) || empty($field['name']) || !in_array($field['name'], $fieldNames)) { continue; } $syncFields[] = $field; } return [ 'sync' => [ 'errors' => $syncErrors, 'fields' => $syncFields, ], ]; }