При помощи данного кода вы научитесь добавлять результаты сразу в админку, причем абсолютно из любой 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");?>
После того как код отработает, наша форма добавляет в админку новый результат с соответствующими полями. На самом деле, при помощи подобной схемы можно реализовывать неплохую обратную связь с клиентом, вплоть до симуляции Каталога товаров и даже интернет магазина, но это уже совсем другая история 🙂 .
Отличное решение, особенно когда есть тестовая площадка и боевая с различными ID в базах. Переносим на бой и получаем кирпич
Всё верно, айди будут другие, вы правильно подметили. Но цель статьи была показать как работает апи. Есть стандартный компонент по веб формам которым можно пользоваться в большинстве случаев
как мне в веб-форме добавить utm-метки?
поставьте событие онклик чтобы js-ом отправляло в яндекс или сервис который вы используете. может быть стоит рассмотреть еще событие onsubmit если я вас правильно понял конечно
Подскажите пожалуйста, где может находиться файл с этой функцией?
Просто я новичок и меня попросили изменить параметры в уже настроенной системе, а я вообще не знаю где это
https://dev.1c-bitrix.ru/api_help/form/classes/cformresult/add.php – посмотреть какие параметры есть у данного метода можно тут, в документации. Если же вы хотите править ядро Битрикса – то я вам крайне не рекомендую этого делать, особенно папку /bitrix/modules/.