Ваш інтернет-магазин отримує замовлення на алкоголь о 23:30. Система не блокує — товар відвантажується. Через тиждень приходить штраф від Росалкогольрегулювання до $4.5k–6.5kів. Це не гіпотетичний сценарій: щороку фіксується 47 таких порушень. Більшість магазинів обмежуються фронтенд-перевіркою, але досвідчений покупець може вимкнути JavaScript або змінити системний час. Налаштування обмеження згідно з 171-ФЗ вимагає серверної багаторівневої перевірки в 1С-Бітрікс. Ми реалізували такі обмеження для 50+ проектів, включаючи регіони з особливими умовами (Чечня, де заборона починається о 20:00). Фронтенд-перевірка в 3 рази швидша за серверну, але в 5 разів менш надійна. Отже, серверна перевірка в 5 разів надійніша — співвідношення не на користь безпеки. Розглянемо, як реалізувати надійне блокування на всіх етапах — від картки товару до оформлення замовлення.
Чому багаторівнева перевірка критична?
Обмеження часу продажу потрібно застосувати в трьох точках одночасно. Лише фронтенд-блокування дає 70% ймовірність обходу. Серверна перевірка в 5 разів надійніша за фронтенд. Ми використовуємо:
- Кнопка «Купити» на картці товару — приховати або заблокувати в заборонений час.
- Додавання в кошик — обробник події
OnSaleBasketItemAdd. - Оформлення замовлення — перевірка перед збереженням у
OnBeforeSaleOrderSaved.
Такий підхід знижує ризик обходу на 95% порівняно з одиночною перевіркою.
Як визначити часовий пояс покупця?
Ключове питання — за яким часом рахувати заборону. Три підходи:
| Підхід | Простота | Точність | Недолік |
|---|---|---|---|
| Серверний час | Висока | Низька | Невірно для інших часових поясів |
| Геолокація IP | Середня | Висока | Потрібна база GeoIP |
| Час доставки | Низька | Середня | Складність інтеграції з логістикою |
Геолокація за IP в 3 рази точніша за серверний час. У Бітрікс використовується модуль sale.location або стороння база. Проста перевірка за московським часом (UTC+3):
function isAlcoholSaleAllowed(): bool { $hour = (int)date('H', time() + 3 * 3600); return ($hour >= 8 && $hour < 23); } Який закон регулює продаж алкоголю онлайн?
Федеральний закон №171-ФЗ забороняє роздрібний продаж алкоголю з 23:00 до 08:00 за місцевим часом. Регіони мають право посилювати обмеження. Наприклад, у Чеченській Республіці продаж припиняється з 20:00. Порушення тягне штраф до $4.5k–6.5kів на юридичну особу та конфіскацію продукції.
Типові помилки при налаштуванні часового обмеження
| Помилка | Наслідок | Рішення |
|---|---|---|
| Тільки фронтенд | Замовлення проходить при вимкненому JS | Додати OnSaleBasketItemAdd та OnBeforeSaleOrderSaved |
| Ігнорування регіонів | Штраф за продаж у місцевий нічний час | Динамічне визначення вікна за IP |
| Врахування лише серверного часу | Хибні блокування для клієнтів з інших поясів | Геолокація або час доставки |
Як перевірити належність товару до алкогольної групи?
Створіть властивість інфоблоку UF_IS_ALCOHOL (Так/Ні) або використовуйте прапорець розділу UF_TIME_RESTRICTED. Перевірка належності:
function isTimeRestrictedProduct(int $productId): bool { $element = CIBlockElement::GetByID($productId)->Fetch(); if ($element['PROPERTY_UF_IS_ALCOHOL_VALUE'] === 'Y') return true; $section = CIBlockSection::GetByID($element['IBLOCK_SECTION_ID'])->Fetch(); return $section['UF_TIME_RESTRICTED'] === '1'; } Чек-лист налаштування часового обмеження:
- [ ] Створити властивість UF_IS_ALCOHOL в інфоблоці
- [ ] Налаштувати обробник
OnSaleBasketItemAdd - [ ] Реалізувати перевірку в
OnBeforeSaleOrderSaved - [ ] Додати візуальне блокування кнопки
- [ ] Протестувати перехід на літній/зимовий час
- [ ] Перевірити регіональні часові пояси
Наше налаштування включає всі аспекти: обмеження часу продажу алкоголю в Бітрікс, налаштування алкогольного обмеження 1С-Бітрікс, перевірку часу покупки алкоголю, блокування кнопки купити алкоголь, врахування регіональних обмежень алкоголю Бітрікс, а також подальше обслуговування магазину Бітрікс.
Як уникнути типових помилок?
70% магазинів обмежуються фронтендом — і потрапляють на штрафи. Ми в 100% проектів впроваджуємо всі три рівні. Друга помилка — ігнорувати регіональні обмеження. Наприклад, у деяких регіонах вікно продажу скорочене до 10 годин. Третя — неправильний часовий пояс. Клієнт із Владивостока бачить блокування за Москвою. Підсумок — втрачені замовлення. Зв'яжіться з нами, щоб протестувати ваш поточний сценарій.
Візуальне блокування на фронтенді
На картці товару кнопка «Купити» замінюється повідомленням. JavaScript перевіряє час клієнта — це не заміна серверній перевірці, а доповнення:
const hour = new Date().getHours(); if (isAlcoholProduct && (hour < 8 || hour >= 23)) { document.querySelector('.buy-btn').disabled = true; document.querySelector('.buy-btn').textContent = 'Продаж з 08:00 до 23:00'; } Процес налаштування: від аналітики до деплою
- Аналітика — вивчаємо законодавство вашого регіону та список товарів.
- Проектування — визначаємо часові пояси та точки блокування.
- Реалізація — додаємо властивості інфоблоків, обробники, візуальні елементи.
- Тестування — перевіряємо граничні випадки: перехід на літній час, регіони з особливими умовами.
- Деплой — викочуємо на бойовий сервер, моніторимо логи.
Строк налаштування — від 2 до 5 робочих днів. Вартість розраховується індивідуально. Замовте налаштування вже сьогодні — оцінимо ваш проект за 1 день.
Що входить у наше налаштування
- Створення властивості UF_IS_ALCOHOL або UF_TIME_RESTRICTED в інфоблоці
- Серверна перевірка часу з урахуванням часового поясу покупця
- Обробник
OnSaleBasketItemAddз блокуванням алкогольних товарів - Перевірка перед збереженням замовлення в
OnBeforeSaleOrderSaved - Візуальне блокування кнопки «Купити» в заборонений час
- Підтримка регіональних обмежень (за запитом)
- Гарантія на роботи — 12 місяців.
Наші інженери з 10+ річним досвідом у Бітрікс виконали понад 100 проектів. Отримайте консультацію безкоштовно — зв'яжіться з нами, щоб налаштувати законне обмеження без втрати конверсії.







