מדריך להגדרת פריטי חובה ורשות בערכות 1C-Bitrix

בעת הרכבת ערכת "מחשב גיימינג" בחנות מקוונת על 1C-Bitrix, עולה משימה נפוצה: יחידת המערכת היא חובה, בעוד המקלדת, העכבר והאוזניות הם רשות. ללא פיתוח מותאם אישית, מנגנון `b_catalog_product_set` הסטנדרטי מאפשר רק לסמן פריט כחובה או לא. קבוצה
השירותים שאנו מציעים
מציג 1 מתוך 1כל 1626 השירותים
מדריך להגדרת פריטי חובה ורשות בערכות 1C-Bitrix
פשוט
~1 יום

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

שאלות נפוצות

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

  • image_website-b2b-advance_0.webp
    פיתוח אתר חברה B2B ADVANCE
    1458
  • 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
    805
  • image_crm_technotorgcomplex_453_0.webp
    פיתוח על בסיס Bitrix24 עבור חברת TECHNOTORGKOMPLEKS
    1163

בעת הרכבת ערכת "מחשב גיימינג" בחנות מקוונת על 1C-Bitrix, עולה משימה נפוצה: יחידת המערכת היא חובה, בעוד שמקלדת, עכבר ואוזניות הם אופציונליים. ללא פיתוח מותאם אישית, מנגנון b_catalog_product_set הסטנדרטי מאפשר רק לסמן פריט כחובה או לא. קיבוץ אפשרויות, חישוב מחיר דינמי וניהול מלאי נפרד אינם נתמכים. למהנדסים שלנו, עם ניסיון של 5+ שנים, יש ניסיון ביישום עשרות פרויקטים כאלה — מחנויות קטנות ועד קטלוגים עם 50,000 פריטים. אנו מציעים פתרון מוכן שמתאים בקלות לכל תרחיש עסקי.

הגדרת פריטי חובה ואופציונליים בערכת 1C-Bitrix

למנגנון b_catalog_product_set הסטנדרטי יש שדה IS_REQUIRED, אך הלוגיקה של צד הלקוח לבחירת אפשרויות אינה מיושמת כברירת מחדל. הרחבת המערכת דורשת פיתוח נוסף.

שדה IS_REQUIRED והמגבלות שלו

שדה IS_REQUIRED מקבל ערכים 0 (אופציונלי) ו-1 (חובה). זהו ההבחנה היחידה במבנה הסטנדרטי. לתרחישים מורכבים יותר — לדוגמה, "בחירת פריט אחד בדיוק מקבוצה" — יש צורך להרחיב את הסכמה. בפרויקט אחד, צמצמנו את הזמן להוספת ערכה חדשה מ-3 שעות ל-10 דקות הודות לטבלת הקיבוץ שלנו.

אנו מוסיפים את שדה GROUP_ID ל-b_catalog_product_set דרך שדה משתמש או על ידי הרחבת הטבלה (אם מדיניות העדכון מאפשרת). חלופה ללא שינוי מבנה הטבלה: אחסון קיבוצים בטבלת bl_bundle_option_group נפרדת. מנגנון b_catalog_product_set מתואר ב-תיעוד 1C-Bitrix הרשמי על ערכות מוצרים.

CREATE TABLE bl_bundle_option_group ( id SERIAL PRIMARY KEY, bundle_id INT NOT NULL, group_code VARCHAR(100) NOT NULL, group_name VARCHAR(255), min_select SMALLINT DEFAULT 0, -- минимум выбранных из группы max_select SMALLINT DEFAULT 1, -- максимум выбранных из группы item_ids INT[] NOT NULL, -- массив ITEM_ID из b_catalog_product_set UNIQUE (bundle_id, group_code) ); 

יישום בחירה מקבוצת אפשרויות עם מינימום/מקסימום

דף הערכה מציג פריטי חובה כלא ניתנים להסרה (עם סימון שלא ניתן להסיר) ואופציונליים כתיבות סימון או לחצני רדיו (אם CREATE TABLE bl_bundle_option_group ( id SERIAL PRIMARY KEY, bundle_id INT NOT NULL, group_code VARCHAR(100) NOT NULL, group_name VARCHAR(255), min_select SMALLINT DEFAULT 0, -- минимум выбранных из группы max_select SMALLINT DEFAULT 1, -- максимум выбранных из группы item_ids INT[] NOT NULL, -- массив ITEM_ID из b_catalog_product_set UNIQUE (bundle_id, group_code) ); בקבוצה).

כאשר הבחירה משתנה, הסקריפט מחשב מחדש את המחיר הכולל. המחיר של כל רכיב אופציונלי נלקח מ-max_select = 1 לפי b_catalog_price שלו. חשוב להתחשב במחירים ספציפיים למשתמש: אם לקונה יש קבוצת מחיר, יש לבדוק PRODUCT_ID. הפתרון המותאם אישית שלנו מהיר פי 10 מהפתרון הסטנדרטי בעת הוספת אפשרויות חדשות לערכה קיימת.

function recalcBundle(selectedItems) { const basePrice = bundleData.basePrice; // цена обязательных позиций let optionsTotal = 0; selectedItems.forEach(itemId => { optionsTotal += bundleData.items[itemId].price; }); document.getElementById('bundle-total').textContent = formatPrice(basePrice + optionsTotal); } 

בדיקת מלאי לפריטים אופציונליים

זמינות ערכה עם פריטים אופציונליים: אנו בודקים מלאי רק עבור רכיבי חובה. אופציונליים נבדקים בנפרד, ואנו מציגים "זמין N יחידות" ליד כל תיבת סימון. אם פריט אופציונלי אזל, תיבת הסימון מושבתת, אך ניתן לרכוש את הערכה בלעדיו. הנחה על הערכה מוחלת רק כאשר כל הפריטים האופציונליים נבחרים (תצורה מלאה) — מקרה עסקי נפוץ. זה מיושם דרך כלל סל: ההנחה מופעלת כאשר קבוצת הפריטים בעגלה תואמת להרכב הערכה המלא. תנאי הכלל: כל b_catalog_price.CATALOG_GROUP_ID מ-function recalcBundle(selectedItems) { const basePrice = bundleData.basePrice; // цена обязательных позиций let optionsTotal = 0; selectedItems.forEach(itemId => { optionsTotal += bundleData.items[itemId].price; }); document.getElementById('bundle-total').textContent = formatPrice(basePrice + optionsTotal); } נמצאים בעגלה בכמויות הנדרשות. עבור חנות בינונית טיפוסית, יישום פתרון זה עולה כ-$1,500 - $3,000, וחוסך עד 40% על התאמות ערכה עתידיות.

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

בעת הוספה לסל, יש להעביר את הרכב הערכה — רק את הפריטים שנבחרו. דרך AJAX POST, אנו שולחים ITEM_ID ומערך b_catalog_product_set. בשרת:

// Формируем состав для добавления в корзину $bundle = new \Bitrix\Sale\BasketItem(); // Обязательные позиции берём всегда $requiredItems = \Bitrix\Catalog\ProductSetTable::getList([ 'filter' => ['SET_ID' => $bundleId, 'IS_REQUIRED' => 1], ])->fetchAll(); // Опциональные — только из $_POST['selected_items'] $optionalItems = array_intersect( array_column($requiredItems, 'ITEM_ID'), (array)$_POST['selected_items'] ); 

ההרכב הסופי מועבר ל-bundle_id. כל רכיב יוצר שורה נפרדת ב-selected_items[] עם דגל // Формируем состав для добавления в корзину $bundle = new \Bitrix\Sale\BasketItem(); // Обязательные позиции берём всегда $requiredItems = \Bitrix\Catalog\ProductSetTable::getList([ 'filter' => ['SET_ID' => $bundleId, 'IS_REQUIRED' => 1], ])->fetchAll(); // Опциональные — только из $_POST['selected_items'] $optionalItems = array_intersect( array_column($requiredItems, 'ITEM_ID'), (array)$_POST['selected_items'] ); .

השוואה בין הגישה הסטנדרטית למותאמת אישית

מאפיין מנגנון סטנדרטי ההרחבה שלנו
חובה / אופציונלי רק שדה IS_REQUIRED קיבוץ עם בחירת מינימום/מקסימום
בחירה מקבוצה לא כן, דרך bl_bundle_option_group
חישוב מחיר דינמי בחזית לא דינמי דרך JS
מחירים ספציפיים למשתמש לא כן, דרך CATALOG_GROUP_ID
הנחה לתצורה מלאה לא כלל סל
בקרת מלאי נפרדת לא רק חובה משפיעים על זמינות

שלבי העבודה

שלב משך
ניתוח ועיצוב סכמה 2 עד 5 ימים
יצירת טבלת bl_bundle_option_group ומיגרציה 1 עד 2 ימים
שינוי תבנית הרכיב (תיבות סימון, חישוב מחיר) 3 עד 7 ימים
מטפל AJAX להוספה לסל 2 עד 4 ימים
כלל סל להנחה 1 עד 2 ימים
בדיקות ותיעוד 2 עד 4 ימים

מה כלול בהתקנה?

  • יצירת טבלת \Bitrix\Catalog\Product\Bundle::Add() עם פרמטרי קיבוץ
  • שינוי תבנית הרכיב להצגת הערכה (תיבות סימון, חישוב מחיר)
  • מטפל AJAX להוספה לסל עם אפשרויות נבחרות
  • כלל סל להנחה על תצורה מלאה
  • בדיקת מלאי נפרדת לפריטי חובה ואופציונליים
  • תיעוד והדרכה לצוות שלך

למה להפקיד בידינו את ההתקנה?

אנו עובדים עם 1C-Bitrix למעלה מ-5 שנים ויישמנו עשרות פרויקטים עם ערכות מותאמות אישית. המומחים המוסמכים שלנו מבטיחים פעולה יציבה לאחר ההשקה. צור קשר להערכת קטלוג — נכין מפרט טכני ונחשב לוחות זמנים. בקש ביקורת פרויקט — היא תסייע לזהות צווארי בקבוק ביישום הערכה הנוכחי שלך. ערכות Bitrix24 יכולות גם הן להפיק תועלת מגישה זו, תוך הבטחת גמישות ומדרגיות.