21.09.2026 Уже прочитали 8 раз Помогло 1 читателям

Как хранить согласия пользователей штатными средствами 1С-Битрикс

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

В 1С-Битрикс для этой задачи есть штатный компонент запроса согласия пользователя. Удобно подключить его к форме заявки вместо отдельной самописной логики.

В чем была задача

Нужно было добавить согласие на обработку персональных данных в существующую форму заявки.

При этом важно было не просто вывести обязательный checkbox, а использовать единый механизм: хранить текст соглашения в одном месте, показывать его пользователю и сохранять факт принятия средствами самого Битрикса.

Как устроены соглашения в 1С-Битрикс

В административной части 1С-Битрикс есть отдельный раздел пользовательских соглашений:

/bitrix/admin/agreement_admin.php?lang=ru

В нем создается и редактируется текст соглашения. Каждое соглашение получает свой идентификатор, который затем можно использовать в формах сайта.

Это позволяет не копировать один и тот же текст по шаблонам. Несколько форм могут работать с одной записью соглашения.

Подключение соглашения к форме заявки

Для формы используется стандартный компонент bitrix:main.userconsent.request.

Пример подключения:

IncludeComponent(
    "bitrix:main.userconsent.request",
    "",
    array(
        "ID" => $agreementId,
        "IS_CHECKED" => "N",
        "AUTO_SAVE" => "Y",
        "IS_LOADED" => "N",
        "REPLACE" => array(
            "button_caption" => "Отправить",
            "fields" => array(
                "Имя",
                "Телефон",
                "E-Mail"
            )
        )
    )
);
?>

В примере $agreementId - переменная, в которую в проекте передается идентификатор нужного соглашения из административной части.

IS_CHECKED = N означает, что согласие не отмечается заранее. Пользователь должен подтвердить его самостоятельно.

AUTO_SAVE = Y включает автоматическое сохранение полученного согласия средствами компонента.

IS_LOADED = N позволяет не загружать полный текст соглашения сразу вместе со страницей.

Через REPLACE можно передать данные конкретной формы, например название кнопки и список полей, используемых в соглашении.

Как это работает для пользователя

После подключения компонента рядом с формой появляется стандартный блок согласия на обработку персональных данных.

Когда пользователь нажимает на текст согласия, 1С-Битрикс открывает штатное всплывающее окно с полным текстом документа.

Пользователь знакомится с соглашением и нажимает «ПРИНИМАЮ». После этого модальное окно закрывается, а галочка согласия в форме устанавливается автоматически.

Дальше пользователь отправляет форму. При включенном автоматическом сохранении факт полученного согласия фиксируется средствами Битрикса.

Таким образом, стандартный механизм уже включает:

  • вывод согласия рядом с формой;
  • открытие полного текста в штатном модальном окне;
  • явное принятие пользователем;
  • автоматическую установку галочки после принятия;
  • фиксацию полученного согласия в системе.

Не требуется отдельно создавать свое модальное окно, связывать его с checkbox и разрабатывать собственный механизм учета согласий.

Как вывести то же соглашение на отдельной странице

Ту же запись соглашения можно использовать не только внутри форм. Например, на сайте можно сделать отдельную страницу «Согласие на обработку персональных данных» и не копировать текст документа в нее вручную.

Для получения текста используется штатный класс Bitrix\Main\UserConsent\Agreement.

Пример вывода:

 array(
            "Имя",
            "Телефон",
            "E-Mail"
        )
    )
);

if ($agreement->isExist() && $agreement->isActive())
{
    echo $agreement->getHtml();
}
?>

Здесь используется тот же $agreementId, что и при подключении соглашения к форме.

Если в соглашении используются подставляемые данные, например %fields%, их можно передать при создании объекта. Битрикс сформирует итоговый текст соглашения с учетом этих значений.

В результате публичная страница не становится второй независимой копией документа. Источником остается соглашение из административной части сайта.

Единый источник для формы и отдельной страницы

Одна запись соглашения используется сразу в нескольких сценариях:

  • bitrix:main.userconsent.request работает внутри формы, показывает согласие, открывает штатное модальное окно и участвует в фиксации принятия;
  • Bitrix\Main\UserConsent\Agreement позволяет получить и вывести актуальный текст на отдельной странице;
  • подставляемые данные можно передавать в соглашение в зависимости от сценария.

Текст не приходится поддерживать отдельно в каждой форме и на каждой странице. Все места сайта используют одно соглашение из административной части 1С-Битрикс.

Что получается в итоге

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

При этом полученные согласия фиксируются штатными средствами 1С-Битрикс, а сам текст документа поддерживается централизованно.

Ценность

Вместо набора разрозненных галочек и копий текста получается единый механизм.

Соглашение хранится централизованно, формы используют одну актуальную версию документа, публичная страница получает текст из того же источника, а факт принятия пользователем фиксируется в системе.

Такой подход сокращает количество собственной логики в проекте и помогает организовать работу с согласиями пользователей в рамках требований к обработке персональных данных.

Обратная связь

Материал был полезен?

Оценка помогает понимать, какие материалы стоит развивать и дополнять.

Обсудить задачу

Обратиться за помощью

Опишите задачу и оставьте контакты. Я посмотрю вводные и свяжусь с вами удобным способом.

Направление *