Налаштування згоди на обробку персональних даних 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.







