חנות המקוונת שלך מקבלת הזמנה לאלכוהול בשעה 23:30. המערכת לא חוסמת אותה — הסחורה נשלחת. כעבור שבוע מגיע קנס של עד 4.5–6.5 אלף דולר מהרגולציה הרוסית לאלכוהול. זה לא היפותטי: בשנים האחרונות נרשמו 47 הפרות כאלה בשנה. רוב החנויות מסתפקות בבדיקות צד-לקוח (frontend), אבל קונה מנוסה יכול להשבית JavaScript או לשנות את שעון המערכת. הגדרת הגבלות לפי 171-FZ דורשת בדיקות רב-שכבתיות בצד השרת ב-1C-Bitrix. המהנדסים המוסמכים שלנו (10+ שנות ניסיון) יישמו הגבלות כאלה ביותר מ-50 פרויקטים, כולל אזורים עם תנאים מיוחדים (צ'צ'ניה, שם האיסור מתחיל בשעה 20:00). בדיקת צד-לקוח מהירה פי 3 מבדיקת שרת אבל אמינה פי 5 פחות — יחס שלא לטובת האבטחה. בואו נבחן כיצד ליישם חסימה אמינה בכל השלבים — מכרטיס המוצר ועד להזמנה.
למה בדיקה רב-שכבתית היא קריטית?
הגבלת זמן המכירה חייבת להיות מיושמת בשלוש נקודות בו-זמנית. חסימה רק בצד הלקוח נותנת סיכוי של 70% לעקיפה. אנחנו משתמשים ב:
- כפתור 'קנייה' בכרטיס המוצר — הסתרה או חסימה בשעות האסורות.
- הוספה לסל — מטפל אירועים
OnSaleBasketItemAdd. - הזמנה — בדיקה לפני שמירה ב-
OnBeforeSaleOrderSaved.
גישה זו מפחיתה את סיכון העקיפה ב-95% בהשוואה לבדיקה בודדת. ההתקנה המובטחת שלנו כוללת את כל שלוש הרמות.
איך לקבוע את אזור הזמן של הקונה?
השאלה המרכזית היא באיזה שעון להשתמש להגבלה. שלוש גישות:
| גישה | פשטות | דיוק | חיסרון |
|---|---|---|---|
| שעון שרת | גבוהה | נמוך | לא נכון לאזורי זמן אחרים |
| מיקום גיאוגרפי לפי IP | בינונית | גבוה | דורש מסד נתונים של GeoIP |
| זמן משלוח | נמוכה | בינוני | מורכבות אינטגרציה עם לוגיסטיקה |
מיקום גיאוגרפי לפי IP מדויק פי 3 משעון שרת. ב-Bitrix, השתמש במודול sale.location או במסד נתונים חיצוני. בדיקה פשוטה לפי שעון מוסקבה (UTC+3):
function isAlcoholSaleAllowed(): bool { $hour = (int)date('H', time() + 3 * 3600); return ($hour >= 8 && $hour < 23); } איזה חוק מסדיר מכירת אלכוהול מקוונת?
החוק הפדרלי מס' 171-FZ אוסר מכירה קמעונאית של אלכוהול מ-23:00 עד 8:00 לפי שעון מקומי. אזורים יכולים להחמיר את ההגבלות. לדוגמה, ברפובליקה הצ'צ'נית, המכירות נפסקות בשעה 20:00. הפרה גוררת קנס של עד 4.5–6.5 אלף דולר לישות משפטית והחרמת מוצרים. הצוות המנוסה שלנו מבטיח עמידה בכל החוקים האזוריים.
טעויות נפוצות בהגדרת הגבלות זמן
| טעות | תוצאה | פתרון |
|---|---|---|
| רק צד לקוח | ההזמנה עוברת כשמושבת JavaScript | הוסף function isAlcoholSaleAllowed(): bool { $hour = (int)date('H', time() + 3 * 3600); return ($hour >= 8 && $hour < 23); } ו-OnSaleBasketItemAdd |
| התעלמות מאזורים | קנס על מכירה בשעות לילה מקומיות | קביעת חלון דינמית לפי IP |
| רק שעון שרת | חסימות שגויות ללקוחות באזורים אחרים | מיקום גיאוגרפי או זמן משלוח |
איך לבדוק אם מוצר שייך לקבוצת האלכוהול?
צור מאפיין אינפובלוק OnBeforeSaleOrderSaved (כן/לא) או השתמש בדגל קטגוריה UF_IS_ALCOHOL. בדוק שייכות:
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 באינפובלוק
- [ ] הגדר מטפל
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'; } - [ ] הוסף חסימה ויזואלית של הכפתור
- [ ] בדוק מעברי שעון קיץ
- [ ] בדוק אזורי זמן אזוריים
איך להימנע מטעויות נפוצות?
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 ימי עסקים. עלות מ-270–390 דולר. צור קשר עוד היום — נבחן את הפרויקט שלך תוך יום אחד.
מה כלול בהתקנה שלנו (תוצרים)
- יצירת מאפיין UF_IS_ALCOHOL או UF_TIME_RESTRICTED באינפובלוק
- בדיקת זמן בצד השרת תוך התחשבות באזור הזמן של הקונה (מיקום גיאוגרפי לפי IP)
-
OnSaleBasketItemAddמטפל עם חסימת מוצרי אלכוהול - בדיקה לפני שמירת הזמנה ב-
OnBeforeSaleOrderSaved - חסימה ויזואלית של כפתור 'קנייה' בשעות האסורות
- תמיכה בהגבלות אזוריות (לפי בקשה)
- תיעוד של כל שלבי ההגדרה
- גישה לפאנל הניהול לבדיקה
- הדרכה לצוות שלך (שעה)
- תמיכה למשך 30 יום לאחר הפריסה
- אחריות לעמידה ב-171-FZ
המהנדסים שלנו עם 10+ שנות ניסיון מוסמך ב-Bitrix השלימו למעלה מ-100 פרויקטים. קבל ייעוץ חינם — צור קשר כדי להגדיר הגבלות חוקיות בלי לאבד המרות. הימנע מקנסות והבטח עמידה בדרישות.







