BUSSOL / VIDEO WIDGETS PRO

Документация версии 1.1.1

Установка, форматы, показ, сегментация, eCommerce, аналитика, A/B, Сайты24, интеграции и безопасность.
1С-Битрикс 26+PHP 8.2+Любая редакцияBubble · Popup · Inline · Stories · Carousel
29 сентября 2026 года
Модуль: bussol.vwidget2
SHA-256 архива: cdeab5062813d6360d0179d196bf21828ca26bbed4d313481584c0301b7052d2

О документе

Документ подготовлен для Bussol: Видеовиджеты PRO — Bubble, Stories, Carousel, A/B и аналитика, версия 1.1.1, на основе фактической реализации релизного архива и в структуре, близкой к эксплуатационной документации BUSSOL DataBridge. Он предназначен для администратора сайта, маркетолога, интегратора и разработчика.

Позиционирование

Платформа видеомаркетинга и видеопродаж для 1С-Битрикс: Bubble, Stories, Carousel, eCommerce, A/B, аналитика и Сайты24

1. Назначение и модель работы

Модуль BUSSOL: Видеовиджеты PRO организует управляемый показ видеоконтента на сайтах 1С-Битрикс и объединяет в одном решении плавающие видеовиджеты, Stories, Carousel, eCommerce-действия, сегментацию, A/B-тестирование и аналитику. Версия 1.1.1 предназначена для администратора сайта, маркетолога, интегратора и разработчика.

КомпонентНазначение
ВиджетХранит формат, медиаисточник, дизайн, правила показа, аудиторию, CTA, eCommerce, A/B и интеграции.
Карточка Stories / CarouselОтдельный элемент подборки со своим видео/URL, preview, poster, CTA, товаром и количеством.
Клиентский движокБез jQuery. Изолирует экземпляры, запускает триггеры, проигрывание, CTA, DataLayer, DOM-события и клиентскую телеметрию.
AutoRendererАвтоматически вставляет подходящие плавающие форматы в публичную страницу с учётом сайта, Сайты24, URL-правил и Композита.
Runtime contextNo-store endpoints передают авторизацию, группы, корзину и sessid без встраивания персонального состояния в статический Композит.
АналитикаФиксирует показы, открытия, этапы просмотра, CTA, корзину и формы; строит KPI, воронку, динамику и A/B-статистику.
Агент очисткиРаз в сутки удаляет сырые события старше заданного срока хранения.
Рекомендуемая модель эксплуатации

Создайте тестовый неактивный виджет, настройте страницы и аудиторию, проверьте его на копии или тестовом сайте, затем включите аналитику/Метрику и только после приёмки активируйте production-показ. Для eCommerce, форм, Композита и Сайты24 обязательно выполните интеграционный тест на реальной установке.

↑ К содержанию

2. Возможности версии 1.1.1

  • Пять форматов: Bubble, Popup, Inline, Stories и Carousel; одновременно на странице может работать несколько независимых экземпляров.
  • Локальные MP4/WebM/MOV/M4V, прямые MP4/WebM URL, HLS, YouTube, Rutube и VK Видео; отдельные preview, poster и mobile-видео.
  • URL include/exclude, wildcard-маски, ограниченные регулярные выражения, расписание, delay, scroll, exit intent, inactivity, pageviews и повторный визит.
  • Frequency cap: каждый раз, раз за сессию, раз в сутки, раз в N дней или никогда после закрытия.
  • Сегментация по авторизации, группам, устройству, новому/вернувшемуся посетителю, referrer, UTM и состоянию корзины.
  • CTA: URL, телефон, WhatsApp, Telegram, CSS-форма/элемент, штатная веб-форма Bitrix, корзина, «Купить сейчас», anchor и JS CustomEvent.
  • eCommerce: товар и количество для виджета или отдельной карточки Stories/Carousel; серверное добавление в корзину и безопасный переход к оформлению заказа.
  • Встроенная статистика, Яндекс.Метрика, DataLayer/GTM, DOM-события и публичный JavaScript API.
  • Стабильное A/B-распределение с весами, периодом теста, основной метрикой и 95% Wilson confidence interval.
  • Полная многосайтовость, поддержка Композита и Сайты24 с отдельным Inline-блоком.
  • Импорт видео из старого bussol.vwidget, сохранение данных при удалении, автоматическое обновление схемы.
  • Security hardening 1.1.1: CSRF/sessid, SSRF-защита webhook, HMAC-подпись, allowlist URL/upload, ReDoS limits и серверная валидация trusted-событий.
ФорматОсновной сценарий
BubbleПлавающий preview, который раскрывается в увеличенное видео.
PopupВидеосообщение поверх страницы по выбранному триггеру.
InlineВидео в конкретном месте шаблона/страницы или как блок Сайты24.
StoriesНабор последовательных вертикальных карточек с индивидуальным CTA/товаром.
CarouselГоризонтальная подборка видеокарточек с индивидуальным CTA/товаром.

↑ К содержанию

3. Системные требования

КомпонентТребование
1С-Битриксmain 26.0.0 или новее. Поддерживается любая редакция, если выполнено требование по версии ядра.
PHPPHP 8.2 или новее. Установщик блокирует более старые версии.
Обязательные модулиТолько main.
Опциональные модулиsale + catalog — корзина/eCommerce; form — веб-формы; landing — Сайты24; iblock — импорт из старого bussol.vwidget.
База данныхMySQL/MariaDB в поддерживаемой установке Битрикс; install SQL поставляется в db/mysql.
БраузерыСовременные Chrome/Edge/Firefox/Safari. Автовоспроизведение подчиняется политикам браузера; обычно preview должен быть muted.
СетьИсходящий HTTPS нужен только для настроенных webhook и внешних видео/HLS; YouTube/Rutube/VK требуют доступ к соответствующим платформам.
КомпозитПоддерживается; персональный runtime-context передаётся через no-store endpoints.
Сайты24Опционально, при установленном landing и выполнении публичной страницы тем же PHP-ядром Bitrix.
Перед установкой

Сделайте резервную копию файлов и базы данных. На production сначала проверьте обновление на копии сайта, особенно если используются sale/catalog/form/landing, Композит, многосайтовость или внешние CSP-ограничения.

↑ К содержанию

4. Установка, обновление и удаление

Чистая установка

  1. Скопируйте каталог bussol.vwidget2 в /bitrix/modules/ либо установите решение штатным механизмом Marketplace.
  2. Откройте «Marketplace → Установленные решения» и установите «Bussol: Видеовиджеты PRO — Bubble, Stories, Carousel, A/B и аналитика».
  3. Установщик создаст таблицы модуля, зарегистрирует обработчики AutoRenderer и меню, агент очистки аналитики, компонент, tools-endpoints, тему и при наличии landing — Inline-блок Сайты24.
  4. Откройте «Bussol → Bussol: Видеовиджеты PRO → Настройки», проверьте авто-рендер, статистику, Метрику, срок хранения, webhooks, URL заказа и HLS.
  5. Перейдите в «Виджеты», создайте неактивный тестовый виджет и проверьте его на целевой странице.

Обновление 1.0.0 / 1.1.0 → 1.1.1

  • Сделайте резервную копию каталога модуля и базы данных.
  • Используйте штатный механизм обновлений Marketplace или замените файлы модуля без удаления таблиц.
  • SchemaService автоматически проверяет схему и добавляет недостающие поля/индексы без удаления существующих виджетов и статистики.
  • После обновления проверьте кеш, Композит, один плавающий формат, Inline, аналитику и используемые интеграции.
  • Версия 1.1.1 повторно валидирует сохранённые URL/CTA/regex при рендере, поэтому старые небезопасные значения не должны попадать в публичный HTML.
Важно

Не удаляйте таблицы модуля при обычном обновлении. Если используется контролируемая переустановка, выбирайте сохранение данных. Любая пересборка релизного архива требует нового security-journal.json.

Удаление

Деинсталлятор удаляет обработчики, агент, компонент, tools-endpoints, тему, административные прокси и блок Сайты24. В диалоге удаления можно сохранить таблицы и накопленные данные. Общая иконка раздела Bussol намеренно сохраняется, поскольку её могут использовать другие модули Bussol.

Миграция из bussol.vwidget

  1. Установите v2 параллельно со старым модулем.
  2. Откройте «Импорт из v1» и выберите сайты.
  3. Импорт переносит название и видео из инфоблока bussol_videowidgets и создаёт новые виджеты неактивными.
  4. Вручную проверьте позиции, URL-условия и CTA: в v1 эти параметры не хранились в инфоблоке.
  5. После теста деактивируйте старые вставки v1 и активируйте v2.

↑ К содержанию

5. Права, настройки и навигация

Права групп

ПравоВозможности
DДоступ запрещён.
RПросмотр списка виджетов и страницы статистики.
WПолный доступ к созданию/редактированию, групповым действиям, импорту из v1 и настройкам модуля.

Путь к интерфейсу: «Bussol → Bussol: Видеовиджеты PRO». Внутри доступны «Виджеты», «Статистика», «Импорт из v1» и «Настройки». Несколько модулей Bussol используют общий корневой раздел global_menu_bussol.

Глобальные настройки модуля

ПараметрПо умолчаниюНазначение
Автоматически подключать плавающие виджетыВключеноAutoRenderer добавляет подходящие Bubble/Popup/Stories/Carousel в публичный HTML.
Встроенная статистикаВключеноРазрешает запись событий в таблицу аналитики.
ID счётчика Яндекс.МетрикипустоСчётчик по умолчанию, если не задан в самом виджете.
Префикс целей Яндекс.Метрикиbussol_vwidget2Префикс для goal-событий.
Хранить сырые события, дней180От 1 до 3650 дней; очистка выполняется агентом раз в сутки.
Разрешить исходящие webhooksВключеноГлобальный предохранитель для отправки webhook.
URL оформления заказа/personal/order/make/Только локальный путь для CTA «Купить сейчас».
URL hls.jsпустоНеобязательный HTTPS URL официальной сборки с cdn.jsdelivr.net или unpkg.com.
Совместимость

Страница настроек показывает фактическую версию PHP/main и наличие sale, catalog, form и landing. Отсутствие опциональных модулей не мешает базовой работе платформы.

↑ К содержанию

6. Создание и параметры видеовиджета

Редактор разделён на семь вкладок: «Основное», «Дизайн», «Показ», «Сегментация», «CTA / eCommerce», «A/B и аналитика», «Stories / Carousel». Это позволяет отделить контент и внешний вид от маркетинговой логики.

ВкладкаЧто настраивается
ОсновноеАктивность, название, сайты, Сайты24, сортировка, формат, источники desktop/mobile, локальные файлы, URL, preview, poster, autoplay/muted/loop.
ДизайнПозиции desktop/mobile, размеры preview/expanded/mobile, отступы, mobile on/off, radius, рамка, progress, shadow, z-index, CSS-класс.
ПоказURL include/exclude/regex, trigger и frequency cap.
СегментацияДаты/дни/время, авторизация, группы, устройство, тип посетителя, referrer, корзина и UTM.
CTA / eCommerceКнопка, действие, значение, товар/количество, новая вкладка, момент появления, цвета, Bitrix Web Form.
A/B и аналитикаA/B группа/вес/период/метрика, Метрика, DataLayer и webhook.
Stories / CarouselСписок карточек со своими источниками, preview/poster, CTA, товаром и количеством.

Базовые значения нового виджета

ПараметрЗначение по умолчанию
ФорматBubble
Preview desktop140 × 248 px
Expanded320 × 568 px
Mobile110 × 196 px
Отступ desktop24 / 24 px
Отступ mobile12 / 12 px
Скругление16 px
ПозицияСправа снизу
Autoplay / muted / loopДа / Да / Да
z-index999999
A/B вес50
Количество товара1
Практика

Для первого запуска оставьте виджет неактивным, настройте страницу через include-mask, проверьте mobile, CTA и статистику; затем активируйте. Для нескольких виджетов на одной странице используйте сортировку и разные условия показа.

↑ К содержанию

7. Форматы и медиаисточники

Источники видео

ИсточникНастройкаОсобенности
Локальный файлUploadВидео: mp4/webm/mov/m4v, до 500 МБ; содержимое проверяется по MIME.
Прямая ссылкаMP4/WebM URLHTTP/HTTPS или безопасный относительный путь для direct; основной источник подключается лениво.
HLSURL .m3u8Native HLS используется где доступен; для остальных браузеров можно подключить доверенный hls.js.
YouTubeURL роликаРендер через iframe/embed.
RutubeURL роликаРендер через iframe/embed.
VK ВидеоURL роликаРендер через iframe/embed.

Для desktop и mobile можно выбирать независимые источники. Локальное mobile-видео может отличаться от desktop. Preview-видео и poster используются для первого контакта и помогают уменьшить ненужную загрузку основного источника.

Поведение проигрывания

  • Autoplay, muted и loop задаются на уровне виджета.
  • Bubble использует preview до раскрытия; после открытия переключается на основной источник.
  • Для локального/direct/HLS-видео рассчитываются video_start, 25%, 50%, 75% и video_complete.
  • Для YouTube/Rutube/VK в 1.1.1 доступны show/open/CTA, но квартильные события 25/50/75/100 не вычисляются без отдельного API провайдера.
Файлы

Poster: jpg/jpeg/png/gif/webp до 20 МБ. Видео: mp4/webm/mov/m4v до 500 МБ. Проверяются расширение, фактический размер и MIME/изображение.

↑ К содержанию

8. Правила показа, триггеры и частота

URL-правила

ПолеПоведение
Показывать только на URLПо одному правилу на строку; поддерживаются точные пути и wildcard * (например /catalog/*).
Исключить URLИсключение имеет приоритет для подходящих страниц.
Регулярные выраженияОтдельные regex; до 20 выражений, до 512 символов каждое; используются PCRE limits для снижения риска ReDoS.

Триггеры

ТриггерЗначение
СразуЗначение не используется.
Через N секундЧисло секунд.
После прокрутки N%Процент страницы.
Exit intentПопытка ухода курсора на desktop.
После N секунд бездействияПериод отсутствия активности.
После N просмотренных страницСчётчик страниц в текущей сессии.
Только при повторном визитеПоказ посетителю, который уже был на сайте.

Frequency cap

РежимСмысл
Каждый разБез ограничения.
Раз за сессиюНе повторять в текущей сессии.
Раз в суткиНе чаще одного раза в день.
Раз в N днейПериод задаётся отдельно.
Не показывать после закрытияПосле явного закрытия больше не показывать этому браузеру.

Frequency и стабильное A/B-распределение используют клиентское хранилище браузера. При очистке storage поведение для такого посетителя начнётся заново.

↑ К содержанию

9. Расписание и сегментация аудитории

Расписание

Можно задать дату начала и окончания, разрешённые дни недели и временной интервал. Условия применяются совместно с URL, сайтом, landing-режимом, trigger, frequency и сегментами.

Сегменты

СегментВарианты / пример
АвторизацияВсе / только авторизованные / только гости.
Группы пользователейМультивыбор групп 1С-Битрикс; пусто — без ограничения.
УстройствоВсе / desktop / mobile-tablet.
ПосетительВсе / новый / вернувшийся.
ReferrerWildcard-маски, например https://yandex.ru/* .
КорзинаНе учитывать / пуста / непуста / сумма не меньше / содержит товар / не содержит товар.
UTMutm_source, utm_medium, utm_campaign; допускаются несколько значений и wildcard-маски.

Авторизация, группы и корзина не помещаются в кешируемый HTML: клиент получает их через отдельный no-store endpoint. Если требуемый динамический контекст недоступен, виджет с таким условием не должен показываться.

Редакции без sale

Если sale недоступен, базовые форматы продолжают работать. Виджет с корзинной сегментацией безопасно не проходит соответствующее условие, а eCommerce CTA завершается cart_error без фатальной ошибки.

↑ К содержанию

10. CTA, eCommerce, формы и webhooks

CTA-действия

ДействиеЗначение / поведение
URLHTTP/HTTPS или безопасный локальный путь; можно открыть в новой вкладке.
ТелефонНомер телефона.
WhatsAppНомер или разрешённая ссылка wa.me / api.whatsapp.com / web.whatsapp.com.
TelegramИмя пользователя или ссылка t.me / telegram.me.
CSS-форма / элементБезопасный CSS-селектор: показать элемент, прокрутить к нему и отправить DOM-событие формы.
Веб-форма 1С-БитриксID формы; форма открывается в same-origin iframe/modal.
Добавить в корзинуТовар и количество берутся из серверной конфигурации виджета/карточки.
Купить сейчасСначала серверно добавить товар, затем перейти на настроенный локальный ORDER_URL.
AnchorПрокрутить к элементу по безопасному селектору.
JS CustomEventИмя события вида A-Z/a-z/0-9/_.:-, до 100 символов.

CTA можно показывать сразу, через N секунд, после N% локального видео либо после окончания. Для Stories/Carousel у каждой карточки может быть собственный label/action/value и собственный товар.

Webhook

Для каждого виджета можно задать публичный HTTPS endpoint и список событий. Разрешённые события: show, open, video_start, video_25, video_50, video_75, video_complete, cta_click, close, cart_add, cart_error, form_open, form_submit. Запрос отправляется JSON POST без редиректов; private/loopback адреса запрещены. Тело до 256 КБ подписывается заголовком X-Bussol-Signature: sha256=<HMAC>.

Trusted-события

cart_add и form_submit записываются/отправляются только после подтверждённой серверной операции. Клиентский tracking endpoint не может самостоятельно подделать эти события.

↑ К содержанию

11. Stories и Carousel

В форматах Stories и Carousel редактор содержит таблицу карточек. Карточки сортируются числовым полем SORT и могут использовать разные источники, CTA и товары в рамках одного виджета.

Поле карточкиНазначение
СортировкаОпределяет порядок карточек.
НазваниеПодпись/идентификатор карточки.
Источникlocal, direct, HLS, YouTube, Rutube или VK.
Видео/URLЛокальный upload либо внешний URL.
PreviewОтдельный preview-файл.
PosterИзображение-обложка.
CTAСобственный label/action.
Значение CTAURL, ID формы, selector, event и т. п.
Товар / количествоСобственный PRODUCT_ID и quantity для add_to_basket / buy_now.

Если собственный CTA карточки отсутствует, клиент может использовать параметры CTA основного виджета. В viewer фиксируется открытие конкретного item_id, что позволяет анализировать взаимодействие с элементами подборки.

Практика

Для товарных Stories используйте отдельный товар на каждой карточке, а общему виджету задайте сегментацию, расписание и UTM-условия. Это позволяет запускать видеоподборки под конкретную рекламную кампанию.

↑ К содержанию

12. Аналитика, Яндекс.Метрика и A/B

События

СобытиеЧто означает
showВиджет показан.
openBubble/Stories/Carousel открыт или карточка открыта.
video_startНачато проигрывание локального/direct/HLS источника либо загружен embed.
video_25 / 50 / 75Достигнута соответствующая доля локального/direct/HLS видео.
video_completeДосмотр локального/direct/HLS видео.
cta_clickПользователь активировал CTA.
cart_add / cart_errorСерверно подтверждённое добавление в корзину / ошибка корзины.
form_open / form_submitОткрытие формы / подтверждённая успешная отправка.
closeВиджет закрыт.

Страница статистики

  • Периоды 7 / 30 / 90 / 180 / 365 дней; фильтры по виджету, устройству и UTM source/medium/campaign.
  • KPI: показы, CTA, досмотры, добавления в корзину, формы и проценты от показов.
  • Воронка: показ → открытие → 50% видео → досмотр → CTA.
  • Таблица событий по каждому виджету с общими и уникальными значениями, CTR и долей досмотра.
  • Динамика по дням: показы, открытия, досмотры, CTA, корзина и формы.

A/B-тесты

Виджеты с одинаковой A/B-группой участвуют в стабильном распределении браузера; вес варианта задаётся от 1 до 100. Можно ограничить период теста и выбрать основную метрику: cta_click, cart_add, form_submit, video_complete или open. В статистике конверсия считается по уникальным посетителям и выводится 95% Wilson confidence interval. Модуль не объявляет автоматического «победителя».

Яндекс.Метрика и DataLayer

Метрика использует ID счётчика/префикс виджета либо глобальные значения. DataLayer отправляет события вида bussol_vwidget2_* с widgetId, itemId, productId, A/B-группой, форматом, устройством и UTM.

Приватность

URL аналитики сохраняются без query-string и fragment; visitor/session идентификаторы хешируются на сервере; IP-адрес модуль не сохраняет. Срок хранения сырых событий регулируется глобальной настройкой.

↑ К содержанию

13. Многосайтовость, Композит и Сайты24

Многосайтовость

  • Один виджет может быть привязан сразу к нескольким SITE_ID.
  • Связи хранятся в отдельной таблице b_bussol_vwidget2_widget_site; SITE_ID остаётся совместимым основным сайтом.
  • Копирование виджета переносит site/landing bindings.
  • Список виджетов показывает назначенные сайты и позволяет фильтровать по SITE_ID.

Композит

  • Компонент работает в frame mode.
  • AutoRenderer не вставляет виджеты в обычные AJAX и composite AJAX-ответы.
  • После изменения конфигурации очищаются обычный кеш и Static HTML cache.
  • Авторизация, группы, корзина и sessid запрашиваются динамически через no-store endpoint, а не сохраняются в общем HTML-кеше.

Сайты24

РежимПоведение
Все обычные страницы и Сайты24Без ограничения по конкретному landing-сайту.
Только выбранные Сайты24Показ только на отмеченных landing-site ID.
Все, кроме выбранных Сайты24Исключить выбранные лендинги.
Только обычные страницыНе показывать на Сайты24.

Модуль устанавливает отдельный Inline-блок «Bussol: Видеовиджеты PRO … — Inline». В визуальном редакторе Inline-блок может игнорировать публичные URL-правила для удобства настройки, а плавающие форматы не перекрывают интерфейс редактора. На опубликованной странице правила применяются штатно.

Ограничение Сайты24

Автоматическая интеграция рассчитана на локальную/коробочную страницу, которая исполняется тем же PHP-ядром Битрикс и видит установленный модуль. Внешне размещённая статическая страница без этого ядра не может автоматически выполнить модуль.

↑ К содержанию

14. Расширение разработчиком

Компонент

<?php
$APPLICATION->IncludeComponent(
    'bussol:video.widget2',
    '',
    [
        'AUTO' => 'N',
        'WIDGET_ID' => 12,
        'SITE_ID' => SITE_ID,
        'CACHE_TYPE' => 'N',
    ]
);
?>
ПараметрСмысл
AUTOY — автоматический режим для всех подходящих плавающих виджетов.
INLINE_ONLYY — выводить только Inline.
WIDGET_IDID конкретного виджета; 0 — все подходящие.
SITE_IDSITE_ID; пусто — текущий SITE_ID.
LANDING_SITE_IDID сайта Сайты24; 0 — определить автоматически.
IGNORE_PAGE_RULESСлужебный режим редактора Сайты24.
CACHE_TIMEПо умолчанию 3600.

JavaScript API

BussolVWidget2.show(12);
BussolVWidget2.hide(12);
BussolVWidget2.open(12);
BussolVWidget2.play(12);
BussolVWidget2.pause(12);
const widget = BussolVWidget2.get(12);
const all = BussolVWidget2.all();

DOM-события

document.addEventListener('bussol:vwidget2:event', (e) => {
    console.log(e.detail.event, e.detail.widgetId, e.detail.itemId);
});

document.addEventListener('myLeadEvent', (e) => {
    console.log(e.detail.widgetId, e.detail.itemId);
});

Каждое событие движка публикуется как bussol:vwidget2:event. CTA типа JS CustomEvent публикует событие с заданным именем. eCommerce также использует bussol:vwidget2:cart и bussol:vwidget2:cart-error.

DataLayer

// Пример структуры события
{
  event: 'bussol_vwidget2_cta_click',
  bussol_vwidget2: {
    widgetId: 12,
    itemId: 0,
    productId: 123,
    abGroup: 'hero-test',
    format: 'bubble',
    device: 'desktop',
    utmSource: 'yandex',
    utmMedium: 'cpc',
    utmCampaign: 'summer'
  }
}

↑ К содержанию

15. Хранение данных и структура модуля

ТаблицаНазначение
b_bussol_vwidget2_widget83 поля конфигурации виджета, включая формат, дизайн, правила, сегменты, CTA, eCommerce, A/B и интеграции.
b_bussol_vwidget2_widget_siteСвязи виджетов с SITE_ID.
b_bussol_vwidget2_widget_landingСвязи виджетов с конкретными сайтами Сайты24.
b_bussol_vwidget2_itemКарточки Stories/Carousel.
b_bussol_vwidget2_eventСырые аналитические события.
Каталог / файлНазначение
/bitrix/components/bussol/video.widget2/Публичный компонент и шаблон.
/bitrix/tools/bussol_vwidget2_*.phpTracking, context, cart и form endpoints.
/bitrix/blocks/bussol/bussol-vwidget2-inline/Inline-блок Сайты24.
/bitrix/themes/.default/bussol.vwidget2.cssСтили административной иконки/меню.
/upload/bussol_vwidget2/Файлы, сохранённые через CFile::SaveFile.

Сырые события очищаются агентом CleanupService::run() один раз в сутки. Период хранения задаётся глобально от 1 до 3650 дней; значение по умолчанию — 180.

Удаление данных

При деинсталляции с сохранением данных таблицы остаются. Без сохранения выполняется uninstall.sql. Перед необратимым удалением сделайте резервную копию.

↑ К содержанию

16. Безопасность

Версия 1.1.1 прошла pre-submission hardening перед публикацией в Bitrix Marketplace. Финальный security-journal.json привязан к релизному архиву по SHA-256.

КонтрольРеализация
CSRF / sessidState-changing endpoints, массовые административные действия и удаление модуля требуют Bitrix sessid.
Same-originПубличные POST-запросы дополнительно проверяют origin там, где это применимо.
Webhook / SSRFТолько публичный HTTPS, private/loopback/link-local запрещены, redirect=false, лимиты времени/тела, HMAC SHA-256 подпись.
CTA / URLОпасные схемы javascript:/data: и credentials в URL не допускаются; buy-now redirect только локальный.
HLS loaderhls.js разрешён только с HTTPS cdn.jsdelivr.net или unpkg.com и официальных путей пакета.
UploadsВидео: mp4/webm/mov/m4v ≤ 500 МБ; изображения jpg/jpeg/png/gif/webp ≤ 20 МБ; проверяются is_uploaded_file, размер, расширение и MIME/содержимое.
Regex / ReDoSДо 20 regex, до 512 символов; применяются PCRE match/depth limits.
Trusted eventscart_add/form_submit создаются только после успешной серверной операции; клиентская телеметрия не может их подделать.
ОшибкиStorefront endpoints не возвращают пользователю внутренние exception-сообщения.
Сохранённые данныеПри рендере выполняется повторная серверная валидация ранее сохранённых значений.
Security journal

Версия 1.1.1; SHA-256 релизного ZIP: cdeab5062813d6360d0179d196bf21828ca26bbed4d313481584c0301b7052d2. Журнал должен формироваться после последнего изменения кода и относиться именно к отправляемому архиву.

↑ К содержанию

17. Ограничения и совместимость

  • Поддерживается PHP 8.2+ и main 26.0.0+; обязательный модуль только main. Возможности sale/catalog/form/landing отключаются или gracefully fall back при отсутствии соответствующего модуля.
  • Для YouTube/Rutube/VK квартильные события 25/50/75/100 в 1.1.1 не вычисляются без API соответствующего видеопровайдера.
  • HLS зависит от поддержки браузера либо от корректно настроенной доверенной сборки hls.js; CSP сайта должна разрешать нужные источники.
  • Autoplay со звуком ограничивается политиками браузера; для надёжного preview рекомендуется muted.
  • Корзинные действия требуют sale + catalog и должны быть проверены на реальных товарах/SKU используемой редакции.
  • Веб-форма требует модуль form и доступ текущего пользователя к форме.
  • Сайты24 требуют модуль landing и публичное исполнение страницы тем же ядром Bitrix.
  • Архитектурная совместимость с любой редакцией реализована через отсутствие обязательных зависимостей, кроме main, но перед Marketplace требуется интеграционный прогон на конкретных редакциях/лицензиях.
  • Статистика использует серверное время и MySQL DATE_SUB/NOW(); убедитесь, что timezone сайта/БД настроены ожидаемо.
Перед production

Проверьте минимум базовую редакцию без sale/catalog/form/landing и редакцию с интернет-магазином; отдельно протестируйте Композит, несколько SITE_ID, Сайты24, mobile browsers, внешние video providers, Яндекс.Метрику, DataLayer и webhook.

↑ К содержанию

18. Диагностика и чек-лист приёмки

Диагностика

СимптомЧто проверить
Виджет не появляетсяACTIVE, SITE_ID bindings, LANDING_MODE, URL include/exclude/regex, даты/время, trigger, frequency, сегменты и A/B-период.
На Композите неверная аудиторияДоступность bussol_vwidget2_context.php, Cache-Control: no-store, отсутствие блокировки same-origin/CSP.
Не добавляется товарНаличие sale/catalog, корректный PRODUCT_ID/SKU, sessid, права/наличие товара и ответ bussol_vwidget2_cart.php.
Не открывается Web FormНаличие form, правильный ID, привязка к активному виджету и доступ текущего пользователя.
Не воспроизводится внешнее видеоТип источника, URL, CSP, iframe permissions, сеть; для HLS — native HLS или HLS_JS_URL.
Нет аналитикиTRACKING_ENABLED, endpoint track, sessid/origin, срок хранения, фильтр периода и отсутствие блокировки JS.
Не приходят webhooksWEBHOOKS_ENABLED, публичный HTTPS URL, отсутствие private IP/redirect, 2xx ответ endpoint и проверка X-Bussol-Signature.
Сайты24 не видит блокНаличие landing, установленный блок, очищенный repository cache, правильный landing site binding.

Чек-лист приёмки

  • Установка на PHP 8.2+ / Bitrix main 26+ проходит без ошибок.
  • Базовая редакция без sale/catalog/form/landing показывает Bubble/Popup/Inline/Stories/Carousel без fatal error.
  • Редакция интернет-магазина успешно добавляет простой товар и SKU в корзину и выполняет «Купить сейчас».
  • Web Form открывается и form_submit фиксируется только после успешной отправки.
  • Проверены SITE_ID s1/s2, landing bindings, редактор/preview/публикация Сайты24.
  • Композит включён: статический HTML не переносит авторизацию/корзину между пользователями.
  • Проверены URL-маски, regex, schedule, все используемые triggers и frequency cap.
  • Проверены desktop/mobile размеры, Safari/iOS и Chrome/Android autoplay policies.
  • Проверены локальные видео, HLS и реально используемые YouTube/Rutube/VK URL при CSP проекта.
  • Яндекс.Метрика, DataLayer/GTM и webhook получают ожидаемые события.
  • A/B-варианты распределяются стабильно; в статистике отображаются уникальные показы, конверсии и 95% ДИ.
  • Агент очистки зарегистрирован, retention соответствует политике проекта.
  • Перед релизом сформирован security-journal.json после последнего изменения кода; SHA-256 журнала совпадает с отправляемым ZIP.
Готовность релиза

После прохождения чек-листа сохраните резервную копию, зафиксируйте версию и SHA-256, приложите security-journal.json и только затем отправляйте текущую сборку на модерацию Marketplace.

↑ К содержанию