1С-Битрикс как сохранить результат веб формы при помощи CFormResult::Add

При помощи данного кода вы научитесь добавлять результаты сразу в админку, причем абсолютно из любой HTML формы. Использовать мы будем CFormResult::Add. Рассмотрим, как можно сохранять результат в 1С-Битрикс при помощи стандартного модуля.

Как добавить запись в админку на битриксе в веб-формы

Предположим, что вы уже настроили поля для своей формы, создали статусы и дали нужные права (там довольно хитрая схема даже на этапе создания 🙂 ). Нам понадобится эта таблица из документации в дальнейшем.

Ссылка на официальную документацию по полям – https://dev.1c-bitrix.ru/api_help/form/htmlnames.php

Посмотрите как задаются имена полей для различных типов – form_text_answer_id для обычного текстового поля input type=”text”, form_hidden_answer_id для скрытого поля ну и т.д.

Как вы сами понимаете, используя API, мы скорее всего не будем использовать модуль с самой формой, а напишем свой собственный HTML – в моем случае часть данных передается через input[type=text] а другая через input[type=hidden], НО при этом тип полей в настройках формы hidden. После отправки формы мы попадаем на страницу с благодарностью, и код ее приблизительно такой:

<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");?>

<?if (isset($_POST['email']) && isset($_POST['allzakaz'])) {?>

	<?
	//проверяем на наличие значений в массиве $_POST
	if (isset($_POST['name'])) $name = $_POST['name'];
	if (isset($_POST['email'])) $email = $_POST['email'];
	if (isset($_POST['tel'])) $phone = $_POST['tel'];
	if (isset($_POST['allzakaz'])) $allzakaz = $_POST['allzakaz'];
	if (isset($_POST['allcoll'])) $allcoll = $_POST['allcoll'];
	if (isset($_POST['allprice'])) $allprice = $_POST['allprice'];
	?>

	<?
	//формируем массив с параметрами 18, 19 и т.д. ID полей
	$arValues = array (
		"form_hidden_18" => $name,
		"form_hidden_19" => $email,
		"form_hidden_20" => $phone,
		"form_hidden_22" => $allcoll,
		"form_hidden_23" => $allprice,
		"form_hidden_24" => $allzakaz
	);
	?>

	<?
	//задаем ID нашей формы, можно глянуть в админке
	$FORM_ID = 4;
	//подключаем модуль форм, т.к. без него скорей всего будет ошибка
	CModule::IncludeModule("form");

	//если результат добавился в веб форму, передаем ID и поля
	if ($RESULT_ID = CFormResult::Add($FORM_ID, $arValues)) {

		//пишем примитивный текст письма
		$message = $name.", ваш заказ подтвержден. В ближайшее время с вами свяжется менеджер.\n\nСостав заказа:\n".$allzakaz;
		//отправляем письмо на email который пользователь ввел в нашей форме
		mail($email, "Подтвержден заказ номер $RESULT_ID на site.ru", $message, "From: info@site.ru");
		//параметры (кому отправить, тема письма, сообщение, от кого)

	}
	?>

<?}?>

<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>

После того как код отработает, наша форма добавляет в админку новый результат с соответствующими полями. На самом деле, при помощи подобной схемы можно реализовывать неплохую обратную связь с клиентом, вплоть до симуляции Каталога товаров и даже интернет магазина, но это уже совсем другая история 🙂 .

автор: Dmitriy

З 2011 року займаюся веб-розробкою. Зараз я – PHP Full Stack Developer.
Обговорити ваш проект, а також дізнатися більше про мене ви можете на цьому сайті:
dev.forwww.com

Email: dmitriyribka@gmail.com

6 коментаря

    1. Всё верно, айди будут другие, вы правильно подметили. Но цель статьи была показать как работает апи. Есть стандартный компонент по веб формам которым можно пользоваться в большинстве случаев

    1. поставьте событие онклик чтобы js-ом отправляло в яндекс или сервис который вы используете. может быть стоит рассмотреть еще событие onsubmit если я вас правильно понял конечно

  1. Подскажите пожалуйста, где может находиться файл с этой функцией?
    Просто я новичок и меня попросили изменить параметры в уже настроенной системе, а я вообще не знаю где это

Залишити коментар до Dmitriy Скасувати коментар