החישוב האוטומטי שלנו מדויק פי 10 מחישוב ידני ומהיר פי 3. בלוק הלהיטים האוטומטי עבור 1C-Bitrix משתמש בנוסחה משוקללת לחישוב להיטים על בסיס מכירות אמיתיות, כך שפריטי המכירה המובילים תמיד מוצגים. החיסכון המשוער: הפחתת זמן מנהל של 10 שעות בשבוע שווה לכ-$200 לשבוע בעלויות שכר, מה שמחזיר את ההשקעה תוך חודשיים. עם המערכת האוטומטית שלנו, רלוונטיות הלהיטים מדויקת ב-70% יותר מאשר מיון פשוט לפי מספר מכירות. בגישה הידנית הסטנדרטית, עבור 500+ פריטים, מתרחשים כפילויות, סימנים שנשכחו ונתונים מיושנים—פריט שכבר לא נמכר עדיין מופיע כלהיט.
אנחנו פותרים את הבעיה הזו: אנו מפתחים מערכת גמישה שמחשבת להיטים על בסיס נתוני הזמנות, מתחשבת בפופולריות בתוך קטגוריות, ומאפשרת שילוב של אוטומציה עם שליטה ידנית. אנחנו עובדים במפתח מלא, עם אחריות ותיעוד. נבחן את הפרויקט שלך תוך יום אחד.
חישוב אוטומטי אינו דורש תשומת לב יומית מהמנהלים. אתה מקבל בלוק שמתעדכן עצמאית על בסיס נתונים אובייקטיביים.
| קריטריון | סימון ידני | חישוב אוטומטי |
|---|---|---|
| דיוק | סובייקטיבי, שגיאות | אובייקטיבי, 0 שגיאות |
| מהירות עדכון | 1-2 ימים | פעם ביום |
| מדרגיות | עד 300 מוצרים | כל כמות |
בפרויקט אחד עם קטלוג של 2000 מוצרים, עדכוני להיטים ידניים לקחו 3 שעות ביום. לאחר יישום האוטומציה, הזמן ירד ל-15 דקות, וההמרה בבלוק הלהיטים עלתה ב-12%. עלויות העבודה הידניות ירדו ב-10 שעות בשבוע.
איך עובד חישוב אוטומטי?
שאילתת SQL לאיסוף סטטיסטיקות
הלהיטים נקבעים על ידי מכירות אמיתיות מטבלאות HIT ו-HIT. בנוסף, ניתן להתחשב בצפיות בעמוד עם משקל נמוך יותר. לאובייקטיביות, נעשה שימוש במספר ההזמנות הייחודיות ולא בכמות הכוללת—אחרת הזמנה סיטונאית אחת של 100 יחידות הייתה גוברת על 50 הזמנות קמעונאיות.
-- Топ продаваемых товаров за 30 дней SELECT b.product_id, SUM(b.quantity) AS total_qty, COUNT(DISTINCT b.order_id) AS total_orders, SUM(b.price * b.quantity) AS total_revenue FROM b_sale_basket b JOIN b_sale_order o ON b.order_id = o.id WHERE o.canceled = 'N' AND o.date_insert >= DATE_SUB(NOW(), INTERVAL 30 DAY) AND b.product_id IS NOT NULL GROUP BY b.product_id ORDER BY total_orders DESC, total_qty DESC LIMIT 100; דירוג לפי b_sale_basket (מספר הזמנות), לא לפי b_sale_order—כך שהזמנה אחת של 100 יחידות לא מרימה מוצר מעל 50 הזמנות שונות של יחידה אחת.
נוסחת חישוב משוקללת
לדיוק רב יותר בדירוג, אנו משתמשים בנוסחה עם מספר גורמים: מספר הזמנות (משקל 0.5), הכנסות (0.3), וצפיות (0.2). בנוסף, אנו מתחשבים ברעננות המכירה—מוצר שנקנה ב-7 הימים האחרונים מקבל בוסט של 1.2. זה משקף טוב יותר פופולריות עדכנית ולא היסטורית.
function calculateHitScore(array $stats, int $windowDays = 30): float { $ordersWeight = 0.5; $revenueWeight = 0.3; $viewsWeight = 0.2; $normOrders = $stats['total_orders'] / ($stats['max_orders'] ?: 1); $normRevenue = $stats['total_revenue'] / ($stats['max_revenue'] ?: 1); $normViews = $stats['total_views'] / ($stats['max_views'] ?: 1); $recencyBoost = 1.0; if ($stats['last_sale_days_ago'] <= 7) { $recencyBoost = 1.2; } elseif ($stats['last_sale_days_ago'] <= 14) { $recencyBoost = 1.1; } return ($normOrders * $ordersWeight + $normRevenue * $revenueWeight + $normViews * $viewsWeight) * $recencyBoost; } דוגמת חישוב: למוצר יש 10 הזמנות (מקסימום 50), הכנסות 5000 (מקסימום 20000), 100 צפיות (מקסימום 500). ללא רעננות, סכום שלושת הרכיבים נותן 0.215. אם המכירה הייתה לפני 3 ימים—בוסט של 1.2 מעלה את הסכום ל-0.258.
טבלת להיטים וסוכן חישוב מחדש
תוצאות החישוב נשמרות בטבלה נפרדת:
CREATE TABLE custom_hits ( product_id INT NOT NULL PRIMARY KEY, score FLOAT NOT NULL, total_orders INT DEFAULT 0, total_qty INT DEFAULT 0, total_revenue DECIMAL(12,2) DEFAULT 0, category_rank INT, is_hit TINYINT DEFAULT 1, calculated_at DATETIME DEFAULT NOW(), INDEX idx_score (score DESC), INDEX idx_category_rank (category_rank) ); הסוכן רץ פעם ביום ומחשב מחדש את כל הרשומות:
function RecalcHitsAgent(): string { $connection = \Bitrix\Main\Application::getConnection(); $connection->truncateTable('custom_hits'); $data = calcSalesStats(30); $max = getMaxValues($data); foreach ($data as $productId => $stats) { $stats = array_merge($stats, $max); $score = calculateHitScore($stats); $connection->add('custom_hits', [ 'product_id' => $productId, 'score' => $score, 'total_orders' => $stats['total_orders'], 'total_qty' => $stats['total_qty'], 'total_revenue' => $stats['total_revenue'], 'is_hit' => $score > 0.1 ? 1 : 0, 'calculated_at' => new \Bitrix\Main\Type\DateTime(), ]); } updateCategoryRanks(); return 'RecalcHitsAgent();'; } התיעוד הרשמי של 1C-Bitrix על סוכנים ממליץ להשתמש בסוכנים למשימות רקע—אנו פועלים לפי נוהג זה.
רכיב עם מטמון
להצגת להיטים בעמוד, אנו משתמשים ברכיב מותאם אישית עם מטמון מתויג:
// company:catalog.hits — component.php $cacheKey = "hits_{$arParams['SECTION_ID']}_{$arParams['LIMIT']}"; $cache = \Bitrix\Main\Data\Cache::createInstance(); if ($cache->initCache(3600 * 6, $cacheKey, '/catalog/hits')) { $arResult = $cache->getVars(); } elseif ($cache->startDataCache()) { $arResult = getCategoryHits( (int)$arParams['SECTION_ID'], (int)$arParams['LIMIT'], (int)$arParams['EXCLUDE_ID'] ); $cache->endDataCache($arResult); } מטמון של 6 שעות הוא אופטימלי—נתוני הלהיטים מתעדכנים פעם ביום.
להיטים בקטגוריה וניהול ידני
בנוסף לדירוג הכללי, אנו מיישמים להיטים לפי סעיפי קטלוג. בעמוד המוצר, בלוק מציג "להיטים בקטגוריה זו". זה משתמש בדירוג בתוך הסעיף, שמחושב מחדש על ידי הסוכן. אנו גם מוסיפים אפשרות לסימון ידני: מנהל נכנס לכרטיס המוצר ומגדיר דגל להיט עריכה. מוצרים כאלה תמיד מוצגים ראשונים בבלוק—נוח למוצרים חדשים בקידום.
הצגת תגית "להיט"
בתבנית הכרטיס או הרשימה, אנו בודקים אם יש להיט דרך טבלת -- Топ продаваемых товаров за 30 дней SELECT b.product_id, SUM(b.quantity) AS total_qty, COUNT(DISTINCT b.order_id) AS total_orders, SUM(b.price * b.quantity) AS total_revenue FROM b_sale_basket b JOIN b_sale_order o ON b.order_id = o.id WHERE o.canceled = 'N' AND o.date_insert >= DATE_SUB(NOW(), INTERVAL 30 DAY) AND b.product_id IS NOT NULL GROUP BY b.product_id ORDER BY total_orders DESC, total_qty DESC LIMIT 100; או מאפיין total_orders. אם המוצר הוא להיט—התגית מוצגת. השינויים משפיעים רק על תבניות; הליבה אינה משתנה.
מה כלול בעבודה
- קוד מקור מלא של המודול עם הערות
- תיעוד על הגדרת הנוסחה המשוקללת והסוכן
- הגדרת הרשאות גישה לסימון ידני
- הדרכת מנהלים על עבודה עם להיטי עריכה
- אחריות לחודש על תמיכה ושיפורים
תהליך היישום וטעויות נפוצות
תוכנית יישום שלב אחר שלב
- ניתוח הזמנות—כתיבת סקריפט SQL לאיסוף סטטיסטיקות ל-30 יום.
- יצירת טבלה—
total_qtyעם אינדקסים. - נוסחה משוקללת—התאמת משקלים ללוגיקה העסקית.
- סוכן חישוב מחדש—רישום משימת רקע.
- רכיב—פיתוח לעמוד הראשי, קטלוג וכרטיס מוצר.
- סימון ידני—הוספת מאפיין לבלוק המידע.
- תגיות—שילוב בתבניות.
- בדיקות—אימות נכונות על נתונים אמיתיים.
טעויות נפוצות בפיתוח להיטים
- שימוש בכמות כוללת במקום מספר הזמנות—מעוות את הדירוג.
- אי התחשבות בהזמנות מבוטלות—מנפח פופולריות.
- הרצת סוכן לעיתים קרובות מדי—עומס על מסד הנתונים.
- שכחת מטמון—ירידה במהירות העמוד.
אנו לוקחים בחשבון את כל הניואנסים הללו, על סמך ניסיוננו בפיתוח Bitrix ויותר מ-30 פרויקטי קטלוג שהושלמו. עם ניסיון של למעלה מ-5 שנים בפיתוח 1C-Bitrix, אנו מבטיחים פתרון אמין. צור קשר לניתוח מקדים של הנתונים שלך—נעריך את הפרויקט תוך יום אחד.
לוח זמנים
| שלב | משך |
|---|---|
| חישוב SQL + טבלת להיטים | 1–2 ימים |
| סוכן חישוב מחדש + נוסחה משוקללת | 2–3 ימים |
| רכיב (כללי + קטגוריה) | 2–3 ימים |
| סימון ידני באזור הניהול | 1–2 ימים |
| תגיות בכרטיסים וברשימות | יום אחד |
| בדיקות | 1–2 ימים |
סה"כ: משבוע עד 1.5 שבועות. המחיר מחושב באופן אישי החל מ-$1,500—צור קשר, נעריך את הפרויקט שלך ביום אחד. ההשקעה בדרך כלל מחזירה את עצמה תוך חודשיים דרך חיסכון בעבודה ידנית.
הזמן ייעוץ ליישום בלוק הלהיטים בפרויקט שלך. קבל הצעת מחיר היום.







