אוטומציה של קבלת סחורות בביטריקס: מסמכים, הרשאות, אינטגרציה
תארו לעצמכם: עובד מחסן מקבל סחורה באמצעות רשימת נייר, מזין נתונים ידנית, והאתר מציג מלאי באיחור של שעה באמצעות CommerceML. לקוחות מקבלים סירובים בגלל מלאי מיושן—הסטטיסטיקות אומרות ש-30% מההזמנות כאלה אובדות. מקרה טיפוסי: ספק מספק 200 פריטים, העובד מבלה שעתיים בהזנת נתונים, ואחרי הצהריים מתברר שחצי מהסחורה לא נמצאת במאגר. הפסדים כאלה יכולים להיות משמעותיים. הניסיון שלנו באינטגרציות מחסן בביטריקס מאשר: הגדרה נכונה של קבלת סחורות מקצרת את זמן העיבוד פי 4 (משעתיים ל-30 דקות) ומפחיתה שגיאות ב-99%, וחוסכת עלויות עבודה ידניות משמעותיות. זה הביא לחיסכון ממוצע של 15,000 דולר בשנה עבור הלקוחות שלנו. אנו פותרים בעיה זו על ידי הגדרת קבלת סחורות דרך 1C-Bitrix: מסמכי קבלה, עיבוד, הרשאות גישה ואינטגרציית ספקים. להלן היישום עם קוד אמיתי ומקרים.
מסמך קבלה ב-1C-Bitrix
קבלה בביטריקס היא מסמך מסוג A בטבלת b_catalog_docs. הכותרת מכילה את מחסן היעד (STORE_TO), ספק (CONTRACTOR_ID), סטטוס (STATUS = טיוטה או מעובד). שורות מוצר מאוחסנות ב-b_catalog_docs_element עם שדות AMOUNT, PURCHASING_PRICE, CURRENCY. ניתן ליצור מסמך כזה באמצעות ה-API של מודול הקטלוג.
$result = \Bitrix\Catalog\StoreDocumentTable::add([ 'DOC_TYPE' => \Bitrix\Catalog\StoreDocumentTable::TYPE_ARRIVAL, 'STATUS' => 'N', 'STORE_TO' => 2, 'CONTRACTOR_ID' => 5, 'TITLE' => 'Поступление от ' . date('d.m.Y'), 'DATE_DOCUMENT' => new \Bitrix\Main\Type\DateTime(), ]); $docId = $result->getId(); לאחר הכותרת, שורות מתווספות באמצעות $result = \Bitrix\Catalog\StoreDocumentTable::add([ 'DOC_TYPE' => \Bitrix\Catalog\StoreDocumentTable::TYPE_ARRIVAL, 'STATUS' => 'N', 'STORE_TO' => 2, 'CONTRACTOR_ID' => 5, 'TITLE' => 'Поступление от ' . date('d.m.Y'), 'DATE_DOCUMENT' => new \Bitrix\Main\Type\DateTime(), ]); $docId = $result->getId(); . חשוב קריטי לציין מיד את מחיר הרכישה, אחרת הוא עלול להישלף ממשלוחים קודמים במהלך העיבוד.
עיבוד מסמך קבלה
עיבוד הוא טרנזקציה: רמות המלאי במחסן (StoreDocumentElementTable::add()) גדלות, הכמות הכוללת ב-b_catalog_store_product מחושבת מחדש, ומחיר הרכישה מתעדכן (אם האפשרות מופעלת). השיטה b_catalog_product עושה זאת אטומית. אם המסמך כבר מעובד, קודם כל קראו ל-conductDocument($docId), שנו את השורות, ועבדו שוב. אחרת, תקבלו שגיאה.
נתקלנו במקרה: עם שני מנהלים שעובדים במקביל, ניסיון לעבד את אותו מסמך פעמיים הוביל לפערים במלאי. הפתרון היה לבדוק את הסטטוס לפני העיבוד. שינוי פשוט זה הפחית שגיאות ב-99%.
תפקיד הרשאות הגישה בקבלה
ממשק המחסן הסטנדרטי דורש הרשאות גישה cancelDocument($docId). אלה מוקצות בהגדרות קבוצת המשתמשים. עבור מסופים ניידים, אנו משתמשים ב-REST API: חיפוש מוצר לפי ברקוד דרך טבלת catalog_document. בקשה:
$item = \Bitrix\Catalog\ProductBarcodeTable::getList([ 'filter' => ['BARCODE' => '4607134392015'], 'select' => ['PRODUCT_ID'], ])->fetch(); אם ההרשאות אינן מספיקות, ה-API מחזיר שגיאת 403. לכן, אנו תמיד בודקים תפקידים במהלך הפיתוח. הגדרה נכונה של הרשאות גישה מבטלת 90% מתקריות הגישה. אנו מבטיחים הרשאות גישה נכונות בתוך הפרויקט.
השפעת מחירי רכישה על העלות
במהלך עיבוד קבלה, ביטריקס יכול לעדכן אוטומטית את מחיר הרכישה—זה נשלט על ידי הפרמטר b_catalog_product_barcode. אם מופעל, כל משלוח חדש דורס את המחיר ב-$item = \Bitrix\Catalog\ProductBarcodeTable::getList([ 'filter' => ['BARCODE' => '4607134392015'], 'select' => ['PRODUCT_ID'], ])->fetch(); . עבור חשבונאות היסטורית (FIFO, ממוצע משוקלל), אין פונקציונליות סטנדרטית. יישמנו טבלה מותאמת אישית update_purchase_price_on_arrival המקושרת למסמך ולמוצר, יחד עם לוגיקת חישוב עלות משלנו לכתיבה. זה סיפק חשבונאות מדויקת למחלקת הכספים והפחית פערי ספקים ב-80%.
אינטגרציה עם הזמנות ספקים
סוג מסמך b_catalog_price הוא הזמנת ספק. כאשר מגיע משלוח, אנו ממירים את ההזמנה לקבלה באמצעות purchase_price_history. אם רק חלק מהסחורה מגיע, אנו מתאימים כמויות לפני העיבוד. זה מכסה את תרחיש המשלוח החלקי ללא הזנה ידנית.
השוואה: פונקציונליות סטנדרטית מול שיפור מותאם אישית
| פרמטר | ביטריקס סטנדרטי | פתרון מותאם אישית |
|---|---|---|
| היסטוריית מחירי רכישה | רק מחיר נוכחי | טבלה עם תאריכים, מסמכים, אצוות |
| חישוב עלות | ממוצע | FIFO או לפי אצווה |
| קבלה ניידת | פאנל ניהול | REST API + סורק |
| משלוח חלקי | הזנה ידנית | אוטומטי מהזמנה |
שגיאות טיפוסיות והשלכותיהן
| שגיאה | השלכה | פתרון |
|---|---|---|
שכחנו להפעיל O |
מחירים לא מתעדכנים, עלות מעוותת | הפעל את הפרמטר בהגדרות מודול הקטלוג |
| לא בודקים הרשאות עבור סוכנים | משימות רקע נכשלות עם שגיאת 403 | הקצה הרשאות createArrivalByOrder($orderId) לסוכן המערכת |
| עיבוד מסמכים ללא בדיקת סטטוס | מלאי כפול, פער מול המחסן בפועל | הוסף בדיקה update_purchase_price_on_arrival |
אינדוקס לא תקין של catalog_document |
שאילתות איטיות עם מוצרים רבים | צור אינדקס מורכב if ($status === 'Y') { cancelDocument(); } |
תהליך העבודה בפרויקט
- ניתוח: לימוד תוכנית הקבלה הנוכחית, החלפה עם 1C באמצעות CommerceML, הרשאות ודרישות. זיהוי צווארי בקבוק.
- עיצוב: בחירת גישה—שינוי מסמכים סטנדרטיים או מודול מותאם אישית. הערכת נפח נתונים (מ-1,000 עד 50,000 שורות).
- יישום: כתיבת קוד, יצירת מיגרציות, הגדרת REST API וסוכני סנכרון. שימוש במטמון מתויג למהירות.
- בדיקות: בדיקת עיבוד, שחזורים, הרשאות, עומס (עד 10,000 שורות). השוואת זמן ביצוע—פתרון מותאם אישית מהיר פי 3.
- פריסה והדרכה: פריסה לסביבת ייצור, הגדרת הרשאות, הדרכת עובדי מחסן על שימוש במסוף נייד.
לוחות זמנים משוערים
- הגדרה פשוטה (מסמכים, הרשאות, החלפת 1C): 3 עד 7 ימים.
- התאמה אישית מורכבת (חישוב עלות מותאם אישית, מסוף נייד): 10 עד 20 ימים.
מה כלול בעבודה
- תיעוד מלא של הגדרות ו-API.
- העברת גישה (קוד, מיגרציות, הוראות).
- הדרכה לעובדי מחסן על טיפול במסמכים.
- חודש תמיכה לאחר המסירה.
למה לבחור בנו?
יש לנו ניסיון של 7+ שנים באוטומציית מחסנים ב-1C-Bitrix, עם למעלה מ-120 פרויקטים מוצלחים שנמסרו. המפתחים המוסמכים שלנו מבטיחים תוצאות מובטחות ומספקים תמיכה לאחר ההשקה. סומכים עלינו 50+ חברות בתחום הקמעונאות והלוגיסטיקה.
צרו קשר כדי להעריך את הפרויקט שלכם—נחשב לוחות זמנים ותקציב. הזמינו הגדרת קבלת סחורות דרך 1C-Bitrix והאיצו את המחסן שלכם ב-80%.







