אופטימיזציה של ייבוא כמויות נתונים גדולות ב-1C-Bitrix

החלפה עם 1C נמשכת שעות ומאטה את עבודת האתר? אנו מגדירים אופטימיזציה של ייבוא 1C-Bitrix במפתח: מקצרים את זמן הייצוא פי כמה ומסירים תקיעות בקטלוג. נדון במשימה — נחזור עם הערכה ותוכנית.
השירותים שאנו מציעים
מציג 1 מתוך 1כל 1626 השירותים
אופטימיזציה של ייבוא כמויות נתונים גדולות ב-1C-Bitrix
בינוני
~1-2 שבועות

הכישורים שלנו:

שאלות נפוצות

אופטימיזציה של ייבוא 1C-Bitrix: היכן הייצוא נשבר

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

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

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

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

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

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

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

מה משתנה לאחר אופטימיזציה של החלפת נתונים עם 1С

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

החלפה אינקרמנטלית משנה את ההיגיון: 1С מוסרת רק אובייקטים שהשתנו, והשרת מיישם אותם ממוקד, בלי לבנות מחדש את הקטלוג כולו.

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

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

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

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

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

זה מה שנותן זמן ייבוא צפוי: ההחלפה מפסיקה להיות אירוע שכל הצוות ממתין לו, והופכת לתהליך רקע עם נוהל ברור.

דרכי סנכרון: טעינה באצוות, אינקרמנט, תורים

סנכרון עם 1С אינו "הפעלת סינכרון", אלא בחירת מצב בהתאם לגודל הקטלוג ותדירות העריכות. ייצוא מלא קורא מחדש את כל המאגר וכותב מחדש כרטיסים בשלמותם: בעשרות אלפי פריטים מדובר בשעות עבודה ועומס גבוה על מסד הנתונים.

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

טעינה באצוות פותרת בעיה אחרת — לא "מה לטעון", אלא "איך לא להפיל את השרת". הנתונים מגיעים במנות עם תיעוד התקדמות: אם סשן נפסק באמצע, הבא אחריו מתחיל מהמנה המוצלחת האחרונה, ולא מאפס.

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

מצב מתי מתאים מגבלות
ייצוא מלא אכלוס ראשוני, עדכונים נדירים ארוך, עומס גבוה, השבתת הקטלוג למשך הסשן
ייבוא אינקרמנטלי עריכות נקודתיות תכופות של מחירים, מלאי, מאפיינים נדרשים סימני שינוי וטיפול נכון במחיקות
טעינה באצוות קטלוגים גדולים, ערוץ לא יציב דורש שמירת התקדמות וכתיבה אידמפוטנטית
תורי סנכרון תדירות גבוהה, מספר יעדים מורכב יותר בתמיכה, נדרש ניטור עומס התור

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

כיצד אנו מיישמים אופטימיזציה של ייבוא: שלבי העבודה

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

לאחר מכן מתכננים את סכימת הייבוא הרצויה ומגדירים את הייצוא כך שהחלפת הנתונים תתבצע במנות ולא תחסום את עבודת האתר.

  1. אודיט של החלפת הנתונים. מתעדים את המדדים הנוכחיים: משך החלפת הנתונים המלאה והחלקית, נפח הנתונים המועברים, נקודות הכשל. אוספים מפת תלויות בין ספרי העזר, המוצרים, המחירים והמלאי.
  2. תכנון סכימת הייבוא. קובעים מה לטעון באופן אינקרמנטלי ומה — במחזור מלא, כיצד לפצל את הזרימה למנות, היכן לשמור תוצאות ביניים במטמון.
  3. הגדרת הייצוא בצד 1С. כותבים מחדש את השליפות כך שהמקור יחזיר רק רשומות שהשתנו, ולא את הקטלוג כולו. מסירים פניות מיותרות למסד הנתונים בתוך הלולאה.
  4. אופטימיזציה של העיבוד באתר. בונים מחדש שאילתות, אינדקסים וסדר הפעולות כך שהייבוא לא יתחרה עם המבקרים הפעילים על משאבים.
  5. בדיקת שלמות. משווים סכומי ביקורת ומספר רשומות לפני ואחרי החלפת הנתונים, מאתרים אי-התאמות במחירים, במלאי ובשיוך למדורים.
  6. תקנון החלפת הנתונים. מתארים את לוח הזמנים, סדר ההרצה, ההתנהגות בעת כשל ונקודות השחזור — כדי שהתמיכה תוכל לשחזר את התהליך בלעדינו.
  7. מסירה וליווי. מוסרים תיעוד, מקיימים הדרכה לצוות הלקוח ונשארים בקשר בתקופת ההרצות העצמאיות הראשונות.

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

מדיניות גישה, תפקידים ומבנה החלפת נתונים

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

  • חשבון החלפה נפרד — משתמש שירות עם הרשאות רק לאינפובלוקים ולמקטעי הקטלוג הנדרשים, ללא גישה להזמנות, לתשלומים ולהגדרות. חשיפת מפתח ההחלפה אינה חושפת נתוני לקוחות.
  • תפקידים לפי תחומי אחריות — מנהל תוכן עורך תיאורים, אך אינו נוגע במחירים ובמלאי; משתמש אינטגרציה כותב רק לשדות שמנוהלים על ידי 1С. חפיפת הרשאות היא הסיבה העיקרית לכך שעריכה ידנית נמחקת בהעברה הבאה.
  • הפרדת זרמים לפי סוגי נתונים — פריטי מלאי, מחירים, מלאי וקבלנים עוברים במשימות נפרדות עם לוח זמנים משלהן. העברה כבדה של הקטלוג אינה גוררת אחריה חישוב מחדש של המלאי.
  • בידוד הייבוא מהחזית — ההחלפה כותבת למקטעי חוצץ, והנתונים מגיעים לאתר רק לאחר בדיקת שלמות. המבקר לעולם אינו רואה את הקטלוג במצב ביניים.
  • הגבלת תדירות וחלונות החלפה — המשימות מופעלות בשעות עומס נמוך, עם בקרת חפיפות: הפעלה חוזרת אינה מתחילה עד שהקודמת הסתיימה.
  • תיעוד ביומן לכל זרם — ניתן לראות איזו החלפה, מתי וכמה רשומות עיבדה, והיכן נכשלה. ניתוח תקלה אורך דקות, ולא חיפוש ביומן משותף.

מבנה כזה מסיר את סוג התקלות העיקרי: ההחלפה מפסיקה להיות מקור לירידת ביצועי האתר. בהמשך נבחן כיצד זה משתלב בתקנון התמיכה ומה נשאר בצד של 1С.

מה הלקוח מקבל לידיו לאחר העבודה

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

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

לצד זאת — נוהל הייצוא: לוח זמנים ותנאי הפעלה, סדר סנכרון מלא וחלקי, מה לעשות בעת אי-התאמה בכמויות וכיצד לבצע שחזור של ריצה כושלת.

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

כל זה — בקונטור שלכם, עם גישה של המומחים שלכם. אנחנו נשארים בתמיכה, אך המסירה בנויה כך שהצוות מטפל בפעולות שגרתיות בעצמו, ופונה אלינו לפיתוח, ולא לכל תקלה.

במה שונה ייבוא אינקרמנטלי מייבוא מלא?

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

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

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

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

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

מצב אינקרמנטלי דורש משמעת: צריך לתעד באופן אמין את נקודת ההתחלה, אחרת השינויים יאבדו בשקט, והפער יצטבר במשך שבועות. לעומת זאת, הוא בטוח יותר עבור מסד הנתונים — טרנזקציות קצרות אינן מחזיקות נעילות ואינן מפילות את האתר תחת עומס.

בפועל בוחרים לא "או-או", אלא שילוב: סנכרון אינקרמנטלי לפי לוח זמנים למחירים, מלאי וסטטוסים, וייצוא מלא — בלילות או פעם בשבוע כביטוח מפני פערים שהצטברו.

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

מקרה בוחן: האצנו את חילופי הקטלוג עם 1С פי כמה

מה היה לפני

הלקוח — מפיץ עם קטלוג של כמה עשרות אלפי פריטים, חילופים עם 1С ב-1C-Bitrix הופעלו לפי לוח זמנים ולעיתים לא הספיקו להסתיים עד הבוקר.

ייצוא מלא ארך כ-4 שעות, סוכן החילופים נפל באופן קבוע בגלל timeout בשלב חישוב המחירים והמלאי מחדש, והמנהלים התחילו את היום בבדיקה ידנית: חלק מהמוצרים היו תקועים עם מלאי קודם, וחלק — עם מחירים לא מעודכנים.

הגרוע מכל היה שהכשל לא תמיד נראה מיד: החילופים הסתיימו "בירוק", אבל הנתונים בקטלוג נשארו חלקיים.

מה שינינו

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

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

מה קרה בסוף

הייצוא המלא הצטמצם מ-4 שעות ל-40-50 דקות, חילופים אינקרמנטליים מסתיימים בתוך 5-7 דקות. סוג הכשל "החילופים נפלו בגלל timeout ואף אחד לא שם לב" נעלם: כעת כל שלב מתועד בלוג, וחילופים שלא הושלמו לא משאירים את הקטלוג במצב חלקי — השינויים מיושמים באופן שלם.

העומס על מסד הנתונים בזמן החילופים ירד עד כדי כך שהקטלוג הפסיק "לגמגם" עבור המבקרים בשעות הבוקר.

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

ספקות טכניים נפוצים לגבי ייבוא מ-1С

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

תאימות 1С ו-Bitrix: האם יהיה צורך לכתוב מחדש את ההעברה?

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

מה עם העומס על האתר בזמן הייבוא?

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

האם ניתן לשחזר ייבוא אם הנתונים הגיעו עם שגיאה?

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

עד כמה מאובטחת ההעברה בין 1С לאתר?

הערוץ סגור, ההרשאות מופרדות לפי תפקידים, ההעברה מתבצעת בחיבור מאובטח עם אימות מקור. פרטי הגישה של ההעברה נשמרים בנפרד מאלה של המשתמשים ואינם נכנסים ללוגים.

אם שאלתכם בנוגע לתאימות, עומס, שחזור או אבטחת ההעברה לא נענתה — תארו את המשימה, ונחזור עם הערכה ותוכנית.

בואו נדון במשימת האופטימיזציה של הייבוא שלכם

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

כדאי לצרף את מה שכבר יש בהישג יד:

  • ייצוא מ-1С או דוגמה של קובץ החלפה — המבנה חשוב יותר מההיקף;
  • הזמן הנוכחי של ייבוא מלא ובאיזה שלב הוא "נתקע";
  • לוג או דוח שגיאות, אם הייבוא נופל או מאבד פריטים;
  • תרשים הקשרים: מוצרים, הצעות מסחריות, מחירים, מלאי, מחסנים;
  • תיאור סביבת השרת — היכן רצים האתר והבסיס נתונים;
  • רשימת האינטגרציות שתלויות בקטלוג: מרקטפלייסים, CRM, חיפוש, אנליטיקה;
  • מה קריטי מבחינת לוחות זמנים: חלון לילה, השבתה תחת עומס, תקנון עדכון.

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

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

אם נוח יותר להתחיל בשיחה — נדון במשימה בקול, המהנדס ישאל שאלות הבהרה לגבי סכמת ההחלפה שלכם. ייעוץ מהנדס כאן נועד לא לבזבז זמן על אפשרויות שהובילו מראש למבוי סתום.