<?xml version="1.0" encoding="utf-8"?>

<rss version="2.0">
 <channel>
	<title>Блог Андрея Силаева</title>
	<link>http://dev.1c-bitrix.ru/community/blogs/silaev/</link>
	<description></description>
	<language>ru</language>
	<docs>http://backend.userland.com/rss2</docs>
	<pubDate>Sat, 04 Apr 2026 10:30:04 +0300</pubDate>

    <item>
      <title>Формы, персональные данные и закон ФЗ-152</title>
      <description><![CDATA[Добрый день, коллеги!<br /><br />С <b>1 июля 2017 года</b> существенно ужесточена административная ответственность за нарушения при взаимодействии с <b>персональными данными</b> физических лиц. <br />Если вы владелец сайта, то вы вероятно уже знакомы с нашими <noindex><a href="https://www.1c-bitrix.ru/legal/fz/152.php" target="_blank" rel="nofollow" >видео-роликами</a></noindex>.<br /><br />Мы надеемся, что вы уже <b>ознакомлены с законом</b> и ищете техническую информацию.<br />Данная статья расскажет, что для <b>разработчика решений и компонентов</b> в продукте есть инструменты для помощи в соответствии закону.<br /><br /><br />Каждая форма, которая собирает, к примеру, имя, фамилию, email или телефон, должна запрашивать согласие пользователя на обработку персональных данных.<br />Мы в обновлении главного модуля 17.0.9 выпустили набор инструментов, который поможет вам соответствовать закону ФЗ-152 о персональных данных.<br />Начну с того, что в административном разделе в меню появился новый пункт: <br />Настройки -&gt; Настройки продукта -&gt; Соглашения<br /><br /><img src="https://site-cloud-files.bitrix24.tech/resize_cache/5652693/04dbd6b4c314fe48f655aad84339ad15/main/40d/40d4d41b18eb43f90881d0a5bdf75895/create.png" title="" alt="create.png" border="0"style=" width:800px; height:549px;" data-bx-image="http://dev.1c-bitrix.ru/bitrix/components/bitrix/blog/show_file.php?fid=17775&width=1000" /><br /><br />В нем вы можете создать новое соглашение для запроса согласия на обработку персональных данных, используя стандартный текст, который мы также включили в обновление.<br /><br />Мы рассмотрим как включить поддержку соглашений в ваших компонентах на примере компонента подписки на рассылку sender.subscribe.<br /><br /> <br /><span class="bx-font" style="font-size:x-large;">1. Выбор.<br /></span><br />Сделаем в параметрах компонента выбор соглашения для вывода.<br />Для этого в файле параметров вашего компонента .parameters.php достаточно объявить параметр &quot;USER_CONSENT&quot; =&gt; array() и появится раздел с параметрами настройки:<br />
====code====
<pre>&#60;?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
$arComponentParameters = array(
&nbsp;&nbsp;&nbsp;&nbsp;"GROUPS" =&#62; array(
&nbsp;&nbsp;&nbsp;&nbsp;),
&nbsp;&nbsp;&nbsp;&nbsp;"PARAMETERS" =&#62; array(
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"AJAX_MODE" =&#62; array(),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"USER_CONSENT" =&#62; array(),
&nbsp;&nbsp;&nbsp;&nbsp;)
); </pre>
=============
<br />Теперь в настройках компонента появились вот такие настройки:<br /><br /><img src="https://site-cloud-files.bitrix24.tech/main/337/3377d2b259fefc93dd505c4b12b7849b/parametry komponenta.png" title="" alt="parametry komponenta.png" border="0"style=" width:794px; height:472px;" data-bx-image="http://dev.1c-bitrix.ru/bitrix/components/bitrix/blog/show_file.php?fid=17777" /><br /><br /><br /><br /><span class="bx-font" style="font-size:x-large;">2. Вывод в форме.<br /></span><br />Для вывода нужно использовать компонент main.userconsent.request.<br />Он выводит чекбокс с подписью, по нажатию на которую выводится окно с текстом соглашения.<br />Окно с текстом адаптивное и уже сделано и под мобильные устройства. <br /><br /><img src="https://site-cloud-files.bitrix24.tech/main/c30/c30b44e77e4c0833134eace0edffcc08/vyvod.png" title="" alt="vyvod.png" border="0"style=" width:687px; height:304px;" data-bx-image="http://dev.1c-bitrix.ru/bitrix/components/bitrix/blog/show_file.php?fid=17779" /><br /><br />Также, компонент умеет сохранять полученное согласие. <br />Само согласие будет в списке, показываемым в по клику в пункте &quot;Полученные согласия&quot; в контекстом меню соглашения на списке.<br /><br />Компонент main.userconsent.request нужно подключить в шаблоне вашего компонента перед кнопкой отправки формы.<br />Есть два вида форм:<br />- один стандартная get/post отправка формы с событием submit;<br />- отправка через ajax и иные механизмы, реализованные в js, то есть без события submit у формы.<br />Для них нужно по разному использовать компонент.<br /><br /><span class="bx-font" style="font-size:medium;">1) Простая форма с событием submit.<br /></span><br />Подключаем компонент main.userconsent.request перед кнопкой отправки формы<br />
====code====
<pre>&#60;fo rm method="POST"&#62;
&nbsp;&nbsp;&nbsp;&nbsp;&#60;input name="EMAIL" placeholder="Email"&#62;
&nbsp;&nbsp;&nbsp;&nbsp;&#60;input name="PHONE" placeholder="Телефон"&#62;
&nbsp;&nbsp;&nbsp;&nbsp;&#60;input name="NAME" placeholder="Имя"&#62;
&nbsp;&nbsp;&nbsp;&nbsp;&#60;br&#62;
&nbsp;&nbsp;&nbsp;&nbsp;&#60;?if ($arParams&#91;'USER_CONSENT'&#93; == 'Y'):?&#62;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#60;?$APPLICATION-&#62;IncludeComponent(
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"bitrix:main.userconsent.request",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array(
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"ID" =&#62; $arParams&#91;"USER_CONSENT_ID"&#93;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"IS_CHECKED" =&#62; $arParams&#91;"USER_CONSENT_IS_CHECKED"&#93;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"AUTO_SAVE" =&#62; "Y",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"IS_LOADED" =&#62; $arParams&#91;"USER_CONSENT_IS_LOADED"&#93;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"REPLACE" =&#62; array(
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'button_caption' =&#62; 'Подписаться!',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'fields' =&#62; array('Email', 'Телефон', 'Имя')
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);?&#62;
&nbsp;&nbsp;&nbsp;&nbsp;&#60;?endif;?&#62;
&nbsp;&nbsp;&nbsp;&nbsp;&#60;input type="submit" name="subscribe" value="Подписаться!"&#62;
&#60;/form&#62; </pre>
=============
<br />Указанные в примере параметры $arParams появятся в шаблоне вашего компонента при наличии <br />в .parameters.php блока &quot;USER_CONSENT&quot; =&gt; array() <br /> &nbsp; &nbsp;<br />В параметре REPLACE передается &nbsp;<br />- button_caption, название кнопки отправки формы;<br />- fields, массив названий полей, которые попадут в текст соглашения. <br /><br /><br /><span class="bx-font" style="font-size:medium;">2) Форма без события submit(ajax и пр). </span><br /><br />В компонент нужно передать в параметре SUBMIT_EVENT_NAME название события, при котором появится окно запроса согласия. <br />Далее, нужно добавить обработчик события принятия соглашения.<br />Если обработчик поймает событие - значит, согласие получено и можно отправлять форму/данные или выполнять какое-то действие.<br />
====code====
<pre>&#60;div id="my_container"&#62;
&nbsp;&nbsp;&nbsp;&nbsp;&#60;input type="text" placeholder="Электронный адрес" name="EMAIL"&#62;
&nbsp;&nbsp;&nbsp;&nbsp;&#60;input type="submit" id="fire_event" value="Отправить"&#62;
&nbsp;&nbsp;&nbsp;&nbsp;&#60;br&#62;
&nbsp;&nbsp;&nbsp;&nbsp;&#60;?if ($arParams&#91;'USER_CONSENT'&#93; == 'Y'):?&#62;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#60;?$APPLICATION-&#62;IncludeComponent(
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"bitrix:main.userconsent.request",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array(
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'ID' =&#62; $arParams&#91;"USER_CONSENT_ID"&#93;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"IS_CHECKED" =&#62; $arParams&#91;"USER_CONSENT_IS_CHECKED"&#93;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"IS_LOADED" =&#62; "Y",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"AUTO_SAVE" =&#62; "N",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'SUBMIT_EVENT_NAME' =&#62; 'my-event-name',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'REPLACE' =&#62; array(
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'button_caption' =&#62; 'Отправить',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'fields' =&#62; array('Электронный адрес')
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);?&#62;
&nbsp;&nbsp;&nbsp;&nbsp;&#60;?endif;?&#62;
&#60;/div&#62;
&nbsp;&nbsp;&nbsp;&nbsp;
&#60;sc ript type="text/javascript"&#62;
BX.ready(function () {

&nbsp;&nbsp;&nbsp;&nbsp;var submitBtn = BX('fire_event');
&nbsp;&nbsp;&nbsp;&nbsp;BX.bind(submitBtn, 'click', function(){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BX.onCustomEvent('my-event-name', &#91;&#93;);
&nbsp;&nbsp;&nbsp;&nbsp;});

&nbsp;&nbsp;&nbsp;&nbsp;if (!BX.UserConsent)
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;var control = BX.UserConsent.load(BX('my_container'));
&nbsp;&nbsp;&nbsp;&nbsp;if (!control)
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;BX.addCustomEvent(
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;control,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BX.UserConsent.events.save,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function (data) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('js event:', 'save', data);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// успешно!
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// отправляем ajax 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// или другие действия
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;);
&nbsp;&nbsp;&nbsp;&nbsp;
});
&#60;/sc ript&#62;</pre>
=============
<br /><br /><span class="bx-font" style="font-size:x-large;">3. Сохранение согласия.<br /></span><br />В параметрах компонента есть параметр AUTO_SAVE.<br />Если его значение равно Y, то согласие автоматически сохраняется компонентом.<br /><br />Если вам нужно сохранить согласие самим, то передайте значение N.<br />А для ручного добавления согласия вызовите следующий код:<br />
====code====
<pre>&nbsp;&nbsp; &#92;Bitrix&#92;Main&#92;UserConsent&#92;Consent::addByContext( 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $arParams&#91;"USER_CONSENT_ID"&#93;
&nbsp;&nbsp; );</pre>
=============
<br /><br />Теперь у вас есть инструмент, с помощью которого вы можете быстро привести свои компоненты в соответствие закону, а также помочь соответствовать вашим клиентам.<br /><br /><br />Есть еще то, что не описал:<br />- добавление своего источника данных;<br />- при просмотре согласий вывод связи со своей сущностью;<br />- кейс использования в виде ссылок;<br />- дополнительные компоненты выбора и просмотра.<br /><br />Если вам эта тема интересна - пишите в комментариях, добавим в статью доп информацию.<br /><br /><br />.<br /><a href="http://dev.1c-bitrix.ru/community/blogs/silaev/23841.php">Подробнее...</a>]]></description>
      <link>http://dev.1c-bitrix.ru/community/blogs/silaev/23841.php</link>
      <guid>http://dev.1c-bitrix.ru/community/blogs/silaev/23841.php</guid>
      <pubDate>Fri, 30 Jun 2017 16:33:52 +0300</pubDate>
    </item>

    <item>
      <title>Делаем свои триггерные рассылки</title>
      <description><![CDATA[<span class="bx-font" style="font-size:16pt; line-height: normal;">Оглавление</span><br /><br />1. Как работают триггерные рассылки.<br />2. Что делают триггеры.<br />3. Как сделать свой триггер.<br /> 3.1. Простейший триггер<br /> 3.2. Получение данных события<br /> 3.3. Фильтрация в триггере<br /> 3.4. Свои поля персонализации<br /> 3.5. Фильтрация по сайту<br />4. Триггер для ненаступивших событий<br />5. Делаем готовую рассылку<br />6. Итоги.<br /><br /><br /><a href="http://dev.1c-bitrix.ru/community/blogs/silaev/14036.php">Подробнее...</a>]]></description>
      <link>http://dev.1c-bitrix.ru/community/blogs/silaev/14036.php</link>
      <guid>http://dev.1c-bitrix.ru/community/blogs/silaev/14036.php</guid>
      <pubDate>Mon, 29 Jun 2015 17:26:36 +0300</pubDate>
    </item>

  </channel>
</rss>