מנהלי רכש מעבדים מדי יום עשרות קבצי Excel מספקים. העברה ידנית של נתונים לסל של Bitrix פירושה אובדן של עד שעתיים ביום. טעויות בהעתקת מק"טים מובילות להזמנות שגויות והחזרות. תרחיש טיפוסי: מנהל פותח את price_123.xlsx, מעתיק מק"טים לסל — ורק בקופה מגלה שבמקום מק"ט "AB-123" הועתק "AB-123 " (עם רווח בסוף). המוצר לא נמצא, יש לעבד את ההזמנה מחדש. פיתחנו מודול שמנתח XLSX/CSV/XML וממלא את הסל תוך שניות. לאחר ההתקנה, לקוחות מדווחים על חיסכון של עד 80% בזמן עבור מנהלים ועל ירידה של 70% בהחזרות. ההשקעה במודול מחזירה את עצמה תוך 2-3 חודשים — עלויות התפעול נמוכות באופן מובהק. לדוגמה, לקוח אחד חסך 2,500 דולר בחודש לאחר המעבר לייבוא אוטומטי.
כיצד פועל חיפוש מק"ט
המק"ט ב-Bitrix מאוחסן במספר מקומות: בשדה XML_ID של רכיב בלוק המידע, במאפיין ARTICLE (אם נעשה בו שימוש), ובשדה ARTICLE בטבלת b_catalog_product. אנו מחפשים ברצף, עם עדיפות:
// 1. Поиск по b_catalog_product.ARTICLE
$product = \Bitrix\Catalog\ProductTable::getList([
'filter' => ['=ARTICLE' => $sku],
'select' => ['ID', 'ARTICLE'],
])->fetch();
// 2. Если не найден — поиск по XML_ID элемента инфоблока
if (!$product) {
$element = \CIBlockElement::GetList(
[],
['=XML_ID' => $sku, 'IBLOCK_ID' => $catalogIblockId],
false,
false,
['ID', 'XML_ID']
)->Fetch();
}גישה זו מכסה 95% מהמקרים. אם לא נמצא — סטטוס // 1. Поиск по b_catalog_product.ARTICLE $product = \Bitrix\Catalog\ProductTable::getList([ 'filter' => ['=ARTICLE' => $sku], 'select' => ['ID', 'ARTICLE'], ])->fetch(); // 2. Если не найден — поиск по XML_ID элемента инфоблока if (!$product) { $element = \CIBlockElement::GetList( [], ['=XML_ID' => $sku, 'IBLOCK_ID' => $catalogIblockId], false, false, ['ID', 'XML_ID'] )->Fetch(); } . אם נמצאו מספר פריטים עם אותו מק"ט — not_found. אנו מתעדים כל מקרה לצורך ביקורת.
מדוע תצוגה מקדימה היא קריטית
ללא תצוגה מקדימה, שגיאה בקובץ (למשל, רווח נוסף במק"ט) עלולה להוביל להזמנה שגויה. המודול שלנו, לאחר הניתוח, מציג למשתמש טבלה עם תוצאות: עבור כל שורה — המוצר שנמצא, הכמות מהקובץ, סטטוס. שורות עם שגיאות מודגשות; המשתמש יכול להתאים ידנית את המוצר מהקטלוג. זה מפחית משמעותית את שיעור הפגמים — בפועל, לאחר היישום, ההחזרות עקב שגיאות הזמנה ירדו ב-70%.
רק לאחר אישור המשתמש, הנתונים נשלחים לסל.
כיצד להגדיר מיפוי עמודות
- התקן את המודול ועבור להגדרות.
- ציין מספרי עמודות עבור מק"ט (לדוגמה, עמודה A) וכמות (עמודה B).
- אם לקובץ יש כותרות, הפעל את האפשרות "כותרות" — המודול יזהה אוטומטית עמודות לפי שמות ("מק"ט", "כמות", "Quantity").
- שמור את התצורה. טופס ההעלאה ישתמש כעת בהגדרות שלך.
כיצד מטפלים בשגיאות העלאה
כל ניסיונות ההעלאה מתועדים בטבלת multiple:
| שדה | סוג | מטרה |
|---|---|---|
| ID | int auto_increment | — |
| USER_ID | int | מי העלה |
| FILE_NAME | varchar(255) | שם הקובץ המקורי |
| ROWS_TOTAL | int | שורות בקובץ |
| ROWS_FOUND | int | מוצרים שנמצאו |
| ROWS_ADDED | int | נוספו לסל |
| STATUS | enum | SUCCESS, PARTIAL, FAILED |
| CREATED_AT | datetime | — |
סטטוסי רישום:
-
b_orderimport_log— כל השורות עובדו, ההזמנה נוצרה. -
SUCCESS— חלק מהמוצרים לא נמצאו או הייתה שגיאה, אך ההזמנה נוצרה עם אלה שנמצאו. -
PARTIAL— שגיאה קריטית (פורמט לא תקין, לא ניתן לנתח).
מבנה המודול
המודול רשום ב-FAILED. רכיבים עיקריים:
-
local/modules/vendor.orderimport/— מנתח XLSX -
lib/FileParser/XlsxParser.php— מנתח CSV -
lib/FileParser/CsvParser.php— חיפוש מוצר לפי מק"ט -
lib/ProductMatcher.php— מילוי סל -
lib/CartFiller.php— רכיב טופס העלאה
מילוי סל
use Bitrix\Sale\Basket;
use Bitrix\Sale\BasketItem;
$basket = Sale\Basket::loadItemsForFUser(Sale\Fuser::getId(), SITE_ID);
foreach ($confirmedItems as $item) {
$basketItem = $basket->getExistsItem('catalog', $item['product_id']);
if ($basketItem) {
$basketItem->setField('QUANTITY', $basketItem->getQuantity() + $item['qty']);
} else {
$newItem = $basket->createItem('catalog', $item['product_id']);
$newItem->setFields([
'QUANTITY' => $item['qty'],
'PRODUCT_PROVIDER_CLASS' => \CCatalogProductProvider::class,
'LID' => SITE_ID,
'CURRENCY' => \Bitrix\Currency\CurrencyManager::getBaseCurrency(),
]);
}
}
$basket->save();
התיעוד הרשמי של Bitrix על פעולות סל זמין ב-dev.1c-bitrix.ru.
תבנית קובץ להורדה
בדף ההעלאה מוצג קישור להורדת תבנית — קובץ XLSX מוכן עם כותרות עמודות ("מק"ט", "כמות", "הערה") ונתוני דוגמה. התבנית נוצרת באמצעות components/vendor/orderimport.form/ בכל בקשה או מוגשת כקובץ סטטי.
מה כלול בעבודה
אנחנו לא רק כותבים את המודול — אנו מספקים חבילה מלאה: תיעוד התקנה ותצורה, הדרכת מנהלים, תמיכה של 30 יום לאחר המסירה, וגישה לקוד המקור במאגר שלך. הניסיון שלנו: 5+ שנים בפיתוח Bitrix, 20+ מודולי טעינת נתונים מוצלחים. אחריות מסירה של 100% ועמידה בתקנים. צור קשר כדי לדון בתרחיש שלך — נעריך את הפרויקט תוך יום עסקים אחד. קבל ייעוץ על אינטגרציה של המודול.
קובץ לדוגמה
תוכן לדוגמה של תבנית XLSX:
| מק"ט | כמות | הערה |
|---|---|---|
| AB-123 | 10 | דחוף |
| CD-456 | 5 | רגיל |
| EF-789 | 2 | ללא פגמים |
לוחות זמנים לפיתוח
| היקף | הרכב | לוח זמנים |
|---|---|---|
| בסיסי | ניתוח XLSX/CSV, חיפוש מק"ט, הוספה לסל | 5–7 ימים |
| סטנדרטי | + תצוגה מקדימה, התאמה ידנית של לא נמצאו, תבנית קובץ | 9–12 ימים |
| מורחב | + פורמט XML, רישום, עמודות מחיר מרובות, בדיקת מלאי | 14–18 ימים |
להערכת עלות וזמן מדויקת, צור קשר — נתחשב בכל הפרטים של הקטלוג והאינטגרציות שלך. הזמן את המודול היום וצמצם את זמן עיבוד ההזמנות ב-80%!

