מנהלי רכש מעבדים מדי יום עשרות קבצי 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%!

