• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/helpers/admin/businessvalue.php
  • Класс: BitrixSaleHelpersAdminBusinessValueControl
  • Вызов: BusinessValueControl::getProviderInputs
static function getProviderInputs(array $providers, array $personTypes)
{
	$personProviderInput = $personProviderValueInput = array();

	$onChange = "bizvalChangeValue(this)";

	foreach ($personTypes as $personTypeId => $personType)
	{
		$providerOptions = array();

		foreach ($providers as $providerKey => $provider)
		{
			if (isset($provider['INPUT']) && is_array($provider['INPUT']))
			{
				$provider['INPUT']['REQUIRED'] = true;
				$provider['INPUT']['ONCHANGE'] = $onChange;

				$providerOptions[$providerKey] = $provider['NAME'] ?? $providerKey;
				$personProviderValueInput[$personTypeId][$providerKey] = $provider['INPUT'];
			}
			elseif (isset($provider['FIELDS']) && is_array($provider['FIELDS']))
			{
				$fields = $provider['FIELDS'];
				$fieldOptions = array();

				// group fields
				foreach ($fields as $fieldKey => $field)
				{
					if (
						is_array($field)
						&& (empty($field['PERSON_TYPE_ID']) || $field['PERSON_TYPE_ID'] == $personTypeId)
					)
					{
						$group = $field['GROUP'] ?? null; // null is GENERAL
						$fieldOptions[$group][$fieldKey] = $field['NAME'] ?? $fieldKey;
					}
				}

				if (count($fieldOptions) == 1)
				{
					$fieldOptions = reset($fieldOptions);
				}
				elseif (is_array($provider['FIELDS_GROUPS']))
				{
					self::sortRenameGroups($fieldOptions, $provider['FIELDS_GROUPS']);
				}

				if (! empty($fieldOptions))
				{
					$providerOptions[$providerKey] = $provider['NAME'] ?? $providerKey;
					$personProviderValueInput[$personTypeId][$providerKey] = array('TYPE' => 'ENUM', 'OPTIONS' => $fieldOptions, 'ONCHANGE' => $onChange);
				}
			}
			else
			{
				$providerOptions[$providerKey] = $provider['NAME'] ?? $providerKey;
				$personProviderValueInput[$personTypeId][$providerKey] = array('TYPE' => 'STRING', 'SIZE' => 30, 'ONCHANGE' => $onChange);
			}
		}

		$personProviderValueInput[$personTypeId][''] = array('TYPE' => 'STRING', 'SIZE' => 30); // for filter only

		if ($providerOptions)
		{
			$personProviderInput[$personTypeId] = array(
				'TYPE'     => 'ENUM',
				'OPTIONS'  => $providerOptions,
				'REQUIRED' => true,
				'ONCHANGE' => "bizvalChangeProvider(this, '".$personTypeId."')",
			);
		}
	}

	return array($personProviderInput, $personProviderValueInput);
}