входим в Топ-20 агентств
Рейтинг Рунета

Генератор всех юридических документов для сайта

Один раз вводите реквизиты — получаете комплект: политику обработки ПД, согласия, политику cookie, оферту и правила. Удобно при запуске сайта.

  • Бесплатно
  • Без регистрации
  • Данные не уходят на сервер
Юридический генератор документов Реквизиты вводятся один раз
Результат Редакция от 13 октября 2026 г. Шаблон, не юридическая консультация
Скачать комплект

Каждый отмеченный документ скачается отдельным файлом .doc.

\n\n'; } function saveDoc(name, title, body) { saveBlob(name, docFile(title, body), 'application/msword'); } /* Профиль реквизитов: общий для генераторов, хранится в браузере */ var KEY = 'rwt-requisites'; function load() { try { var o = JSON.parse(localStorage.getItem(KEY) || '{}'); return (o && typeof o === 'object') ? o : {}; } catch (e) { return {}; } } function store(o) { try { localStorage.setItem(KEY, JSON.stringify(o)); return true; } catch (e) { return false; } } function forget() { try { localStorage.removeItem(KEY); } catch (e) {} } /* map: {name, inn, ogrn, address, email, phone, site} → id поля; bar — строка «сохраняются · Очистить» */ function profile(map, bar, onChange) { var keys = Object.keys(map), saved = load(); function el(k) { return document.getElementById(map[k]); } keys.forEach(function (k) { var e = el(k); if (e && !e.value && saved[k]) e.value = saved[k]; }); var save = debounce(function () { var o = load(); keys.forEach(function (k) { var e = el(k); if (!e) return; var v = e.value.trim(); if (v) o[k] = v; else delete o[k]; }); store(o); }, 400); keys.forEach(function (k) { var e = el(k); if (e) e.addEventListener('input', save); }); if (bar) profileBar(bar, function () { keys.forEach(function (k) { var e = el(k); if (e) e.value = ''; }); if (onChange) onChange(); }); } function profileBar(bar, onClear) { if (typeof bar === 'string') bar = document.getElementById(bar); if (!bar) return; bar.innerHTML = 'Реквизиты сохраняются в вашем браузере · '; bar.querySelector('button').addEventListener('click', function () { forget(); if (onClear) onClear(); }); } /* Панель экспорта (110 px — запас под закреплённую шапку сайта): на десктопе — в блоке результата, на узком экране — липкая внизу инструмента */ function dock(barEl, home, target, bp) { if (typeof barEl === 'string') barEl = document.getElementById(barEl); if (typeof home === 'string') home = document.getElementById(home); if (typeof target === 'string') target = document.getElementById(target); if (!barEl || !home) return; var root = document.getElementById('rwt-tool') || home.closest('.rwt') || home.parentNode; var mq = window.matchMedia ? window.matchMedia('(max-width: ' + (bp || 900) + 'px)') : null; function place() { if (mq && mq.matches) { if (barEl.parentNode !== root) root.appendChild(barEl); barEl.classList.add('is-float'); } else { if (barEl.parentNode !== home) home.appendChild(barEl); barEl.classList.remove('is-float'); } } place(); if (mq) { if (mq.addEventListener) mq.addEventListener('change', place); else if (mq.addListener) mq.addListener(place); } var show = barEl.querySelector('.rwd-show'); if (show && target) show.addEventListener('click', function () { var y = target.getBoundingClientRect().top + (window.pageYOffset || 0) - 110; window.scrollTo({ top: Math.max(0, y), behavior: 'smooth' }); }); } return { esc: esc, parse: parse, html: html, preview: preview, text: text, splitNotes: splitNotes, showNotes: showNotes, debounce: debounce, saveBlob: saveBlob, docFile: docFile, saveDoc: saveDoc, load: load, store: store, forget: forget, profile: profile, profileBar: profileBar, dock: dock }; })(); /*@rwd-kit-end*/ (function () { var MONTHS = ['января','февраля','марта','апреля','мая','июня','июля','августа','сентября','октября','ноября','декабря']; function todayISO() { var d = new Date(); return d.getFullYear() + '-' + String(d.getMonth() + 1).padStart(2, '0') + '-' + String(d.getDate()).padStart(2, '0'); } function ruDate(iso) { var p = String(iso || todayISO()).split('-'); if (p.length !== 3) return iso; return parseInt(p[2], 10) + ' ' + MONTHS[parseInt(p[1], 10) - 1] + ' ' + p[0] + ' г.'; } function $(id) { return document.getElementById(id); } function escapeHtml(str) { if (str == null) return ''; return String(str).replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"').replace(/'/g, '''); } function lines(s) { return String(s || '').split('\n').map(function (x) { return x.trim(); }).filter(Boolean); } // Сборка текста политики из объекта данных (та же функция используется в генераторе комплекта, id 78) function rwtBuildPolicy(d) { var n = 0, out = [], LINE = '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'; function sec(title, clauses) { n++; // нумерация пунктов без учёта вложенных строк (начинаются с пробела) var k = 0; var body = clauses.filter(function (c) { return c; }).map(function (c) { if (/^\s/.test(c)) return c; k++; return n + '.' + k + '. ' + c; }); out.push(LINE + '\n' + n + '. ' + title.toUpperCase() + '\n' + body.join('\n')); } var reqParts = [d.orgNameNom]; if (d.inn) reqParts.push('ИНН ' + d.inn); if (d.ogrn) reqParts.push('ОГРН ' + d.ogrn); reqParts.push('адрес: ' + (d.address || '[адрес оператора]')); reqParts.push('email: ' + d.email); if (d.phone) reqParts.push('телефон: ' + d.phone); out.push('ПОЛИТИКА В ОТНОШЕНИИ ОБРАБОТКИ ПЕРСОНАЛЬНЫХ ДАННЫХ\n' + d.orgNameNom + '\nРедакция от: ' + d.date + '\nАктуальная версия доступна по адресу: ' + d.privacyUrl); sec('Общие положения', [ 'Настоящая политика в отношении обработки персональных данных (далее — Политика) составлена в соответствии с ч. 2 ст. 18.1 Федерального закона от 27.07.2006 № 152-ФЗ «О персональных данных» (далее — 152-ФЗ) и определяет порядок обработки персональных данных и меры по обеспечению их безопасности, предпринимаемые ' + d.orgName + ' (далее — Оператор).', 'Сведения об Операторе: ' + reqParts.join(', ') + '.', d.rkn ? 'Оператор включён в реестр операторов, осуществляющих обработку персональных данных, регистрационный номер ' + d.rkn + '.' : 'Оператор направил в Роскомнадзор уведомление о намерении осуществлять обработку персональных данных (ст. 22 152-ФЗ). Регистрационный номер в реестре операторов: [укажите номер].', 'Политика применяется ко всем персональным данным, которые Оператор получает с использованием сайта ' + d.siteUrl + ' (далее — Сайт), и опубликована в свободном доступе по адресу ' + d.privacyUrl + '.' ]); sec('Основные понятия', [ 'Персональные данные — любая информация, относящаяся прямо или косвенно к определённому или определяемому физическому лицу (субъекту персональных данных).', 'Оператор — лицо, самостоятельно или совместно с другими лицами организующее и (или) осуществляющее обработку персональных данных, а также определяющее цели обработки, состав данных и действия с ними.', 'Обработка персональных данных — любое действие (операция) или совокупность действий с персональными данными, совершаемых с использованием средств автоматизации или без них, включая сбор, запись, систематизацию, накопление, хранение, уточнение (обновление, изменение), извлечение, использование, передачу (распространение, предоставление, доступ), обезличивание, блокирование, удаление, уничтожение.', 'Уничтожение персональных данных — действия, в результате которых становится невозможным восстановить содержание персональных данных в информационной системе и (или) уничтожаются материальные носители.', 'Пользователь — любой посетитель Сайта.' ]); sec('Категории субъектов персональных данных', [ 'Оператор обрабатывает персональные данные следующих категорий субъектов:' ].concat((d.subjects.length ? d.subjects : ['Посетители Сайта']).map(function (x) { return ' — ' + x + ';'; }))); var pc = []; if (!d.purposes.length) pc.push('[Добавьте хотя бы одну цель обработки]'); d.purposes.forEach(function (p) { pc.push('Цель: ' + (p.goal || '[цель не указана]') + '.'); pc.push(' Персональные данные: ' + (p.data.length ? p.data.join('; ') : '[не указаны]') + '.'); pc.push(' Правовые основания: ' + (p.legal.length ? p.legal.join('; ') : '[не указаны]') + '.'); pc.push(' Действия и способы обработки: ' + (p.types.length ? p.types.join('; ') : '[не указаны]') + '.'); }); sec('Цели обработки, состав данных, правовые основания и действия', pc); sec('Условия и сроки обработки', [ 'Обработка осуществляется с согласия субъекта персональных данных, оформляемого отдельно от иных документов (ч. 1 ст. 9 152-ФЗ), либо при наличии иных оснований, предусмотренных ст. 6 152-ФЗ.', 'Срок обработки и хранения персональных данных: ' + d.storageTerm + '. Персональные данные хранятся не дольше, чем этого требуют цели обработки, если срок хранения не установлен федеральным законом или договором (ч. 7 ст. 5 152-ФЗ).', 'При сборе персональных данных, в том числе через Сайт, Оператор обеспечивает запись, систематизацию, накопление, хранение, уточнение (обновление, изменение) и извлечение персональных данных граждан Российской Федерации с использованием баз данных, находящихся на территории Российской Федерации (ч. 5 ст. 18 152-ФЗ).' + (d.dbLocation ? ' Базы данных размещены: ' + d.dbLocation + '.' : '') ]); var cb = d.crossBorder === 'да' ? [(d.countries ? 'Персональные данные могут передаваться на территорию следующих государств: ' + d.countries + '. ' : '') + 'Оператор осуществляет трансграничную передачу персональных данных в соответствии со ст. 12 152-ФЗ. До начала такой передачи Оператор уведомляет Роскомнадзор о намерении её осуществлять (ч. 3 ст. 12 152-ФЗ) и оценивает соблюдение конфиденциальности и безопасности данных получателями.', 'Передача в государства, не обеспечивающие адекватную защиту прав субъектов персональных данных, осуществляется с учётом ограничений, установленных ст. 12 152-ФЗ, и может быть запрещена или ограничена Роскомнадзором.'] : ['Трансграничная передача персональных данных Оператором не осуществляется.']; sec('Передача персональных данных', [ d.thirdParty, 'Оператор вправе поручить обработку персональных данных другому лицу на основании договора (поручения), содержащего требования ч. 3 ст. 6 152-ФЗ. Ответственность перед субъектом за действия такого лица несёт Оператор.' ].concat(cb)); sec('Права субъектов персональных данных', [ 'Субъект персональных данных имеет право:' ].concat(d.rights.map(function (r) { return ' — ' + r.charAt(0).toLowerCase() + r.slice(1) + ';'; })).concat([ 'Запрос направляется на электронную почту ' + d.email + ' или в письменной форме по адресу Оператора и должен содержать сведения, предусмотренные ч. 3 ст. 14 152-ФЗ.', 'Оператор предоставляет сведения и отвечает на запрос в течение 10 рабочих дней с даты его получения. Срок может быть продлён не более чем на 5 рабочих дней при направлении субъекту мотивированного уведомления с указанием причин продления (ст. 14, 20 152-ФЗ).', 'Неполные, неточные или неактуальные персональные данные Оператор уточняет, а незаконно полученные или не являющиеся необходимыми для заявленной цели — уничтожает в срок не более 7 рабочих дней со дня представления подтверждающих сведений (ч. 3 ст. 20 152-ФЗ).', 'В случае отзыва согласия Оператор прекращает обработку персональных данных и уничтожает их в срок не более 30 дней с даты поступления отзыва, если иное не предусмотрено договором с субъектом или федеральным законом (ч. 5 ст. 21 152-ФЗ).' ])); sec('Порядок уничтожения персональных данных', [ 'Персональные данные подлежат уничтожению при достижении целей обработки или утрате необходимости в их достижении, истечении срока хранения, отзыве согласия (при отсутствии иных оснований для обработки), выявлении неправомерной обработки, если обеспечить её правомерность невозможно.', 'Сроки: не более 30 дней с даты достижения цели обработки (ч. 4 ст. 21 152-ФЗ) или поступления отзыва согласия (ч. 5 ст. 21 152-ФЗ); не более 10 рабочих дней с даты выявления неправомерной обработки (ч. 3 ст. 21 152-ФЗ). Если уничтожить данные в указанный срок невозможно, Оператор блокирует их и уничтожает в срок не более 6 месяцев (ч. 6 ст. 21 152-ФЗ).', 'Данные в электронном виде удаляются из информационных систем без возможности восстановления; материальные носители уничтожаются способом, исключающим восстановление содержания (например, измельчение).', 'Уничтожение подтверждается актом об уничтожении персональных данных и, при обработке с использованием средств автоматизации, выгрузкой из журнала регистрации событий в информационной системе — в соответствии с требованиями, утверждёнными приказом Роскомнадзора от 28.10.2022 № 179.' ]); if (d.cookies === 'да') { sec('Файлы cookie и метрические программы', [ 'На Сайте используются файлы cookie — небольшие фрагменты данных, сохраняемые на устройстве Пользователя, а также могут использоваться метрические программы (например, Яндекс Метрика). При этом обрабатываются cookie-идентификаторы, IP-адрес, сведения о браузере и устройстве, данные о действиях на Сайте.', 'Технически необходимые cookie используются для работы Сайта. Аналитические и рекламные cookie и метрические программы применяются только с отдельного согласия Пользователя, которое запрашивается при первом посещении Сайта (cookie-баннер). Согласие можно отозвать, изменив настройки на Сайте или удалив cookie в браузере.', d.cookiePolicyUrl ? 'Подробные сведения о cookie приведены в Политике использования cookie: ' + d.cookiePolicyUrl + '.' : '', 'Пользователь может ограничить или запретить cookie в настройках браузера; при этом отдельные функции Сайта могут работать некорректно.' ]); } sec('Меры по защите персональных данных', [ 'Оператор принимает правовые, организационные и технические меры, предусмотренные ст. 18.1 и 19 152-ФЗ, для защиты персональных данных от неправомерного или случайного доступа, уничтожения, изменения, блокирования, копирования, предоставления, распространения и иных неправомерных действий.', 'Оператор назначает лицо, ответственное за организацию обработки персональных данных, издаёт локальные акты по вопросам обработки, знакомит с ними работников и допускает к обработке только тех, кому это необходимо для выполнения обязанностей.', 'При выявлении неправомерной или случайной передачи (предоставления, распространения, доступа) персональных данных Оператор уведомляет Роскомнадзор в сроки, установленные ч. 3.1 ст. 21 152-ФЗ.' ]); var sp = []; var spec = d.specialData === 'special' || d.specialData === 'both'; var bio = d.specialData === 'biometric' || d.specialData === 'both'; if (!spec && !bio) sp.push('Оператор не обрабатывает специальные категории персональных данных (ст. 10 152-ФЗ) и биометрические персональные данные (ст. 11 152-ФЗ).'); if (spec) sp.push('Оператор обрабатывает специальные категории персональных данных (ст. 10 152-ФЗ) только при наличии согласия субъекта в письменной форме либо иных оснований, предусмотренных ч. 2 ст. 10 152-ФЗ.'); if (bio) sp.push('Оператор обрабатывает биометрические персональные данные (ст. 11 152-ФЗ) только при наличии согласия субъекта в письменной форме, за исключением случаев, предусмотренных ч. 2 ст. 11 152-ФЗ.'); if (spec && !bio) sp.push('Биометрические персональные данные (ст. 11 152-ФЗ) Оператором не обрабатываются.'); if (bio && !spec) sp.push('Специальные категории персональных данных (ст. 10 152-ФЗ) Оператором не обрабатываются.'); sp.push(d.minors === 'да' ? 'Обработка персональных данных лиц, не достигших 18 лет, осуществляется с согласия их родителей или иных законных представителей.' : 'Сайт не предназначен для лиц, не достигших 18 лет. Оператор не осуществляет намеренный сбор их персональных данных; выявленные данные таких лиц уничтожаются.'); sec('Дополнительные условия', sp); sec('Заключительные положения', [ 'Оператор вправе вносить изменения в Политику. В новой редакции указывается дата её утверждения. Новая редакция вступает в силу с момента размещения по адресу ' + d.privacyUrl + ', если иное не предусмотрено самой редакцией.', 'Изменение Политики не расширяет объём согласий, данных субъектами: если для новой цели или нового состава данных требуется согласие, Оператор получает его отдельно.', 'По вопросам обработки персональных данных можно обратиться к Оператору по электронной почте ' + d.email + ' или письменно по адресу: ' + (d.address || '[адрес оператора]') + '.' ]); return out.join('\n') + '\n' + LINE + '\nДокумент подготовлен с помощью генератора Россвеб (rossweb.ru). Шаблон, не юридическая консультация.\n'; } // Сборка текста согласия из объекта данных (та же функция используется в генераторе комплекта, id 78) function rwtBuildMarketingConsent(d) { var ch = d.channels.length ? d.channels : ['email']; var chNames = { email: 'электронная почта (email)', sms: 'SMS-сообщения', messenger: 'сообщения в мессенджерах', push: 'push-уведомления', call: 'телефонные звонки (номер набирает сотрудник, без автодозвона)' }; var chData = { email: 'адрес электронной почты', sms: 'номер телефона', messenger: 'номер телефона / идентификатор в мессенджере', push: 'идентификатор устройства или браузера для push-уведомлений', call: 'номер телефона' }; var dataList = d.dataList; if (!dataList) { var seen = {}; var arr = ['имя']; ch.forEach(function (c) { var item = chData[c]; if (!seen[item]) { seen[item] = 1; arr.push(item); } }); if (d.personalization) arr.push('сведения о заказах и просмотренных товарах на Сайте'); dataList = arr.join(', '); } var where = 'на сайте ' + d.siteUrl + (d.app ? ' или в мобильном приложении' : '') + ' (далее — Сайт)'; var req = d.operatorName + ' (ИНН ' + d.inn + ', ОГРН ' + d.ogrn + ', адрес: ' + d.address + ')'; var n = 0; var out = []; function sec(title, body) { n++; out.push('## ' + n + '. ' + title + '\n' + body.replace(/\{n\}/g, n)); } out.push('СОГЛАСИЕ НА ПОЛУЧЕНИЕ РЕКЛАМНОЙ И ИНФОРМАЦИОННОЙ РАССЫЛКИ\nИ НА ОБРАБОТКУ ПЕРСОНАЛЬНЫХ ДАННЫХ ДЛЯ ЭТОЙ ЦЕЛИ\n**Редакция от:** ' + d.date); sec('Предмет согласия', '{n}.1. Проставляя отметку в поле «Я согласен(на) получать рекламную рассылку» ' + where + ', я в соответствии с ч. 1 ст. 18 Федерального закона от 13.03.2006 № 38-ФЗ «О рекламе» даю ' + req + ' (далее — Оператор) согласие на получение от Оператора рекламных и информационных сообщений по указанным мной контактам.\n' + '{n}.2. Согласие даётся именно Оператору. Оно не распространяется на рекламу иных лиц, и Оператор не передаёт мои контакты другим рекламодателям для их собственных рассылок.\n' + '{n}.3. Согласие даётся отдельно от иных документов и согласий; получение рассылки не является условием покупки товаров или использования Сайта.'); sec('Каналы рассылки', 'Согласие распространяется на следующие каналы связи: ' + ch.map(function (c) { return chNames[c]; }).join(', ') + '.'); sec('Тематика рассылок', 'Сообщения могут содержать: ' + d.topics + '.' + (d.personalization ? '\nСодержание сообщений может подбираться с учётом моих заказов и просмотров на Сайте (персонализация).' : '')); sec('Частота рассылок', 'Максимальная частота рекламных сообщений: ' + d.frequency + '.\nСервисные сообщения, связанные с исполнением договора (статус заказа, оплата, доставка), рекламой не являются и в этот лимит не входят.'); sec('Обработка персональных данных', 'В соответствии со ст. 9 Федерального закона от 27.07.2006 № 152-ФЗ «О персональных данных» я даю Оператору согласие на обработку моих персональных данных на следующих условиях:\n' + '{n}.1. Перечень данных: ' + dataList + '.\n' + '{n}.2. Цель обработки: направление мне рекламных и информационных сообщений по выбранным каналам' + (d.personalization ? ', подбор содержания сообщений' : '') + ', учёт моего согласия и отказа от рассылки.\n' + '{n}.3. Действия с данными: сбор, запись, систематизация, накопление, хранение, уточнение (обновление, изменение), извлечение, использование, ' + (d.processors ? 'передача (предоставление, доступ) лицам, указанным в п. {n}.5, ' : '') + 'блокирование, удаление, уничтожение. Способ обработки — автоматизированная обработка.\n' + '{n}.4. Срок: до отказа от рассылки или отзыва настоящего согласия. После получения отзыва Оператор прекращает обработку и уничтожает данные в срок не более 30 дней (ч. 5 ст. 21 152-ФЗ), если их обработка не требуется по другому законному основанию.' + (d.processors ? '\n{n}.5. Рассылку по поручению Оператора технически осуществляет: ' + d.processors + '. Это лицо обрабатывает данные только для доставки сообщений и обязано соблюдать конфиденциальность и требования ст. 19 152-ФЗ (ч. 3 ст. 6 152-ФЗ); ответственность перед мной несёт Оператор.' : '')); var ways = []; if (ch.indexOf('email') > -1) ways.push('перейти по ссылке «Отписаться» в любом письме'); if (ch.indexOf('sms') > -1 || ch.indexOf('messenger') > -1) ways.push('воспользоваться способом отписки, указанным в SMS или сообщении в мессенджере'); if (ch.indexOf('push') > -1) ways.push('отключить push-уведомления в настройках браузера или устройства'); if (ch.indexOf('call') > -1) ways.push('сообщить об отказе во время звонка'); ways.push('направить требование на адрес ' + d.email + ' с темой «Отказ от рассылки»'); sec('Отказ от рассылки и отзыв согласия', '{n}.1. Я могу в любой момент без объяснения причин отказаться от рассылки. Для этого можно:\n' + ways.map(function (w) { return '- ' + w + ';'; }).join('\n') + '\n' + '{n}.2. Получив требование, Оператор обязан немедленно прекратить направлять мне рекламу (ч. 1 ст. 18 38-ФЗ).\n' + '{n}.3. Отказ от рассылки означает и отзыв согласия на обработку персональных данных для этой цели. Он не влияет на обработку данных для исполнения договора (например, оформленного заказа).'); sec('Срок действия согласия', 'Согласие действует с момента проставления отметки в форме на Сайте до отказа от рассылки или отзыва согласия.'); if (d.additionalInfo) sec('Дополнительная информация', d.additionalInfo); sec('Контакты', 'Вопросы о рассылке и обработке персональных данных: ' + d.email + '.\nОператор отвечает на запросы о моих персональных данных в течение 10 рабочих дней; срок может быть продлён не более чем на 5 рабочих дней с мотивированным уведомлением (ст. 14, 20 152-ФЗ).'); var notes = ['---', 'ПРИМЕЧАНИЯ ДЛЯ ВЛАДЕЛЬЦА САЙТА (не включайте в текст согласия)', '- Разместите текст на отдельной странице и дайте на неё ссылку рядом с чекбоксом. Чекбокс не должен быть отмечен заранее и не должен быть обязательным для отправки формы.', '- Согласие на рассылку — отдельный чекбокс, не объединённый с согласием на обработку ПД для заказа и с офертой (ч. 1 ст. 9 152-ФЗ: согласие оформляется отдельно от иных документов).', '- Доказать получение согласия должен рекламораспространитель (ч. 1 ст. 18 38-ФЗ). Храните запись: дата и время, IP, адрес/номер, редакция текста; для email рекомендуется подтверждение подписки (double opt-in).', '- Отписку исполняйте сразу: адрес нужно немедленно исключить из всех рекламных списков, в том числе у сервиса рассылки.']; if (ch.indexOf('call') > -1) notes.push('- Звонки с автодозвоном, роботом или автоинформатором для рекламы запрещены (ч. 2 ст. 18 38-ФЗ) независимо от согласия.'); return out.join('\n') + '\n' + notes.join('\n'); } // Сборка текста согласия из объекта данных (та же функция используется в генераторе комплекта, id 78) function rwtBuildThirdPartyConsent(d) { var n = 0; var out = []; function sec(title, body) { n++; out.push('## ' + n + '. ' + title + '\n' + body.replace(/\{n\}/g, n)); } var parties = (d.parties || []).filter(function (p) { return p.name && p.name.trim(); }); var partyText = parties.length ? parties.map(function (p) { var s = '- ' + p.name.trim(); if (p.inn) s += ', ИНН ' + p.inn.trim(); s += ', адрес: ' + (p.address && p.address.trim() ? p.address.trim() : '[адрес получателя]'); if (p.purpose) s += ' — цель: ' + p.purpose.trim(); if (p.data) s += '; передаваемые данные: ' + p.data.trim(); return s; }).join('\n') : '- [укажите получателей: наименование, адрес, цель и данные — без этого согласие не будет конкретным]'; var req = d.operatorName + ' (ИНН ' + d.inn + ', ОГРН ' + d.ogrn + ', адрес: ' + d.address + ')'; out.push('СОГЛАСИЕ НА ПЕРЕДАЧУ ПЕРСОНАЛЬНЫХ ДАННЫХ ТРЕТЬИМ ЛИЦАМ\n**Редакция от:** ' + d.date); sec('Предмет согласия', '{n}.1. Проставляя отметку в соответствующем поле формы на сайте ' + d.siteUrl + ' (далее — Сайт), я своей волей и в своём интересе, в соответствии со ст. 9 Федерального закона от 27.07.2006 № 152-ФЗ «О персональных данных» (далее — 152-ФЗ), даю ' + req + ' (далее — Оператор) согласие на передачу (предоставление, доступ) моих персональных данных лицам, указанным в разделе 4, на условиях настоящего согласия.\n' + '{n}.2. Настоящее согласие оформлено отдельно от иных документов и дополняет согласие на обработку персональных данных.'); sec('Цели передачи', lines(d.purposes).map(function (x) { return '- ' + x; }).join('\n')); sec('Перечень передаваемых данных', lines(d.data).map(function (x) { return '- ' + x; }).join('\n')); sec('Получатели персональных данных', '{n}.1. Оператор вправе передавать мои персональные данные следующим лицам:\n' + partyText + '\n' + '{n}.2. Получатели обрабатывают данные только в указанных целях, обязаны соблюдать конфиденциальность и принимать меры защиты по ст. 19 152-ФЗ. Если обработка осуществляется по поручению Оператора, ответственность передо мной за действия такого лица несёт Оператор (ч. 5 ст. 6 152-ФЗ).'); sec('Действия с данными', 'Согласие распространяется на передачу (предоставление, доступ) данных указанным лицам, а также на их запись, хранение, использование, блокирование, удаление и уничтожение получателями в пределах целей передачи. Способ обработки — автоматизированная и неавтоматизированная обработка.'); if (d.crossBorder) { var adequate = d.protection !== 'inadequate'; sec('Трансграничная передача', '{n}.1. Я согласен(на) на передачу моих персональных данных на территорию: ' + (d.countries || '[страны]') + '.\n' + (adequate ? '{n}.2. Указанные государства обеспечивают адекватную защиту прав субъектов персональных данных: являются сторонами Конвенции Совета Европы о защите физических лиц при автоматизированной обработке персональных данных (ETS № 108) или включены в перечень, утверждённый Роскомнадзором.\n' : '{n}.2. Указанные государства не обеспечивают адекватную защиту прав субъектов персональных данных. Мне разъяснено, что в этом случае Роскомнадзор вправе запретить или ограничить передачу, а Оператор не начинает её до истечения срока, установленного ст. 12 152-ФЗ.\n') + '{n}.3. До начала трансграничной передачи Оператор уведомляет Роскомнадзор о намерении её осуществлять (ч. 3 ст. 12 152-ФЗ).\n' + '{n}.4. Данные передаются только в целях, указанных в разделе 2.'); } sec('Срок действия и отзыв согласия', '{n}.1. Согласие действует с момента проставления отметки: ' + d.term + '.\n' + '{n}.2. Я могу отозвать согласие полностью или в части (в отношении отдельных получателей или целей), направив заявление на ' + d.email + ' с темой «Отзыв согласия на передачу данных».\n' + '{n}.3. После получения отзыва Оператор прекращает передачу и обработку моих данных, обеспечивает прекращение их обработки лицами, действующими по его поручению, и уничтожает данные (обеспечивает их уничтожение) в срок не более 30 дней (ч. 5 ст. 21 152-ФЗ), если иное не предусмотрено договором со мной или основания для обработки без согласия не установлены федеральным законом (ч. 2 ст. 9 152-ФЗ).'); sec('Передача без согласия', 'Оператор может передавать персональные данные без моего согласия только в случаях, предусмотренных федеральным законом (п. 2–11 ч. 1 ст. 6 152-ФЗ), например по запросу уполномоченных государственных органов.'); if (d.additionalInfo) sec('Дополнительная информация', d.additionalInfo); sec('Контакты', 'Вопросы о передаче данных и отзыв согласия: ' + d.email + '.\nОператор отвечает на запросы в течение 10 рабочих дней; срок может быть продлён не более чем на 5 рабочих дней с мотивированным уведомлением (ст. 14, 20 152-ФЗ).'); var notes = ['---', 'ПРИМЕЧАНИЯ ДЛЯ ВЛАДЕЛЬЦА САЙТА (не включайте в текст согласия)', '- Запрашивайте согласие отдельным чекбоксом без предварительной отметки; текст разместите на отдельной странице со ссылкой рядом с чекбоксом.', '- Доказать получение согласия должен оператор (ч. 3 ст. 9 152-ФЗ): сохраняйте дату, время, IP и редакцию текста.', '- С лицами, которые обрабатывают данные по вашему поручению (CRM, колл-центр, хостинг), заключите поручение с требованиями ч. 3 ст. 6 152-ФЗ.']; if (d.crossBorder) notes.push('- Подайте в Роскомнадзор уведомление о трансграничной передаче до её начала (ч. 3 ст. 12 152-ФЗ); проверьте актуальный перечень стран с адекватной защитой на сайте РКН.'); return out.join('\n') + '\n' + notes.join('\n'); } // ========== СОСТОЯНИЕ (общее для всех документов) ========== var DOCS = [ ['privacy', 'Политика обработки персональных данных'], ['consent', 'Согласие на обработку персональных данных'], ['cookies', 'Политика использования cookie'], ['terms', 'Пользовательское соглашение'], ['moderation', 'Правила модерации'], ['recommend', 'Правила применения рекомендательных технологий'], ['marketing', 'Согласие на рекламную рассылку'], ['thirdparty', 'Согласие на передачу данных третьим лицам'] ]; var DEFAULTS = { p_cookies: true, p_special: 'нет', c_actions: 'сбор, запись, систематизация, накопление, хранение, уточнение (обновление, изменение), извлечение, использование, блокирование, удаление, уничтожение', k_yandex: true, t_returnDays: '7', m_type: 'post', m_comments: true, m_complaintDays: '10', r_method: 'both', mk_email: true, mk_frequency: 'не чаще 2 раз в неделю', tp_protection: 'adequate' }; var S = {}; var PROF = { orgName: 'name', inn: 'inn', ogrn: 'ogrn', address: 'address', siteUrl: 'site', email: 'email', phone: 'phone' }; var saveProfile = RWD.debounce(function () { var o = RWD.load(); Object.keys(PROF).forEach(function (k) { var v = typeof S[k] === 'string' ? S[k].trim() : ''; if (v) o[PROF[k] ] = v; else delete o[PROF[k] ]; }); RWD.store(o); }, 400); var parties = []; var partyCounter = 0; var bundle = {}; var currentDoc = 'privacy'; function resetState() { S = {}; Object.keys(DEFAULTS).forEach(function (k) { S[k] = DEFAULTS[k]; }); S.date = todayISO(); var pr = RWD.load(); Object.keys(PROF).forEach(function (k) { if (pr[PROF[k] ]) S[k] = pr[PROF[k] ]; }); parties = []; partyCounter = 0; addParty(true); } function g(k, fb) { var v = S[k]; if (typeof v === 'string') v = v.trim(); return v ? v : (fb === undefined ? '' : fb); } function req() { return { orgName: g('orgName', '[наименование]'), inn: g('inn', '[ИНН]'), ogrn: g('ogrn', '[ОГРН]'), address: g('address', '[адрес]'), siteUrl: g('siteUrl', '[сайт]'), email: g('email', '[email]'), phone: g('phone'), date: ruDate(g('date')) }; } // ========== КОНСТРУКТОР ПОЛЕЙ ========== function fText(k, label, ph, type) { return '
'; } function fArea(k, label, ph) { return '
'; } function fCheck(k, label) { return ''; } function fChecks(items) { return '
' + items.join('') + '
'; } function fSelect(k, label, opts) { return '
'; } function row(a, b) { return '
' + a + b + '
'; } function show(k, html) { return '
' + html + '
'; } function warn(k, text) { return '
' + text + '
'; } var USES_PHONE = { privacy: 1, consent: 1, cookies: 1, terms: 1 }; function sharedForm() { return '
Реквизиты — общие для всех документов
' + '

Сохраняются при переключении между документами.

' + fText('orgName', 'Наименование (ООО / ИП)', 'ООО «Ромашка» / ИП Иванов Иван Иванович') + row(fText('inn', 'ИНН', '10 или 12 цифр'), fText('ogrn', 'ОГРН / ОГРНИП', '13 или 15 цифр')) + fText('address', 'Адрес', 'индекс, город, улица, дом') + row(fText('siteUrl', 'Сайт', 'example.ru'), fText('email', 'Email для обращений', 'privacy@example.ru', 'email')) + (USES_PHONE[currentDoc] ? row(fText('phone', 'Телефон', '+7 ...'), fText('date', 'Дата редакции', '', 'date')) : fText('date', 'Дата редакции', '', 'date')) + '
'; } var FORMS = { privacy: function () { return fText('p_url', 'Адрес страницы политики', 'https://example.ru/privacy') + fArea('p_purposes', 'Цели обработки (каждая с новой строки)', 'обработка заявок и обращений\nзаключение и исполнение договоров') + fArea('p_data', 'Какие данные обрабатываются', 'фамилия, имя, телефон, email, адрес доставки') + fText('p_subjects', 'Категории субъектов', 'посетители сайта, клиенты, лица, направившие заявку') + fText('p_retention', 'Срок хранения', 'до достижения целей обработки или до отзыва согласия') + row(fText('p_rkn', 'Номер в реестре операторов РКН', 'если уже присвоен'), fText('p_db', 'Где размещены базы данных (РФ)', 'хостинг-провайдер, город')) + fText('p_thirdParty', 'Кому передаются данные (если передаются)', 'служба доставки, платёжный сервис') + fSelect('p_special', 'Специальные категории и биометрия', [ ['нет', 'Не обрабатываем'], ['special', 'Специальные категории (ст. 10)'], ['biometric', 'Биометрия (ст. 11)'], ['both', 'И то, и другое'] ]) + fChecks([fCheck('p_cookies', 'Используем cookie и Яндекс Метрику'), fCheck('p_minors', 'Сайт могут использовать несовершеннолетние'), fCheck('p_crossBorder', 'Трансграничная передача')]) + show('p_crossBorder', fText('p_countries', 'В какие страны', 'Республика Казахстан') + '
⚠ До начала трансграничной передачи нужно уведомить Роскомнадзор (ч. 3 ст. 12 152-ФЗ).
') + show('p_cookies', fText('p_cookieUrl', 'Адрес политики cookie', 'https://example.ru/cookies')); }, consent: function () { return fText('c_purpose', 'Цель обработки', 'обработка заявки и консультация по услугам') + fText('c_dataList', 'Какие данные', 'имя, телефон, email') + fText('c_actions', 'Действия с данными', '') + row(fText('c_term', 'Срок действия согласия', 'до достижения цели, но не более 3 лет'), fText('c_policyUrl', 'Адрес политики обработки ПД', '/privacy')) + fChecks([fCheck('c_transfer', 'Обработку по поручению ведут другие лица (CRM, хостинг, колл-центр)')]) + show('c_transfer', fText('c_processors', 'Наименование и адрес таких лиц', 'ООО «...», г. ..., ул. ...')) + '
Согласие на рекламную рассылку не включайте в этот документ — для него есть отдельный документ (п. 7).
'; }, cookies: function () { return fChecks([fCheck('k_yandex', 'Яндекс Метрика'), fCheck('k_google', 'Google Analytics'), fCheck('k_vk', 'Пиксель VK Рекламы'), fCheck('k_meta', 'Meta Pixel')]) + warn('k_google', '⚠ Google Analytics передаёт данные в США — это трансграничная передача в страну без адекватной защиты: нужны уведомление Роскомнадзора (ч. 3 ст. 12 152-ФЗ) и согласие пользователя. Рассмотрите отказ от сервиса.') + warn('k_meta', '⚠ Meta Platforms Inc. признана в РФ экстремистской организацией, её деятельность запрещена. Использование Meta Pixel несёт правовые риски и означает трансграничную передачу данных в США — не рекомендуем.') + fText('k_other', 'Другие сервисы', 'например, онлайн-чат, карта') + fArea('k_note', 'Дополнительная информация', ''); }, terms: function () { return fChecks([fCheck('t_digital', 'Цифровые товары'), fCheck('t_subscription', 'Подписка'), fCheck('t_prepay', 'Предоплата 100%')]) + fText('t_returnDays', 'Срок возврата товара надлежащего качества (дней, не меньше 7)', '7') + fArea('t_additional', 'Дополнительные условия', ''); }, moderation: function () { return fChecks([fCheck('m_comments', 'Комментарии'), fCheck('m_forum', 'Форум'), fCheck('m_reviews', 'Отзывы'), fCheck('m_uploads', 'Загрузка файлов')]) + row(fText('m_complaintDays', 'Срок рассмотрения жалоб (рабочих дней)', '10'), fSelect('m_type', 'Тип модерации', [ ['post', 'Пост-модерация'], ['pre', 'Пре-модерация'], ['mixed', 'Смешанный тип'] ])) + fText('m_email', 'Email для жалоб (если отличается)', 'moderation@example.ru', 'email') + fArea('m_additional', 'Дополнительные правила', ''); }, recommend: function () { return fSelect('r_method', 'Как пользователь может отказаться от персональных рекомендаций', [ ['both', 'В личном кабинете или по email'], ['cabinet', 'Только в личном кабинете'], ['email', 'Только по email'] ]) + fText('r_data', 'Какие сведения о пользователе используются', 'история просмотров и заказов, корзина, поисковые запросы на сайте') + fArea('r_additional', 'Дополнительная информация', ''); }, marketing: function () { return fChecks([fCheck('mk_email', 'Email'), fCheck('mk_sms', 'SMS'), fCheck('mk_messenger', 'Мессенджеры'), fCheck('mk_push', 'Push-уведомления'), fCheck('mk_call', 'Телефонные звонки')]) + warn('mk_call', '⚠ Реклама по телефону с автодозвоном или автоинформатором запрещена ч. 2 ст. 18 38-ФЗ даже при наличии согласия.') + fArea('mk_topics', 'Тематика рассылок', 'акции и скидки, новости компании') + fSelect('mk_frequency', 'Частота', [ ['не чаще 1 раза в день', 'не чаще 1 раза в день'], ['не чаще 2 раз в неделю', 'не чаще 2 раз в неделю'], ['не чаще 1 раза в неделю', 'не чаще 1 раза в неделю'], ['не чаще 2 раз в месяц', 'не чаще 2 раз в месяц'] ]) + fText('mk_dataList', 'Какие данные собираются (необязательно)', 'email, имя') + fChecks([fCheck('mk_app', 'Подписка и в мобильном приложении'), fCheck('mk_personal', 'Персонализация'), fCheck('mk_processors', 'Рассылку выполняет сервис по поручению')]) + show('mk_processors', fText('mk_services', 'Сервис рассылки: наименование и адрес', 'ООО «...», г. ...')) + fArea('mk_additional', 'Дополнительная информация', ''); }, thirdparty: function () { return fArea('tp_data', 'Какие данные передаются', 'ФИО, телефон, email, адрес доставки') + fArea('tp_purposes', 'Цели передачи (каждая с новой строки)', 'доставка заказов\nприём платежей') + fText('tp_term', 'Срок действия согласия', 'до достижения целей передачи или до отзыва') + '
' + fChecks([fCheck('tp_cross', 'Трансграничная передача')]) + show('tp_cross', fText('tp_countries', 'Страны', 'Республика Казахстан') + fSelect('tp_protection', 'Защита прав субъектов в этих странах', [ ['adequate', 'Адекватная (Конвенция ETS 108 или перечень РКН)'], ['inadequate', 'Не обеспечивают адекватную защиту'] ]) + '
⚠ До начала трансграничной передачи нужно уведомить Роскомнадзор (ч. 3 ст. 12 152-ФЗ).
') + fArea('tp_additional', 'Дополнительная информация', ''); } }; // ========== ПОЛУЧАТЕЛИ (для п. 8) ========== function addParty(silent) { partyCounter++; parties.push({ id: partyCounter, name: '', inn: '', address: '', purpose: '', data: '' }); if (!silent) renderParties(); } function renderParties() { var c = $('thirdPartiesContainer'); if (!c) return; c.innerHTML = parties.map(function (p, i) { function inp(f, label, ph) { return '
'; } return '
Получатель ' + (i + 1) + '
' + inp('name', 'Наименование / ФИО ИП', 'ООО «Служба доставки»') + row(inp('inn', 'ИНН', '10 или 12 цифр'), inp('address', 'Адрес', 'город, улица, дом')) + row(inp('purpose', 'Цель передачи', 'доставка заказов'), inp('data', 'Какие данные', 'ФИО, адрес, телефон')) + '
'; }).join(''); } // ========== ГЕНЕРАТОРЫ ========== function sections(header, list) { var n = 0; return header + '\n' + list.filter(function (x) { return x; }).map(function (x) { n++; return '## ' + n + '. ' + x[0] + '\n' + (Array.isArray(x[1]) ? x[1].filter(function (c) { return c; }).map(function (c, i) { return n + '.' + (i + 1) + '. ' + c; }).join('\n') : x[1]); }).join('\n'); } function reqLine(r, withPhone) { return r.orgName + ' (ИНН ' + r.inn + ', ОГРН ' + r.ogrn + ', адрес: ' + r.address + (withPhone && r.phone ? ', телефон: ' + r.phone : '') + ')'; } function genPrivacy() { var r = req(); var tp = g('p_thirdParty'); var data = g('p_data', '[перечень персональных данных]'); var purposes = lines(g('p_purposes', 'обработка заявок и обращений, поступивших через Сайт')); return rwtBuildPolicy({ siteUrl: r.siteUrl, privacyUrl: g('p_url', '[адрес страницы политики]'), orgName: r.orgName, orgNameNom: r.orgName, email: r.email, inn: r.inn, ogrn: r.ogrn, address: g('address'), rkn: g('p_rkn'), dbLocation: g('p_db'), countries: g('p_countries'), phone: r.phone, cookiePolicyUrl: g('p_cookieUrl'), storageTerm: g('p_retention', 'до достижения целей обработки или до отзыва согласия субъектом'), thirdParty: tp ? 'Оператор передаёт персональные данные следующим лицам: ' + tp + ' — только в объёме, необходимом для целей обработки, при наличии согласия субъекта или иного основания, предусмотренного ст. 6 152-ФЗ.' : 'Оператор не передаёт персональные данные третьим лицам без согласия субъекта, за исключением случаев, предусмотренных федеральным законом.', crossBorder: S.p_crossBorder ? 'да' : 'нет', cookies: S.p_cookies ? 'да' : 'нет', specialData: g('p_special', 'нет'), minors: S.p_minors ? 'да' : 'нет', date: r.date, rights: ['Получать информацию об обработке своих персональных данных', 'Требовать уточнения, блокирования или уничтожения персональных данных', 'Отзывать согласие на обработку персональных данных', 'Обжаловать действия Оператора в Роскомнадзоре или в суде'], subjects: g('p_subjects') ? g('p_subjects').split(/[,;]\s*/).filter(Boolean) : ['Посетители Сайта', 'Клиенты и покупатели', 'Лица, направившие заявку или обращение через формы Сайта'], purposes: purposes.map(function (goal) { return { goal: goal, data: [data], legal: ['согласие субъекта персональных данных (п. 1 ч. 1 ст. 6 152-ФЗ)', 'договор, стороной которого является субъект (п. 5 ч. 1 ст. 6 152-ФЗ)'], types: ['сбор, запись, систематизация, накопление, хранение, уточнение, извлечение, использование, блокирование, удаление, уничтожение', 'смешанная обработка'] }; }) }); } function genConsent() { var r = req(); var proc = S.c_transfer ? g('c_processors', '[наименование и адрес лица, обрабатывающего данные по поручению]') : ''; return sections('СОГЛАСИЕ НА ОБРАБОТКУ ПЕРСОНАЛЬНЫХ ДАННЫХ\n**Редакция от:** ' + r.date, [ ['Субъект и оператор', ['Я, субъект персональных данных, указавший свои данные в форме на сайте ' + r.siteUrl + ' (далее — Сайт), проставляя отметку в поле согласия, своей волей и в своём интересе даю согласие ' + reqLine(r, true) + ' (далее — Оператор) на обработку моих персональных данных на условиях ниже (ст. 9 Федерального закона от 27.07.2006 № 152-ФЗ «О персональных данных»).', 'Согласие оформлено отдельно от иных документов (ч. 1 ст. 9 152-ФЗ) и является конкретным, предметным, информированным и сознательным.'] ], ['Цель обработки', g('c_purpose', '[цель обработки]') + '.'], ['Перечень персональных данных', g('c_dataList', '[перечень данных]') + '.'], ['Действия и способы обработки', ['Перечень действий: ' + g('c_actions', DEFAULTS.c_actions) + (proc ? ', передача (предоставление, доступ) лицу, указанному в п. 5' : '') + '.', 'Способ обработки — смешанная (автоматизированная и неавтоматизированная) обработка.'] ], proc ? ['Обработка по поручению Оператора', 'Обработку моих данных по поручению Оператора осуществляет: ' + proc + '. Ответственность передо мной за действия этого лица несёт Оператор (ч. 5 ст. 6 152-ФЗ).'] : null, ['Срок действия и отзыв', ['Согласие действует: ' + g('c_term', 'до достижения цели обработки или до отзыва согласия') + '.', 'Я могу отозвать согласие, направив заявление на ' + r.email + ' или письменно по адресу Оператора. Оператор прекращает обработку и уничтожает данные в срок не более 30 дней с даты поступления отзыва (ч. 5 ст. 21 152-ФЗ), если обработка не допускается без согласия по иным основаниям ст. 6 152-ФЗ.'] ], ['Политика Оператора', 'С Политикой обработки персональных данных Оператора, размещённой по адресу ' + g('c_policyUrl', '[адрес политики]') + ', я ознакомлен(а).'] ]) + '\n---\nПРИМЕЧАНИЕ ДЛЯ ВЛАДЕЛЬЦА САЙТА: запрашивайте согласие отдельным чекбоксом без предварительной отметки; доказать его получение должен оператор (ч. 3 ст. 9 152-ФЗ).'; } function genCookies() { var r = req(); var svc = []; if (S.k_yandex) svc.push('Яндекс Метрика (ООО «Яндекс», Россия) — статистика посещений, карты кликов, вебвизор'); if (S.k_google) svc.push('Google Analytics (Google LLC, США) — статистика посещений; данные передаются за пределы РФ'); if (S.k_vk) svc.push('Пиксель VK Рекламы (ООО «ВК», Россия) — оценка эффективности рекламы и ретаргетинг'); if (S.k_meta) svc.push('Meta Pixel (Meta Platforms Inc., США) — оценка эффективности рекламы; данные передаются за пределы РФ'); if (g('k_other')) svc.push(g('k_other')); var notes = []; if (S.k_google || S.k_meta) notes.push('- Выбранные зарубежные сервисы означают трансграничную передачу данных: нужны уведомление Роскомнадзора до её начала (ч. 3 ст. 12 152-ФЗ) и согласие пользователя.'); if (S.k_meta) notes.push('- Meta Platforms Inc. признана в РФ экстремистской организацией, её деятельность запрещена. Использование Meta Pixel не рекомендуем.'); notes.push('- Аналитические и рекламные счётчики подключайте только после согласия в cookie-баннере.'); return sections('ПОЛИТИКА ИСПОЛЬЗОВАНИЯ ФАЙЛОВ COOKIE\n**Редакция от:** ' + r.date, [ ['Общие положения', 'Политика описывает, как ' + reqLine(r) + ' (далее — Оператор) использует файлы cookie и метрические программы на сайте ' + r.siteUrl + ' (далее — Сайт).'], ['Что такое cookie', 'Cookie — небольшие текстовые файлы, которые сайт сохраняет в браузере пользователя. Они позволяют Сайту работать корректно и запоминать настройки, а также собирать статистику посещений.'], ['Какие cookie используются', ['Технически необходимые — обеспечивают работу Сайта (сессия, корзина, настройки); используются без отдельного согласия.', 'Аналитические — помогают понять, как посетители пользуются Сайтом.', 'Рекламные — позволяют оценивать эффективность рекламы.'] ], ['Сервисы третьих лиц', svc.length ? svc.map(function (x) { return '- ' + x; }).join('\n') : 'Сервисы третьих лиц на Сайте не используются.'], ['Согласие пользователя', ['Аналитические и рекламные cookie и метрические программы применяются только после согласия пользователя, которое запрашивается при первом посещении Сайта (cookie-баннер).', 'При этом обрабатываются: cookie-идентификаторы, IP-адрес, сведения о браузере и устройстве, данные о действиях на Сайте. Цель — статистика и улучшение работы Сайта' + ((S.k_vk || S.k_meta) ? ', оценка эффективности рекламы' : '') + '.', 'Согласие можно отозвать, изменив выбор в настройках cookie на Сайте или удалив cookie в браузере.'] ], ['Срок хранения', 'Сеансовые cookie удаляются при закрытии браузера, постоянные — по истечении срока, заданного сервисом, или при их удалении пользователем.'], ['Как отключить cookie', 'Пользователь может ограничить или запретить cookie в настройках браузера, а также воспользоваться инструментами отказа от отслеживания, которые предоставляют сервисы аналитики. Часть функций Сайта при этом может работать некорректно.'], g('k_note') ? ['Дополнительная информация', g('k_note')] : null, ['Контакты', 'Вопросы об использовании cookie: ' + r.email + (r.phone ? ', ' + r.phone : '') + '.'] ]) + '\n---\nПРИМЕЧАНИЯ ДЛЯ ВЛАДЕЛЬЦА САЙТА\n' + notes.join('\n'); } function genTerms() { var r = req(); var days = parseInt(g('t_returnDays', '7'), 10); if (!(days >= 7)) days = 7; return sections('ПОЛЬЗОВАТЕЛЬСКОЕ СОГЛАШЕНИЕ (ПУБЛИЧНАЯ ОФЕРТА)\n**Редакция от:** ' + r.date, [ ['Общие положения', ['Настоящий документ является публичной офертой (ст. 437 ГК РФ) ' + r.orgName + ' (далее — Продавец) и определяет условия продажи товаров через сайт ' + r.siteUrl + ' (далее — Сайт).', 'Акцептом оферты является оформление заказа на Сайте (п. 3 ст. 438 ГК РФ).', 'Отношения сторон регулируются Гражданским кодексом РФ, Законом РФ «О защите прав потребителей» и Правилами продажи товаров по договору розничной купли-продажи (постановление Правительства РФ от 31.12.2020 № 2463).'] ], ['Сведения о продавце', r.orgName + ', ИНН ' + r.inn + ', ОГРН ' + r.ogrn + ', адрес: ' + r.address + ', email: ' + r.email + (r.phone ? ', телефон: ' + r.phone : '') + '.'], ['Оформление заказа', ['Покупатель оформляет заказ на Сайте, указывая сведения, необходимые для его исполнения.', 'Продавец подтверждает заказ по указанным контактам. Информация о товаре, его цене, способах оплаты и доставки приводится на Сайте до оформления заказа.'] ], ['Цена и оплата', ['Цены указываются на Сайте в рублях.', S.t_prepay ? 'Заказ оплачивается со 100% предоплатой способами, указанными на Сайте.' : 'Заказ оплачивается способами, указанными на Сайте, в том числе при получении, если такой способ доступен.', 'Продавец выдаёт кассовый чек в соответствии с законодательством о применении контрольно-кассовой техники.'] ], ['Доставка', 'Сроки, способы и стоимость доставки сообщаются при оформлении заказа.'], ['Возврат и обмен', ['Покупатель вправе отказаться от товара надлежащего качества в любое время до его передачи, а после передачи — в течение ' + days + ' дней (п. 4 ст. 26.1 Закона «О защите прав потребителей»), если сохранены товарный вид, потребительские свойства и документ, подтверждающий покупку. Если информация о порядке и сроках возврата не была предоставлена в письменной форме при доставке, срок составляет 3 месяца.', 'Отказаться от товара надлежащего качества с индивидуально-определёнными свойствами нельзя, если он может быть использован только приобретающим его потребителем.', 'Продавец возвращает уплаченную сумму, за исключением расходов на доставку возвращённого товара, не позднее 10 дней с даты предъявления требования.', 'Требования в отношении товара ненадлежащего качества предъявляются в порядке ст. 18 Закона «О защите прав потребителей».'] ], S.t_digital ? ['Цифровые товары', 'Цифровые товары (электронные копии, ключи, доступ к контенту) предоставляются путём направления ссылки, ключа или открытия доступа. Условия использования определяются лицензией правообладателя. При ненадлежащем качестве покупатель вправе предъявить требования, предусмотренные Законом «О защите прав потребителей».'] : null, S.t_subscription ? ['Подписка', ['Условия, стоимость и период подписки указываются на Сайте до оплаты.', 'Автоматическое продление и списание за новый период производится, только если покупатель согласился на это при оформлении; отключить автопродление можно в любой момент в личном кабинете или по email ' + r.email + '.', 'Покупатель вправе отказаться от подписки в любое время с оплатой фактически оказанных услуг (ст. 32 Закона «О защите прав потребителей»).'] ] : null, ['Персональные данные', 'Персональные данные покупателя обрабатываются в соответствии с Политикой обработки персональных данных Продавца и на основании отдельного согласия.'], ['Разрешение споров', 'Споры решаются путём переговоров. Потребитель вправе обратиться в суд по своему выбору в соответствии со ст. 17 Закона «О защите прав потребителей».'], g('t_additional') ? ['Дополнительные условия', g('t_additional')] : null, ['Контакты', r.email + (r.phone ? ', ' + r.phone : '') + '.'] ]); } function genModeration() { var r = req(); var types = []; if (S.m_comments) types.push('комментарии'); if (S.m_forum) types.push('сообщения на форуме'); if (S.m_reviews) types.push('отзывы'); if (S.m_uploads) types.push('загружаемые файлы'); var mt = g('m_type', 'post'); var modText = mt === 'pre' ? 'Пре-модерация: материалы публикуются только после проверки модератором.' : mt === 'mixed' ? 'Смешанная модерация: материалы проходят автоматическую проверку; материалы, отмеченные фильтром, публикуются после ручной проверки модератором, остальные — сразу с последующим контролем.' : 'Пост-модерация: материалы публикуются сразу и проверяются модератором после публикации.'; var mail = g('m_email', r.email); var banned = ['информация, распространение которой в Российской Федерации запрещено (ст. 15.1 149-ФЗ), в том числе призывы к экстремистской и террористической деятельности, пропаганда наркотиков, информация о способах самоубийства;', 'оскорбления, угрозы, нецензурная брань, дискриминация;', 'персональные данные третьих лиц без их согласия;', 'реклама и спам без согласования с администрацией;', 'материалы, нарушающие авторские и иные права третьих лиц;', 'заведомо недостоверная информация.']; if (S.m_reviews) banned.push('заказные и недостоверные отзывы, отзывы о товарах, которые автор не приобретал;'); if (S.m_uploads) banned.push('файлы с вредоносным кодом и файлы, содержимое которых нарушает настоящие Правила.'); return sections('ПРАВИЛА РАЗМЕЩЕНИЯ И МОДЕРАЦИИ ПОЛЬЗОВАТЕЛЬСКИХ МАТЕРИАЛОВ\n**Редакция от:** ' + r.date, [ ['Общие положения', 'Правила действуют на сайте ' + r.siteUrl + ' (администратор — ' + reqLine(r) + ') и распространяются на ' + (types.length ? types.join(', ') : 'материалы пользователей') + '. Размещая материалы, пользователь подтверждает согласие с Правилами.'], ['Что запрещено', 'Запрещено размещать:\n' + banned.map(function (b) { return '- ' + b; }).join('\n')], ['Порядок модерации', modText], ['Жалобы', ['Жалобу на материал можно направить на ' + mail + ' с указанием ссылки на материал и причины.', 'Жалобы рассматриваются в течение ' + g('m_complaintDays', '10') + ' рабочих дней. Требования уполномоченных органов об удалении запрещённой информации исполняются в сроки, установленные законом.'] ], ['Меры к нарушителям', 'Администрация вправе удалить материал, вынести предупреждение, ограничить или заблокировать учётную запись.'], g('m_additional') ? ['Дополнительные правила', g('m_additional')] : null, ['Контакты', mail + '.'] ]); } function genRecommend() { var r = req(); var m = g('r_method', 'both'); var how = m === 'email' ? 'направив запрос на ' + r.email + '; запрос исполняется в разумный срок, о результате пользователь уведомляется.' : m === 'cabinet' ? 'в личном кабинете, в разделе настроек.' : 'в личном кабинете (раздел настроек) или направив запрос на ' + r.email + '.'; return sections('ПРАВИЛА ПРИМЕНЕНИЯ РЕКОМЕНДАТЕЛЬНЫХ ТЕХНОЛОГИЙ\n**Редакция от:** ' + r.date, [ ['Общие положения', ['Правила разработаны в соответствии со ст. 10.2-2 Федерального закона от 27.07.2006 № 149-ФЗ «Об информации, информационных технологиях и о защите информации» и описывают применение рекомендательных технологий на сайте ' + r.siteUrl + ' (далее — Сайт).', 'Владелец Сайта: ' + reqLine(r) + '. Адрес электронной почты для направления юридически значимых сообщений: ' + r.email + '.'] ], ['Какие сведения используются', g('r_data', 'история просмотров и заказов на Сайте, товары в корзине и избранном, поисковые запросы на Сайте, регион и тип устройства') + '.'], ['Процессы и методы', ['Сбор: сведения о действиях пользователя на Сайте фиксируются с помощью cookie и журналов событий.', 'Систематизация: сведения группируются по пользователю (учётной записи или идентификатору браузера) и по товарам.', 'Анализ: алгоритмы оценивают сходство товаров и интересов пользователей, популярность товаров и вероятность интереса к ним.', 'Предоставление: результаты показываются в блоках рекомендаций и при сортировке каталога.'] ], ['Ограничения', 'Рекомендательные технологии не применяются с нарушением прав и законных интересов граждан и организаций, а также для предоставления информации с нарушением законодательства РФ.'], ['Отказ от персональных рекомендаций', 'Пользователь может отказаться от персональных рекомендаций ' + how], g('r_additional') ? ['Дополнительная информация', g('r_additional')] : null, ['Контакты', r.email + '.'] ]); } function genMarketing() { var r = req(); var ch = []; ['email', 'sms', 'messenger', 'push', 'call'].forEach(function (c) { if (S['mk_' + c]) ch.push(c); }); return rwtBuildMarketingConsent({ operatorName: r.orgName, inn: r.inn, ogrn: r.ogrn, address: r.address, siteUrl: r.siteUrl, email: r.email, date: r.date, app: !!S.mk_app, dataList: g('mk_dataList'), topics: g('mk_topics', 'новости, акции и специальные предложения'), frequency: g('mk_frequency', DEFAULTS.mk_frequency), channels: ch, personalization: !!S.mk_personal, processors: S.mk_processors ? g('mk_services', '[наименование и адрес сервиса рассылки]') : '', additionalInfo: g('mk_additional') }); } function genThirdParty() { var r = req(); return rwtBuildThirdPartyConsent({ operatorName: r.orgName, inn: r.inn, ogrn: r.ogrn, address: r.address, siteUrl: r.siteUrl, email: r.email, date: r.date, term: g('tp_term', 'до достижения целей передачи или до отзыва согласия'), data: g('tp_data', '[перечень персональных данных]'), purposes: g('tp_purposes', '[цели передачи]'), parties: parties.map(function (p) { return { name: p.name, inn: p.inn, address: p.address, purpose: p.purpose, data: p.data }; }), crossBorder: !!S.tp_cross, countries: g('tp_countries'), protection: g('tp_protection', 'adequate'), additionalInfo: g('tp_additional') }); } var GEN = { privacy: genPrivacy, consent: genConsent, cookies: genCookies, terms: genTerms, moderation: genModeration, recommend: genRecommend, marketing: genMarketing, thirdparty: genThirdParty }; // ========== РЕНДЕР ========== function applyVisibility() { Array.prototype.forEach.call(document.querySelectorAll('#dynamicFields [data-show]'), function (el) { el.style.display = S[el.getAttribute('data-show')] ? '' : 'none'; }); } function renderForm() { var container = $('dynamicFields'); $('cardHeader').className = 'card-header header-' + currentDoc; $('resultHeader').className = 'card-header header-' + currentDoc; container.innerHTML = sharedForm() + FORMS[currentDoc](); Array.prototype.forEach.call(container.querySelectorAll('[data-k]'), function (el) { var v = S[el.getAttribute('data-k')]; if (el.type === 'checkbox') el.checked = !!v; else el.value = v == null ? '' : v; }); renderParties(); applyVisibility(); } var DOCNAME = { privacy: 'politika-obrabotki-pd', consent: 'soglasie-na-obrabotku-pd', cookies: 'politika-cookie', terms: 'polzovatelskoe-soglashenie', moderation: 'pravila-moderacii', recommend: 'pravila-rekomendatelnyh-tehnologij', marketing: 'soglasie-na-rassylku', thirdparty: 'soglasie-na-peredachu-tretim-licam' }; function docTitle(k) { return DOCS.filter(function (d) { return d[0] === k; })[0][1]; } function buildDoc(k) { return RWD.splitNotes(GEN[k]()); } var cur = ''; function generateDocument() { var sp = buildDoc(currentDoc); cur = sp.doc; $('resultArea').innerHTML = RWD.preview(RWD.html(cur)); RWD.showNotes('notesBox', sp.notes); } function renderBundle() { $('bundleList').innerHTML = DOCS.map(function (d) { if (bundle[d[0] ] === undefined) bundle[d[0] ] = true; return ''; }).join(''); } // ========== ВЫГРУЗКА ========== function downloadCurrent() { RWD.saveDoc(DOCNAME[currentDoc] + '.doc', docTitle(currentDoc), RWD.html(cur)); } var bundleBusy = false; function downloadAll() { var list = DOCS.filter(function (d) { return bundle[d[0] ]; }).map(function (d) { return d[0]; }); if (!list.length) { RWT.msg('bundleMsg', 'Отметьте хотя бы один документ', 'err'); return; } if (bundleBusy) return; bundleBusy = true; var i = 0; RWT.msg('bundleMsg', 'Скачиваем ' + list.length + ' ' + (list.length === 1 ? 'файл' : list.length < 5 ? 'файла' : 'файлов') + '…', 'info'); (function next() { if (i >= list.length) { bundleBusy = false; RWT.msg('bundleMsg', 'Готово. Если браузер спросил, разрешить ли сайту скачивать несколько файлов, — разрешите, иначе часть документов не сохранится.', 'ok'); return; } var k = list[i++]; RWD.saveDoc(DOCNAME[k] + '.doc', docTitle(k), RWD.html(buildDoc(k).doc)); setTimeout(next, 700); })(); } // ========== ИНИЦИАЛИЗАЦИЯ ========== function init() { resetState(); var c = $('dynamicFields'); var live = RWD.debounce(generateDocument, 300); function onField(e) { var t = e.target; var k = t.getAttribute('data-k'); if (k) { S[k] = t.type === 'checkbox' ? t.checked : t.value; if (PROF[k]) saveProfile(); if (t.type === 'checkbox' || t.tagName === 'SELECT') applyVisibility(); live(); return; } var f = t.getAttribute('data-pf'); if (f) { var id = parseInt(t.getAttribute('data-id'), 10); parties.forEach(function (p) { if (p.id === id) p[f] = t.value; }); live(); } } c.addEventListener('input', onField); c.addEventListener('change', onField); c.addEventListener('click', function (e) { var t = e.target; if (t.id === 'addThirdPartyBtn') { addParty(); live(); return; } if (t.classList && t.classList.contains('btn-remove-party')) { var id = parseInt(t.getAttribute('data-id'), 10); parties = parties.filter(function (p) { return p.id !== id; }); renderParties(); live(); } }); Array.prototype.forEach.call(document.querySelectorAll('.doc-btn'), function (btn) { btn.addEventListener('click', function () { Array.prototype.forEach.call(document.querySelectorAll('.doc-btn'), function (b) { b.classList.remove('active'); }); btn.classList.add('active'); currentDoc = btn.getAttribute('data-doc'); renderForm(); generateDocument(); }); }); $('bundleList').addEventListener('change', function (e) { var k = e.target.getAttribute('data-b'); if (k) bundle[k] = e.target.checked; }); $('copyBtn').addEventListener('click', function () { RWT.copy(RWD.text(cur), this); }); $('copyHtmlBtn').addEventListener('click', function () { RWT.copy(RWD.html(cur), this); }); $('downloadBtn').addEventListener('click', downloadCurrent); $('downloadAllBtn').addEventListener('click', downloadAll); RWD.profileBar('rwdSaved', function () { Object.keys(PROF).forEach(function (k) { delete S[k]; }); renderForm(); generateDocument(); }); RWD.dock('rwdBar', 'rwdHome', 'resultBody', 1000); $('resetBtn').addEventListener('click', function () { resetState(); renderForm(); generateDocument(); }); renderBundle(); renderForm(); generateDocument(); } if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', init); else init(); })();
Приведём сайт к 152-ФЗ под ключ

Политика, согласия, cookie-баннер и формы — сделаем документы и внедрим на сайт. Фиксированный срок, без абонентки.

Обсудить проект