• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/controller/form.php
  • Класс: Bitrix\Crm\Controller\Form
  • Вызов: Form::assignWidgetToFormAction
public function assignWidgetToFormAction(int $formId, int $buttonId, string $assigned)
{
	if (!$this->getFormAccess(true))
	{
		$this->addError(new Main\Error('Access denied.', self::ERROR_CODE_FORM_WRITE_ACCESS_DENIED));
		return ['error' => ['status' => 'access denied', 'code' => self::ERROR_CODE_FORM_WRITE_ACCESS_DENIED]];
	}

	if ($this->shouldVerifyPhone() && !$this->isPhoneVerified($formId))
	{
		$this->addError(new Main\Error('Phone doesn\'t verified', self::ERROR_CODE_PHONE_NOT_VERIFIED, ['id' => $formId]));
		return [];
	}

	if (!$this->getSiteButtonAccess(true))
	{
		$this->addError(new Main\Error('Access denied.', self::ERROR_CODE_WIDGET_WRITE_ACCESS_DENIED));
		return ['error' => ['status' => 'access denied', 'code' => self::ERROR_CODE_WIDGET_WRITE_ACCESS_DENIED]];
	}

	$isAssigned = $assigned === 'Y';

	$form = new WebForm\Form($formId);
	$formType = self::getFormType($form);

	$button = new Crm\SiteButton\Button($buttonId);
	if ($isAssigned)
	{
		$result = $button->setToForm($formId, $formType, true, true);
	}
	else
	{
		$result = $button->unsetFromForm($formId, $formType, true);
	}

	if (! $result)
	{
		$this->addError(new Main\Error('CRM_FORM_ASSIGN_GENERAL_ERROR'));
	}

	Crm\SiteButton\Manager::updateScriptCache($buttonId);

	return [
		'assigned' => $isAssigned,
		'formId' => $formId,
		'formName' => $form->getName(),
		'formType' => $formType,
		'buttonId' => $buttonId,
	];
}