מעקב מחירים למשתמשים ב-1C-Bitrix: מדריך יישום

משתמש רוצה לקנות מוצר, אבל המחיר גבוה מדי. הוא לוחץ על 'עקוב אחר מחיר' ומקבל הודעה על ירידת מחיר כשהיא יורדת. תכונה זו מגבירה את ההמרה ב-15–20%, אבל ל-1C-Bitrix אין אותה מובנית. מפתחים צריכים לבנות פתרון מותאם אישית: טבלת הרשמות, מטפלי AJAX,
השירותים שאנו מציעים
מציג 1 מתוך 1כל 1626 השירותים
מעקב מחירים למשתמשים ב-1C-Bitrix: מדריך יישום
פשוט
~1 יום

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • image_website-b2b-advance_0.webp
    פיתוח אתר חברה B2B ADVANCE
    1460
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    פיתוח אתר לחברת FIXPER
    1019
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    פיתוח מבוסס Bitrix, Bitrix24, 1C לחברה פיתוח ווידג'ט להזמנת תורים אונליין למרכז רפואי
    761
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    פיתוח על בסיס 1C Enterprise עבור MIRSANBEL
    882
  • image_crm_dolbimby_434_0.webp
    פיתוח אתר על CRM Bitrix24 עבור DOLBIMBY
    809
  • image_crm_technotorgcomplex_453_0.webp
    פיתוח על בסיס Bitrix24 עבור חברת TECHNOTORGKOMPLEKS
    1163

משתמש רוצה לקנות מוצר, אבל המחיר גבוה מדי. הוא לוחץ על 'מעקב אחר מחיר' ומקבל התראה על ירידת מחיר כאשר המחיר יורד. תכונה זו מעלה את שיעור ההמרה ב-15–20%, אבל 1C-Bitrix לא כוללת אותה כברירת מחדל. מפתחים צריכים לבנות פתרון מותאם אישית: טבלת הרשמות, מטפלי AJAX, וסוכן השוואה. יישמנו מודול כזה באמצעות ORM, אינדקסים וקאשינג—אמין, מהיר וקל לתחזוקה. עם ניסיון של למעלה מ-5 שנים בפיתוח Bitrix, פרסנו את המודול הזה עבור יותר מ-50 לקוחות, תוך ניהול של עד 10,000 הרשמות פעילות בפרויקט. להלן איך זה עובד ומה השירות כולל.

האתגר המרכזי הוא לא להעמיס על מסד הנתונים במהלך בדיקות מחיר. אנו משתמשים בקאשינג מתויג ובשאילתות סלקטיביות לטבלת b_catalog_price. הסוכן רץ פעם בשעה ומעבד רק הרשמות פעילות. כתוצאה מכך, העומס על MySQL מופחת ב-30% בהשוואה לפתרונות טיפוסיים המשתמשים ב-CIBlockElement::GetList. עלות היישום מתחילה ב-$500, והחיסכון הממוצע בתשתית שרתים עולה על $2000 בחודש.

איך עוקבים אחר מחירים ב-1C-Bitrix?

המשתמש לוחץ על כפתור 'מעקב אחר מחיר' בעמוד המוצר. מטפל הרשמות AJAX שולח בקשה לשרת, שבו הבקר בודק הרשאות ומוסיף רשומה לטבלה המותאמת אישית bl_price_tracker. השדה PRICE_AT_SUBSCRIBE מאחסן את המחיר הנוכחי. לאחר מכן, סוכן (משימת Cron) רץ פעם בשעה, עובר על ההרשמות הפעילות, משווה את המחיר הנוכחי מ-b_catalog_price עם המחיר המאוחסן, ושולח הודעת דוא"ל אם המחיר ירד. שכבת ה-ORM מבטיחה עמידה בעקרונות ACID ומפחיתה קוד תשתית.

אילו בעיות אנחנו פותרים

  • אובדן לקוחות — משתמשים לא מקבלים התראות על ירידת מחיר וקונים ממתחרים. ללא הרשמות, אתה מאבד 15–20% מהמכירות הפוטנציאליות.
  • עומס על מסד הנתונים — שאילתות בדיקת מחיר לא אופטימליות מאטות את הקטלוג. אנו מפחיתים את העומס ב-30% באמצעות אינדקסים וקאשינג, ומקצרים את זמן ביצוע השאילתות לפחות מ-100ms לבדיקה.
  • מורכבות תחזוקה — פתרונות מותאמים אישית ללא ORM קשים לתמיכה. אנו משתמשים ב-DataManager ובמיגרציות, מה שמקצר את זמן התחזוקה ב-40%.

למה טבלאות ORM עדיפות על בלוקי מידע

קריטריון טבלת ORM בלוק Highload או בלוק מידע
מהירות כתיבה <1 ms 2–5 ms
גמישות טיפוסים Float, DateTime קבוצה מוגבלת
אינדקסים כל אינדקס ייחודי רק לפי ID

ORM נותן גישה ישירה ל-SQL ופחות תקורה.

איך להגדיר את מרווח בדיקת המחיר?

מרווח הסוכן מוגדר בהגדרות Bitrix: ברירת המחדל היא 'פעם בשעה'. ניתן להגדיר 'כל 30 דקות' לפעילות גבוהה, אבל בדיקות תכופות מגדילות את העומס על מסד הנתונים. לחנויות עם 10,000+ הרשמות, אנו ממליצים על לפחות שעתיים. לפרטים, ראה את תיעוד הסוכן.

דוגמה למחלקת ORM PriceTrackerTable:

class PriceTrackerTable extends \Bitrix\Main\ORM\Data\DataManager { public static function getTableName(): string { return 'bl_price_tracker'; } public static function getMap(): array { return [ new \Bitrix\Main\ORM\Fields\IntegerField('ID', ['primary' => true, 'autocomplete' => true]), new \Bitrix\Main\ORM\Fields\IntegerField('USER_ID'), new \Bitrix\Main\ORM\Fields\StringField('EMAIL'), new \Bitrix\Main\ORM\Fields\IntegerField('PRODUCT_ID'), new \Bitrix\Main\ORM\Fields\FloatField('PRICE_AT_SUBSCRIBE'), new \Bitrix\Main\ORM\Fields\FloatField('TARGET_PRICE'), // NULL = любое снижение new \Bitrix\Main\ORM\Fields\DatetimeField('CREATED_AT'), new \Bitrix\Main\ORM\Fields\DatetimeField('NOTIFIED_AT'), new \Bitrix\Main\ORM\Fields\StringField('STATUS'), // active, notified, cancelled ]; } } 

ממשק משתמש בעמוד המוצר

בתבנית הרכיב class PriceTrackerTable extends \Bitrix\Main\ORM\Data\DataManager { public static function getTableName(): string { return 'bl_price_tracker'; } public static function getMap(): array { return [ new \Bitrix\Main\ORM\Fields\IntegerField('ID', ['primary' => true, 'autocomplete' => true]), new \Bitrix\Main\ORM\Fields\IntegerField('USER_ID'), new \Bitrix\Main\ORM\Fields\StringField('EMAIL'), new \Bitrix\Main\ORM\Fields\IntegerField('PRODUCT_ID'), new \Bitrix\Main\ORM\Fields\FloatField('PRICE_AT_SUBSCRIBE'), new \Bitrix\Main\ORM\Fields\FloatField('TARGET_PRICE'), // NULL = любое снижение new \Bitrix\Main\ORM\Fields\DatetimeField('CREATED_AT'), new \Bitrix\Main\ORM\Fields\DatetimeField('NOTIFIED_AT'), new \Bitrix\Main\ORM\Fields\StringField('STATUS'), // active, notified, cancelled ]; } } (קובץ bitrix:catalog.element), הוסף את הכפתור:

if ($USER->IsAuthorized()) { $isTracking = PriceTrackerTable::getRow([ 'filter' => ['USER_ID' => $USER->GetID(), 'PRODUCT_ID' => $arResult['ID'], 'STATUS' => 'active'], ]); echo $isTracking ? '<button class="btn-untrack" data-id="'.$arResult['ID'].'">Отслеживается ✓</button>' : '<button class="btn-track" data-id="'.$arResult['ID'].'">Следить за ценой</button>'; } 

מטפל ה-AJAX מוסיף או מסיר שורה ב-template.php. אנו מאחסנים את if ($USER->IsAuthorized()) { $isTracking = PriceTrackerTable::getRow([ 'filter' => ['USER_ID' => $USER->GetID(), 'PRODUCT_ID' => $arResult['ID'], 'STATUS' => 'active'], ]); echo $isTracking ? '<button class="btn-untrack" data-id="'.$arResult['ID'].'">Отслеживается ✓</button>' : '<button class="btn-track" data-id="'.$arResult['ID'].'">Следить за ценой</button>'; } — המחיר הנוכחי בזמן ההרשמה. ללא זה, לא ניתן לקבוע אם המחיר החדש נמוך יותר.

בדיקת ירידות מחיר

הסוכן רץ פעם בשעה. הלוגיקה:

  1. שליפת כל ההרשמות הפעילות מ-bl_price_tracker עם PRICE_AT_SUBSCRIBE.
  2. עבור כל bl_price_tracker, קבלת המחיר הנוכחי דרך STATUS = active.
  3. השוואה עם PRODUCT_ID: אם המחיר החדש < המחיר הישן, שלח התראה.
  4. עדכון \Bitrix\Catalog\PriceTable::getRow(['filter' => ['PRODUCT_ID' => $id, 'CATALOG_GROUP_ID' => 1]]) ו-PRICE_AT_SUBSCRIBE.

אם ברצונך להפעיל מחדש הרשמות לאחר ההתראה, שנה ל-STATUS = notified לאחר N ימים: הוסף לוגיקת הפעלה מחדש בסוכן עבור רשומות שבהן NOTIFIED_AT = NOW().

עמוד 'המעקב שלי' בחשבון האישי של Bitrix

בחשבון האישי של המשתמש, הוסף קטע עם רשימת המוצרים במעקב. הרכיב קורא את active לפי NOTIFIED_AT < NOW() - INTERVAL '30 days' ומבצע JOIN לנתוני המוצר מ-bl_price_tracker. תצוגה: שם מוצר, מחיר בזמן ההרשמה, מחיר נוכחי, תאריך הרשמה. כפתור 'ביטול' משנה את USER_ID ל-b_iblock_element.

מדד לפני היישום אחרי היישום
המרה לרכישה 2.3% 3.1% (+35%)
עומס CPU על השרת 70% 50% (-30%)

איך לאסוף נתוני הרשמות?

הוסף שדות STATUS (היכן המשתמש לחץ—כרטיס מוצר, חיפוש, המלצות) ו-cancelled לטבלת ה-ORM. זה עוזר לזהות אילו קטגוריות מושכות תשומת לב ואילו מוצרים חווים ירידות מחיר תכופות. דוח הניהול מציג: מספר הרשמות פעילות, זמן ממוצע בין הרשמה להתראה, שיעור רכישות חוזרות. ניתוח כזה עוזר לתכנן מדיניות תמחור ומזהה מוצרים בעלי עניין גבוה. הניסיון מראה שניהול הרשמות מעלה את ה-ROI ב-25–30%.

מה כולל השירות

  • מחלקת ORM SOURCE ומיגרציית DDL לטבלת CATEGORY_ID
  • בקר AJAX להרשמה/ביטול הרשמה עם בדיקת הרשאות
  • כפתור בתבנית PriceTrackerTable עם מצב דינמי
  • סוכן השוואת מחירים ושליחת התראות
  • עמוד 'המעקב שלי' בחשבון האישי של Bitrix
  • תיעוד פריסה והגדרה
  • ניתוח הרשמות בממשק הניהול

לוחות זמנים ואחריות

יישום סטנדרטי: 5–7 ימי עסקים. לוחות הזמנים עשויים להתארך עבור דרישות לא סטנדרטיות (הפעלה מחדש, התראות המוניות, אינטגרציה עם 1C). אנו מספקים אחריות תמיכה חינם למשך 6 חודשים על הקוד. ניסיון יישום: 5+ שנים, למעלה מ-50 פרויקטים מוצלחים, עם ממוצע של 500 הרשמות ללקוח.

הזמינו יישום סוהר של פונקציונליות זו. צרו קשר ואנו נעריך את הפרויקט שלכם תוך יום אחד ונציע תוכנית אופטימלית.