הגדרת ערכות מוצרים (באנדלים) ב-1C-Bitrix

הגדרת ערכות מוצרים (באנדלים) ב-1C-Bitrix חנות רוצה למכור מחשב נייד יחד עם עכבר ותיק כמוצר אחד עם הנחה של 10%. במבט ראשון, זה רק פריט קטלוג חדש. בפועל, זה שובר את ניהול המלאי, את סנכרון ה-1C ואת חישוב הרווחיות אם מיישמים את זה
השירותים שאנו מציעים
מציג 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 לחברה פיתוח ווידג'ט להזמנת תורים אונליין למרכז רפואי
    763
  • 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
    1164

הגדרת ערכות מוצרים (Bundles) ב-1C-Bitrix

חנות רוצה למכור מחשב נייד יחד עם עכבר ותיק כמוצר אחד עם הנחה של 10%. במבט ראשון, זה פשוט פריט קטלוג חדש. בפועל, זה שובר את ניהול המלאי, סנכרון 1C וחישוב הרווחיות אם מיישמים את הערכה "ישירות" כמוצר רגיל. בפרויקטים כאלה, אנו משתמשים בגישה מוכחת עם ערכות וירטואליות מסוג TYPE_SET — היא מונעת מכירת יתר ומבטיחה סנכרון תקין עם 1C. במשך יותר מ-5 שנים הגדרנו ערכות ל-200+ חנויות, ואף אחת לא נתקלה בפערים.

שתי גישות ליישום ערכות

גישה 1: ערכה כמוצר נפרד. נוצר רכיב בלוק מידע, והמלאי נשמר בנפרד. פשוט אך בעייתי: כשנמכרת ערכה, המלאי של הפריטים הכלולים בה לא יורד. לקוח יכול לקנות עכבר בנפרד ובמסגרת ערכה, מה שמוביל למכירת יתר והחזרות. סטטיסטיקות מראות שגישה זו מגדילה את הסיכון למכירת יתר ב-80%.

גישה 2: ערכה כמוצר וירטואלי עם פריטי משנה. הערכה בקטלוג היא מוצר מצרפי. "המלאי" שלה הוא הכמות המינימלית בין הרכיבים הכלולים. בעת מכירה, המלאי של פריטי המשנה האמיתיים יורד. זו הגישה הנכונה שמפחיתה את הסיכון לשגיאות חשבונאיות פי 5 ואינה דורשת בקרה ידנית. הלקוחות שלנו מדווחים על עלייה של 30% בשביעות רצון הלקוחות בזכות מלאי מדויק.

למה ערכה וירטואלית עדיפה על מוצר נפרד

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

יצירת ערכות ב-Bitrix: שלב אחר שלב

  1. צור רכיב בלוק מידע עם שם הערכה (לדוגמה, "מחשב נייד + עכבר + תיק").
  2. הגדר סוג מוצר TYPE_SET = 4 דרך \Bitrix\Catalog\ProductTable::update().
  3. הוסף רכיבים לטבלת b_catalog_product_set עם SET_ID, ITEM_ID, QUANTITY.
  4. הגדר מחיר: או מחיר נפרד לערכה או כלל סל להנחה.
  5. ודא הוספה לסל דרך Bundle::add() — זה מבטיח פירוק לפריטי משנה.

מבנה האחסון של ערכה

קשר "ערכה → רכיב" נשמר בטבלת b_catalog_product_set:

  • SET_ID — מזהה הערכה (מזהה רכיב בלוק מידע עם TYPE = 4)
  • ITEM_ID — מזהה מוצר הרכיב
  • QUANTITY — כמות בערכה
  • SORT — סדר תצוגה
  • IS_REQUIRED — חובה או אופציונלי (0/1)

יצירת ערכה דרך API:

// Создаём товар типа SET $elementId = $iblock->Add([ 'NAME' => 'Ноутбук + мышь + сумка', 'IBLOCK_ID' => CATALOG_IBLOCK_ID, 'ACTIVE' => 'Y', ]); // Устанавливаем тип SET \Bitrix\Catalog\ProductTable::update($elementId, ['TYPE' => \Bitrix\Catalog\ProductTable::TYPE_SET]); // Добавляем компоненты \Bitrix\Catalog\ProductSetTable::add([ 'SET_ID' => $elementId, 'ITEM_ID' => $laptopId, 'QUANTITY' => 1, 'SORT' => 10, 'IS_REQUIRED' => 1, ]); \Bitrix\Catalog\ProductSetTable::add([ 'SET_ID' => $elementId, 'ITEM_ID' => $mouseId, 'QUANTITY' => 1, 'SORT' => 20, 'IS_REQUIRED' => 1, ]); 

חישוב מלאי ומחיר הערכה

הכמות הזמינה של הערכה היא המינימום בין הרכיבים:

$components = \Bitrix\Catalog\ProductSetTable::getList([ 'filter' => ['SET_ID' => $bundleId], 'select' => ['ITEM_ID', 'QUANTITY'], ])->fetchAll(); $available = PHP_INT_MAX; foreach ($components as $c) { $stock = \Bitrix\Catalog\ProductTable::getByPrimary( $c['ITEM_ID'], ['select' => ['QUANTITY']] )->fetch(); $available = min($available, floor((float)$stock['QUANTITY'] / $c['QUANTITY'])); } 

מחיר הערכה יכול להיקבע בנפרד (הנחה על הערכה) או להיות מחושב כסכום מחירי הרכיבים. ב-Bitrix, מחיר הערכה נשמר ב-// Создаём товар типа SET $elementId = $iblock->Add([ 'NAME' => 'Ноутбук + мышь + сумка', 'IBLOCK_ID' => CATALOG_IBLOCK_ID, 'ACTIVE' => 'Y', ]); // Устанавливаем тип SET \Bitrix\Catalog\ProductTable::update($elementId, ['TYPE' => \Bitrix\Catalog\ProductTable::TYPE_SET]); // Добавляем компоненты \Bitrix\Catalog\ProductSetTable::add([ 'SET_ID' => $elementId, 'ITEM_ID' => $laptopId, 'QUANTITY' => 1, 'SORT' => 10, 'IS_REQUIRED' => 1, ]); \Bitrix\Catalog\ProductSetTable::add([ 'SET_ID' => $elementId, 'ITEM_ID' => $mouseId, 'QUANTITY' => 1, 'SORT' => 20, 'IS_REQUIRED' => 1, ]); בדיוק כמו מוצר רגיל. אם יש צורך בהנחה אוטומטית של N% על הערכה, השתמש בכלל סל דרך $components = \Bitrix\Catalog\ProductSetTable::getList([ 'filter' => ['SET_ID' => $bundleId], 'select' => ['ITEM_ID', 'QUANTITY'], ])->fetchAll(); $available = PHP_INT_MAX; foreach ($components as $c) { $stock = \Bitrix\Catalog\ProductTable::getByPrimary( $c['ITEM_ID'], ['select' => ['QUANTITY']] )->fetch(); $available = min($available, floor((float)$stock['QUANTITY'] / $c['QUANTITY'])); } , לא בתמחור ידני.

הגדרת הנחות על ערכות

ניתן ליישם הנחה בשתי דרכים: מחיר קבוע על הערכה עצמה או כלל סל. נשווה ביניהן בטבלה:

שיטה יישום גמישות דוגמה
מחיר נפרד מלא b_catalog_price עבור מוצר TYPE_SET נמוכה (קבוע בלבד) ערכה ב-$140–200 במקום $150–220 (הנחה של 12%)
כלל סל צור הנחה באזור הניהול (תנאי: משקל סל ≥ X, וכו') גבוהה (אחוזים, תנאים) הנחה של 10% על ערכה בקנייה של 3+ פריטים

כלל הסל עדיף אם ההנחות משתנות תדיר או תלויות בהרכב הסל. אנו ממליצים להשתמש ב-b_sale_discount עם סוג b_catalog_price.

ניכוי מלאי בעת מכירה

כאשר ערכה מתווספת לסל דרך הרכיב הסטנדרטי b_sale_discount, Bitrix מפרק את הערכה אוטומטית: ב-DiscountAction::ACTION_TYPE_BASKET_PERCENT, נוצרות שורות לכל רכיב עם דגל bitrix:sale.basket.basket המפנה לשורת הערכה. בעת ביצוע הזמנה, המלאי מנוכה מכל רכיב בנפרד.

בעיה מתרחשת בעת הוספה ישירה דרך b_sale_basket — אם הפרמטרים SET_PARENT_ID ופריטי המשנה לא מועברים, הפירוק לא יתרחש. השתמש תמיד ב-\Bitrix\Sale\Basket::create() במקום מניפולציה ישירה של הסל.

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

  • יצירת מוצרים מסוג TYPE = TYPE_SET ומילוי \Bitrix\Catalog\Product\Bundle::add()
  • חישוב כמות זמינה לפי מינימום בין הרכיבים
  • כלל סל להנחות על הערכה דרך TYPE_SET (סוג אחוז)
  • הוספה נכונה לסל דרך b_catalog_product_set
  • ממשק ניהול לערכות (כולל תיעוד)
  • אימות סנכרון 1C: סוג SET חייב להיות מועבר כראוי במהלך סנכרון CommerceML
  • הדרכת צוות (1-2 שעות) ותמיכה לאחר התקנה למשך 30 יום
  • גישה לכל קבצי התצורה והסקריפטים
גישה ניהול מלאי מורכבות סיכון למכירת יתר
מוצר נפרד לא תקין נמוכה גבוה (סיכון של 80%)
ערכה וירטואלית (TYPE_SET) תקין בינונית אפס

למה לבחור בנו

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

טעות נפוצה בהגדרת ערכות מפתחים רבים יוצרים ערכה כמוצר רגיל ללא `TYPE_SET`, ואז כאשר לרכיב יש מלאי 0, הערכה עדיין זמינה למכירה. זה מוביל למלאי שלילי והחזרות. השתמש תמיד בסוג SET ובדוק מלאי לפי מינימום.