Настройка согласия на обработку персональных данных 1С-Битрикс
Форма согласия на обработку персональных данных — это не просто чекбокс. Согласие должно быть задокументировано, привязано к конкретному пользователю и форме, а при необходимости — отозвано. Битрикс предоставляет для этого модуль UserConsent, появившийся в ядре D7.
Встроенный механизм UserConsent
С версии ядра D7 в Битрикс входит класс \Bitrix\Main\UserConsent\Consent и связанные таблицы. Основные:
-
b_user_consent— записи о согласиях пользователей -
b_user_consent_text— тексты согласий с версионированием
Согласие создаётся через метод add() или addByContext():
$result = \Bitrix\Main\UserConsent\Consent::addByContext(
'feedback_form', // ID контекста (имя формы)
[
'USER_ID' => $userId, // или 0 для анонима
'USER_IP' => $_SERVER['REMOTE_ADDR'],
],
[
'AGREEMENT_ID' => 1, // ID текста соглашения из b_user_consent_text
'URL' => \Bitrix\Main\Application::getInstance()->getContext()->getRequest()->getRequestUri(),
]
);
Поле AGREEMENT_ID ссылается на конкретную версию текста соглашения. Это важно: если вы обновите текст политики конфиденциальности, старые согласия остаются привязанными к старому тексту — можно доказать, с каким именно текстом согласился пользователь.
Настройка текстов соглашений через администратор
Тексты соглашений управляются в /bitrix/admin/ через модуль главного модуля. Каждый текст имеет ID, название и версионированный контент. При обновлении политики конфиденциальности создаётся новая версия — старые согласия не обесцениваются, новые пользователи получают актуальный текст.
Для каждой формы на сайте создаётся отдельный «контекст» (строка-идентификатор): registration, checkout, callback_form, newsletter. Это позволяет отслеживать, через какую точку входа получено согласие.
Интеграция с формами и веб-формами
Форма регистрации. Компонент bitrix:main.register поддерживает встроенный вывод чекбокса согласия — параметр USE_AGREEMENT = Y в настройках компонента. При этом ID текста соглашения передаётся через параметр AGREEMENT_ID. Данные фиксируются автоматически при успешной регистрации.
Модуль «Веб-формы» (form). Для форм обратной связи — добавляйте поле типа AGREEMENT в конструкторе форм (/bitrix/admin/form_edit.php). При отправке формы Битрикс автоматически записывает согласие в b_user_consent с привязкой к результату формы (b_form_result).
Кастомные формы. При самостоятельной обработке POST-данных (AJAX-форма на Fetch API) вызывайте Consent::add() в PHP-обработчике перед сохранением данных формы. Без этого согласие нигде не фиксируется, даже если чекбокс на странице есть.
Отзыв согласия
Пользователь должен иметь возможность отозвать согласие. В личном кабинете (/personal/) добавляете страницу управления согласиями. Список согласий конкретного пользователя:
$consents = \Bitrix\Main\UserConsent\ConsentTable::getList([
'filter' => ['USER_ID' => $USER->GetID()],
'order' => ['DATE_CREATE' => 'DESC']
]);
Отзыв — это не удаление записи, а создание новой с IS_ACCEPTED = N. История сохраняется: пользователь дал согласие 01.01.2024, отозвал 15.03.2024. Это юридически важно.
После отзыва согласия нужно определить, что делать с уже накопленными данными. Автоматического удаления нет — это организационный процесс с технической поддержкой.
Проверка согласия перед обработкой данных
В критических точках (перед отправкой email-рассылки, перед передачей данных в CRM) проверяйте наличие актуального согласия:
$hasConsent = \Bitrix\Main\UserConsent\Consent::isAccepted(
'newsletter',
['USER_ID' => $userId]
);
if (!$hasConsent) {
// не обрабатываем данные
}
Это защищает от ситуации, когда пользователь отозвал согласие, но система продолжает отправлять письма из-за накопленной очереди в таблице b_subscribe_subscription.







