• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/webform/form.php
  • Класс: Bitrix\Crm\WebForm\Form
  • Вызов: Form::load
public function load($id)
{
	$this->setId($id);
	if(count($this->params) == count(self::$defaultParams) && !$this->loadOnlyForm($this->id))
	{
		return false;
	}

	$this->params['PRESET_FIELDS'] = array();
	$dbPresetField = Internals\PresetFieldTable::getList(array(
		'select' => array('ENTITY_NAME', 'FIELD_NAME', 'VALUE'),
		'filter' => array('=FORM_ID' => $id)
	));
	while($presetField = $dbPresetField->fetch())
	{
		$this->params['PRESET_FIELDS'][] = $presetField;
	}
	unset($dbPresetField);

	$fieldResult = Internals\FieldTable::getList(array(
		'filter' => array('=FORM_ID' => $id),
		'order' => array('SORT' => 'ASC', 'CAPTION')
	));
	$fieldResult->addFetchDataModifier(
		function ($data)
		{
			$data['ITEMS'] = is_array($data['ITEMS']) ? $data['ITEMS'] : [];
			return $data;
		}
	);
	$this->params['FIELDS'] = $fieldResult->fetchAll();
	unset($fieldResult);


	$this->params['DEPENDENCIES'] = Internals\FieldDependenceTable::getList(array(
		'filter' => array('=FORM_ID' => $id)
	))->fetchAll();
	$this->params['DEP_GROUPS'] = Internals\FieldDepGroupTable::getList([
		'select' => ['ID', 'TYPE_ID'],
		'filter' => ['=FORM_ID' => $id]
	])->fetchAll();
	if ($this->params['DEPENDENCIES'] && !$this->params['DEP_GROUPS'])
	{
		$this->params['DEP_GROUPS'][] = [
			'ID' => 0,
			'TYPE_ID' => Internals\FieldDepGroupTable::TYPE_DEF,
		];
	}

	$this->params['AGREEMENTS'] = Internals\AgreementTable::getList([
		'select' => ['AGREEMENT_ID', 'CHECKED', 'REQUIRED'],
		'filter' => ['=FORM_ID' => $id]
	])->fetchAll();
	if ($this->params['AGREEMENT_ID'])
	{
		$this->params['AGREEMENTS'] = array_merge(
			[[
				'AGREEMENT_ID' => $this->params['AGREEMENT_ID'],
				'CHECKED' => $this->params['LICENCE_BUTTON_IS_CHECKED'] === 'Y' ? 'Y' : 'N',
				'REQUIRED' => 'Y',
			]],
			$this->params['AGREEMENTS']
		);
	}
	elseif (!empty($this->params['AGREEMENTS']))
	{
		$this->params['AGREEMENT_ID'] = $this->params['AGREEMENTS'][0]['AGREEMENT_ID'];
		$this->params['LICENCE_BUTTON_IS_CHECKED'] = $this->params['AGREEMENTS'][0]['CHECKED'];
	}

	$responsibleQueue = new ResponsibleQueue($id);
	$responsibles = $responsibleQueue->getList();
	if ($this->params['ASSIGNED_BY_ID'])
	{
		$responsibles[] = $this->params['ASSIGNED_BY_ID'];
	}
	$this->params['ASSIGNED_BY_ID'] = array_unique($responsibles);
	$this->params['ASSIGNED_WORK_TIME'] = $responsibleQueue->isWorkTimeCheckEnabled() ? 'Y' : 'N';
	$this->params['INTEGRATION'] = $this->getIntegration()->load();

	return true;
}