...Человеческий поиск в разработке...
- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/webform/entityfieldprovider.php
- Класс: Bitrix\Crm\WebForm\EntityFieldProvider
- Вызов: EntityFieldProvider::getFieldsInternal
static function getFieldsInternal($entityName, $entity, array $options = []): array { $fieldInfoMethodName = $entity['GET_FIELDS_CALL'] ?? Entity::getDefaultFieldsInfoMethod(); if (is_array($fieldInfoMethodName) || is_callable($fieldInfoMethodName)) { $fieldsFunction = $fieldInfoMethodName; $isAlreadyPreparedFields = true; $ufEntityId = null; } else { $className = $entity['CLASS_NAME']; $ufEntityId = $className::$sUFEntityID; $fieldsFunction = [$className, $fieldInfoMethodName]; $isAlreadyPreparedFields = false; } if (!is_callable($fieldsFunction)) { throw new SystemException('Provider fields method not found in "' . $entity['CLASS_NAME'] . '".'); } $fieldsInfo = call_user_func_array($fieldsFunction, []); if ($isAlreadyPreparedFields) { $commonExcludedFields = Entity::getEntityMapCommonExcludedFields(); foreach ($fieldsInfo as $fieldId => $fieldData) { if (!in_array($fieldId, $commonExcludedFields)) { continue; } unset($fieldsInfo[$fieldId]); } } else { $userFieldsInfo = []; self::prepareUserFieldsInfo($userFieldsInfo, $ufEntityId); $fieldsInfo = $fieldsInfo + $userFieldsInfo; } if (!empty($entity['HAS_MULTI_FIELDS'])) { self::prepareMultiFieldsInfo($fieldsInfo); } $fieldsInfo = self::prepareFields($fieldsInfo); $fieldsMap = self::prepareWebFormFields($entityName, $fieldsInfo); //Add delivery address to company/contact/lead fields if (in_array($entityName, [\CCrmOwnerType::CompanyName, \CCrmOwnerType::ContactName], true)) { if (empty($options['hideVirtual'])) { $fieldsMap[] = [ 'type' => 'string', 'entity_field_name' => "DELIVERY_ADDRESS", 'entity_name' => $entityName, 'name' => "{$entityName}_DELIVERY_ADDRESS", 'caption' => Loc::getMessage("CRM_WEBFORM_FIELD_PROVIDER_DELIVERY_ADDRESS_CAPTION"), 'multiple' => false, 'required' => false, ]; } /* $fieldsMap[] = [ 'type' => 'rq', 'entity_field_name' => "RQ", 'entity_name' => $entityName, 'name' => "{$entityName}_RQ", 'caption' => Loc::getMessage("CRM_WEBFORM_FIELD_PROVIDER_RQ_CAPTION"), 'multiple' => false, 'required' => false, 'ui' => [ 'setup' => 'crm.field.requisite.setup', ], ]; */ if (empty($options['hideRequisites'])) { $entityTypeId = \CCrmOwnerType::Company; //\CCrmOwnerType::resolveID($entityName); $preset = !is_null($options['presetId']) ? Requisite::instance()->getPreset($options['presetId']) : Requisite::instance()->getDefaultPreset($entityTypeId); foreach (($preset['fields'] ?? []) as $field) { if (mb_strpos($field['name'], 'RQ_') !== 0) { $field['name'] = 'RQ_' . $field['name']; } $fieldName = $field['name'] ?? ''; $fieldsMap[] = [ 'type' => $field['type'], 'entity_field_name' => $fieldName, 'entity_name' => $entityName, 'name' => "{$entityName}_$fieldName", 'caption' => $field['label'] ?? '', 'multiple' => $field['multiple'] ?? false, 'required' => $field['required'] ?? false, 'size' => $field['size'] ?? null, ]; } } } return $fieldsMap; }