סיטונאים עובדים עם רשימות המחירים והמפרטים שלהם ב-Excel. הם רוצים לקחת טבלה מוכנה של "SKU — כמות", להעלות אותה לאתר, ולקבל מיד עגלת קניות. ללא תכונה זו, מנהל מבזבז שעה על הזנה ידנית. הם עושים טעויות. הלקוח עוזב למתחרה עם אתר נוח יותר. Bitrix הסטנדרטי אינו כולל כלים לקריאת Excel. נדרשת הטמעה מותאמת אישית. הפתרון שלנו הוא מודול מוכן להעלאת הזמנות מ-Excel. הוא מותאם לתהליכים העסקיים שלכם ולפורמטי הקבצים שלכם. זה מבטל עבודה שגרתית. זה חותך עלויות תפעול בעשרות — חיסכון חודשי של כ-$9–13. זה מפחית את העומס על המנהלים.
סקירה כללית
תהליך ההעלאה מורכב מכמה שלבים: ניתוח קובץ בצד השרת, זיהוי כותרות, פתרון SKU, והוספה לעגלה. נבחן כל שלב עם קוד אמיתי.
כיצד להשתמש
- העלו את קובץ ה-Excel שלכם (.xlsx או .xls) דרך הממשק.
- המערכת מזהה אוטומטית עמודות באמצעות מילות מפתח כמו SKU וכמות.
- צפו בתצוגה מקדימה של הפריטים שנותחו. ניתן לערוך כמויות ולהסיר שורות לא תואמות.
- לחצו על "הוסף לעגלה". כל המוצרים שנמצאו מתווספים מיידית.
- בדקו את העגלה והמשיכו לתשלום.
תהליך עבודה פשוט זה מאפשר העלאה אוטומטית של Excel לאתר. הוא הופך משימה ידנית לתהליך של לחיצה אחת.
יישום טכני
ניתוח Excel על השרת
כדי לקרוא קבצי .xlsx, אנו משתמשים ב-ספריית PhpSpreadsheet (היורשת של PHPExcel). היא מותקנת דרך Composer:
composer require phpoffice/phpspreadsheet בקר AJAX לעיבוד קבצים:
public function uploadAction(): array { $file = $_FILES['excel_file']; if (!$file || $file['error'] !== UPLOAD_ERR_OK) { return ['status' => 'error', 'message' => 'Файл не загружен']; } $allowedMimes = [ 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/vnd.ms-excel', ]; if (!in_array($file['type'], $allowedMimes)) { return ['status' => 'error', 'message' => 'Неверный формат файла']; } $reader = \PhpOffice\PhpSpreadsheet\IOFactory::createAutomatic( \PhpOffice\PhpSpreadsheet\IOFactory::identify($file['tmp_name']) ); $spreadsheet = $reader->load($file['tmp_name']); $sheet = $spreadsheet->getActiveSheet(); $rows = $sheet->toArray(); return $this->processRows($rows); } לוגיקת ניתוח השורות מזהה כותרות לפי מילות מפתח כמו 'sku', 'article', 'qty'. אם לא נמצאו, ברירת המחדל מניחה שעמודה 0 = SKU, עמודה 1 = כמות.
קוד מלא של מזהה הכותרות
מתודה זו עוברת על שורות, מחפשת תאים עם מילות מפתח ('sku', 'article', 'qty', וכו') וקובעת את מיקומי העמודות. אם לא מזוהה כותרת, היא נופלת להנחה שהעמודה הראשונה היא SKU והשנייה היא כמות.פתרון SKU וביצועי אצווה
לאחר הניתוח, יש לנו מערך של SKUs. אנו פותרים אותם עם שאילתת SQL אחת בקבוצה. זה הרבה יותר מהיר מאשר N שאילתות נפרדות:
private function processRows(array $rows): array { // Ищем строку-заголовок по ключевым словам $headerRow = null; $articleCol = null; $quantityCol = null; foreach ($rows as $i => $row) { foreach ($row as $j => $cell) { $cell = mb_strtolower(trim((string)$cell)); if (in_array($cell, ['артикул', 'арт', 'article', 'sku', 'код'])) { $articleCol = $j; $headerRow = $i; } if (in_array($cell, ['количество', 'кол-во', 'qty', 'quantity', 'кол'])) { $quantityCol = $j; } } if ($headerRow !== null) break; } // Если заголовок не найден — предполагаем: колонка 0 = артикул, колонка 1 = количество $articleCol = $articleCol ?? 0; $quantityCol = $quantityCol ?? 1; $dataStart = ($headerRow ?? -1) + 1; $items = []; for ($i = $dataStart; $i < count($rows); $i++) { $article = trim((string)($rows[$i][$articleCol] ?? '')); $qty = (float)str_replace(',', '.', $rows[$i][$quantityCol] ?? 1); if ($article !== '') { $items[] = ['article' => $article, 'quantity' => max(1, $qty)]; } } return $this->resolveArticles($items); } ביצועי שאילתת אצווה: בעת ייבוא 1000 שורות, ביצוע 1000 שאילתות SELECT נפרדות יוצר עומס עצום על מסד הנתונים. composer require phpoffice/phpspreadsheet יחיד מפחית את זמן הפתרון מעשרות שניות לשבריר שנייה. בפרויקטים שלנו, זה מניב האצה של פי 10–15 בקטלוגים החל מ-10,000 פריטים.
תצוגה מקדימה ואינטגרציה עם העגלה
לאחר העלאת הקובץ, המשתמש רואה טבלה עם תוצאות:
| SKU מהקובץ | מוצר שנמצא | כמות | מחיר | סטטוס |
|---|---|---|---|---|
| ABC-123 | בורג M8×20 | 100 | $2.50 | נמצא |
| XYZ-999 | — | 5 | — | לא נמצא |
| DEF-456 | אום M8 | 50 | $1.20 | אזל מהמלאי |
הלקוח יכול להתאים כמויות. הוא יכול להסיר פריטים לא תואמים. הוא לוחץ על "הוסף לעגלה". ההוספה היא שוב פעולת אצווה באמצעות public function uploadAction(): array { $file = $_FILES['excel_file']; if (!$file || $file['error'] !== UPLOAD_ERR_OK) { return ['status' => 'error', 'message' => 'Файл не загружен']; } $allowedMimes = [ 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/vnd.ms-excel', ]; if (!in_array($file['type'], $allowedMimes)) { return ['status' => 'error', 'message' => 'Неверный формат файла']; } $reader = \PhpOffice\PhpSpreadsheet\IOFactory::createAutomatic( \PhpOffice\PhpSpreadsheet\IOFactory::identify($file['tmp_name']) ); $spreadsheet = $reader->load($file['tmp_name']); $sheet = $spreadsheet->getActiveSheet(); $rows = $sheet->toArray(); return $this->processRows($rows); } . תבנית Excel זמינה להורדה כדי להבטיח כותרות עמודות נכונות.
מקרה בוחן: מפיץ חומרי בניין
מצב: 300+ לקוחות עסקיים, כל אחד עם טבלת הזמנות משלו. מנהלים בילו 2–3 שעות ביום בהזנה ידנית של פריטים.
יישום:
- מזהה פורמטים: מזהה 7 וריאציות כותרות (SKU, article, code, item, וכו')
- תומך ב-
private function processRows(array $rows): array { // Ищем строку-заголовок по ключевым словам $headerRow = null; $articleCol = null; $quantityCol = null; foreach ($rows as $i => $row) { foreach ($row as $j => $cell) { $cell = mb_strtolower(trim((string)$cell)); if (in_array($cell, ['артикул', 'арт', 'article', 'sku', 'код'])) { $articleCol = $j; $headerRow = $i; } if (in_array($cell, ['количество', 'кол-во', 'qty', 'quantity', 'кол'])) { $quantityCol = $j; } } if ($headerRow !== null) break; } // Если заголовок не найден — предполагаем: колонка 0 = артикул, колонка 1 = количество $articleCol = $articleCol ?? 0; $quantityCol = $quantityCol ?? 1; $dataStart = ($headerRow ?? -1) + 1; $items = []; for ($i = $dataStart; $i < count($rows); $i++) { $article = trim((string)($rows[$i][$articleCol] ?? '')); $qty = (float)str_replace(',', '.', $rows[$i][$quantityCol] ?? 1); if ($article !== '') { $items[] = ['article' => $article, 'quantity' => max(1, $qty)]; } } return $this->resolveArticles($items); }ו-private function resolveArticles(array $items): array { $articles = array_column($items, 'article'); // Ищем в свойствах торговых предложений $placeholders = implode(',', array_fill(0, count($articles), '?')); $rs = $connection->query( "SELECT ie.ID, iep.VALUE AS ARTICLE, ie.IBLOCK_ELEMENT_ID AS PRODUCT_ID FROM b_iblock_element ie JOIN b_iblock_element_property iep ON iep.IBLOCK_ELEMENT_ID = ie.ID WHERE iep.IBLOCK_PROPERTY_ID = ? AND iep.VALUE IN ($placeholders)", array_merge([$articlePropertyId], $articles) ); // ... }(דרך PhpSpreadsheet) - מגבלה: מקסימום 1,000 שורות להעלאה, גודל קובץ עד 5 MB
- תצוגה מקדימה עם כמות ניתנת לעריכה
- התאמה אוטומטית לפי
WHERE INאם SKU לא נמצא במאפיין
תוצאה: מנהלים שוחררו ל-2+ שעות ביום. לקוחות מבצעים הזמנות באופן עצמאי. חיסכון: עלויות עיבוד הזמנות ירדו בעד 70%. כל הפונקציונליות יושמה ב-8 ימי עבודה.
| שלב | משך |
|---|---|
| הגדרת PhpSpreadsheet, העלאת קבצים | יום אחד |
| מנתח עם מזהה כותרות | יומיים |
| פתרון SKU, שאילתת אצווה | יום אחד |
| טבלת תצוגה מקדימה עם עריכה | יומיים |
| הוספה לאצווה לעגלה | יום אחד |
| בדיקות על קבצי לקוחות אמיתיים | יום אחד |
תוצרים ומקרים מיוחדים
מה כלול
- מעלה קבצים עבור
\Bitrix\Sale\Basket//upload/templates/order_template.xlsxעם אימות פורמט - מנתח עם זיהוי אוטומטי של כותרות ומיקומי עמודות
- פתרון SKU באצווה דרך
.xlsx - תצוגה מקדימה של תוצאות עם אפשרות תיקון לפני הוספה לעגלה
- הוספת אצווה של מוצרים שנמצאו לעגלה באמצעות
.xls - תבנית Excel להורדה
- תיעוד טכני מלא
- גישת שרת והוראות פריסה
- מפגש הדרכה למנהלים (עד שעתיים)
- תמיכה לאחר השקה למשך 30 יום
מקרים מיוחדים: נדרש מנתח מותאם אישית
אם הלקוחות שלכם שולחים קבצים עם מבנה לא סטנדרטי — כותרות צפות, קידודים שונים, או עמודות נוספות — ייבוא Bitrix הסטנדרטי לא יתמודד עם זה. רק מנתח מותאם אישית עם זיהוי פורמטים מבטיח העלאה נכונה. כאן המומחיות שלנו במנתחי Excel מותאמים אישית באה לידי ביטוי.
למה לבחור בנו
אנו מתמחים ב-Bitrix כבר למעלה מ-10 שנים. יישמנו עשרות אינטגרציות Excel להזמנות סיטונאיות. הפתרונות שלנו עוברים בדיקות עומס על קטלוגים עד 100,000 פריטים. אנו מבטיחים פעולה יציבה ותמיכה לאחר היישום. עם ניסיון של 10+ שנים ורקורד מוכח של פרויקטים מוצלחים, אנו מספקים פתרונות חזקים וניתנים להרחבה.
נעריך את הפרויקט שלכם תוך יום עסקים אחד. צרו קשר כדי לדון בפרטים. נכין הצעה מסחרית עם לוחות זמנים ועלויות מדויקים. הזמינו פיתוח של המודול. נכין הערכת עלות תוך יום.







