תיעוד פרויקטי 1C-Bitrix: אינפובלוקים, מסד נתונים, אינטגרציות
קיבלתם פרויקט 1C-Bitrix עם מאות אינפובלוקים, עשרות אינטגרציות ורכיבים מותאמים אישית — ואף מסמך אחד. היום הראשון עובר על הנדסה לאחור: מזהה 17 הוא קטלוג המוצרים, מזהה 23 הוא מלאי. ללא תיעוד, כל שינוי מסכן את זמינות המערכת. אנו מתעדים את הפרויקט במלואו: מבדיקת נאותות ועד ליצירה אוטומטית של סכמות. 10 שנות ניסיון בפיתוח Bitrix, אחריות לעדכניות התיעוד. התוצאה היא מפת פרויקט מלאה המוכנה להעברה. אנו מקצרים את זמן ההתאקלמות משבועות לימים, ומפחיתים את עלויות התמיכה ב-50%.
מדוע תיעוד הוא לא מותרות אלא הכרח
בפרויקטים ללא תיעוד, כל עדכון הוא הגרלה. אינפובלוקים משנים את שמם ללא חישוב מחדש של קישורים, אינטגרציות נשברות עקב שינויי טוקנים, ומפתחים חדשים מבזבזים שבועות בלימוד הקוד. תיעוד מחזיר את עצמו תוך 2–3 חודשים על ידי האצת משימות שגרתיות: תיקון תבנית אורך 15 דקות במקום שעה, ואיתור שגיאה אורך יום במקום שעה.
כיצד לתעד אינפובלוקים
אינפובלוקים הם הלב של הפרויקט. התיעוד מתחיל בחילוץ אוטומטי של מטא-דאטה. סקריפט המבוסס על ORM אוסף מזהים, קודים ומאפיינים ומייצר קבצי Markdown. דוגמה:
// Скрипт генерации документации по инфоблокам $iblocks = \Bitrix\Iblock\IblockTable::getList([ 'select' => ['ID', 'NAME', 'CODE', 'IBLOCK_TYPE_ID', 'DESCRIPTION'], 'order' => ['IBLOCK_TYPE_ID' => 'ASC', 'NAME' => 'ASC'], ])->fetchAll(); foreach ($iblocks as $iblock) { $props = \Bitrix\Iblock\PropertyTable::getList([ 'filter' => ['IBLOCK_ID' => $iblock['ID']], 'select' => ['ID', 'NAME', 'CODE', 'PROPERTY_TYPE', 'USER_TYPE', 'LINK_IBLOCK_ID'], 'order' => ['SORT' => 'ASC'], ])->fetchAll(); // Генерируем Markdown-страницу для инфоблока echo "## {$iblock['NAME']} (ID: {$iblock['ID']}, CODE: {$iblock['CODE']})\n"; // ... } התוצאה: טבלאות מאפיינים במאגר git, המתעדכנות בעת פריסה. דוגמה לתיעוד אינפובלוק:
| קוד | שם | סוג | הערות |
|---|---|---|---|
| VENDOR_CODE | מק"ט | S (מחרוזת) | חובה, ייחודי |
| BRAND | מותג | E (קישור) | → אינפובלוק מזהה 8 (מותגים) |
| WEIGHT | משקל (גרם) | N (מספר) | לחישוב משלוח |
| IMAGES | תמונות נוספות | F (קובץ) | מרובה |
עבור קטלוגים של 10,000+ פריטים, אנו מוסיפים אינדקסים על // Скрипт генерации документации по инфоблокам $iblocks = \Bitrix\Iblock\IblockTable::getList([ 'select' => ['ID', 'NAME', 'CODE', 'IBLOCK_TYPE_ID', 'DESCRIPTION'], 'order' => ['IBLOCK_TYPE_ID' => 'ASC', 'NAME' => 'ASC'], ])->fetchAll(); foreach ($iblocks as $iblock) { $props = \Bitrix\Iblock\PropertyTable::getList([ 'filter' => ['IBLOCK_ID' => $iblock['ID']], 'select' => ['ID', 'NAME', 'CODE', 'PROPERTY_TYPE', 'USER_TYPE', 'LINK_IBLOCK_ID'], 'order' => ['SORT' => 'ASC'], ])->fetchAll(); // Генерируем Markdown-страницу для инфоблока echo "## {$iblock['NAME']} (ID: {$iblock['ID']}, CODE: {$iblock['CODE']})\n"; // ... } ו-IBLOCK_ELEMENT.IBLOCK_ID — ללא תיעוד קל לפספס אופטימיזציה כזו.
מה כלול בתיעוד אינטגרציות
אינטגרציות הן נקודות כשל. מפת האינטגרציות כוללת:
- Bitrix24 CRM ↔ אתר: REST API + webhooks, דו-כיווני, לידים מטפסים → B24, סטטוסי הזמנות B24 → אתר. טוקנים ב-
IBLOCK_ELEMENT_PROPERTY.VALUE, משתנה/bitrix/.settings_extra.php. עדכון כל 15 דקות (סוכןB24_WEBHOOK_URL). לוגים:\Integration\B24Agent::sync(). - 1C:Enterprise ↔ אתר: CommerceML 2.0, מוצרים ומלאי מ-1C, הזמנות ל-1C. לוח זמנים — כל שעתיים. עבור יותר מ-10,000 פריטים, ההחלפה אורכת מעל 30 דקות — הוגדר פיצול לפי קבצים.
עבור כל אינטגרציה, אנו מציינים סוג, כיוון, מיקום טוקן, לוח זמנים ולוגים. פרטים נוספים בתיעוד Bitrix.
תיעוד מסד נתונים מותאם אישית
עבור טבלאות מותאמות אישית: דיאגרמת ERD ותיאור טקסטואלי. דוגמה:
| שדה | סוג | תיאור |
|---|---|---|
| ID | INT AUTO_INCREMENT | מפתח ראשי |
| SPECIALIST_ID | INT | מפתח זר → b_user.ID |
| SERVICE_ID | INT | מפתח זר → b_iblock_element.ID (IB 12) |
| DATE_FROM | DATETIME | תחילת משבצת |
| DATE_TO | DATETIME | סוף משבצת |
| STATUS | ENUM('free','booked','blocked') | סטטוס נוכחי |
| BOOKING_ID | INT NULL | מפתח זר → bookings.ID כאשר STATUS=booked |
אינדקסים: /local/logs/b24_integration.log, (SPECIALIST_ID, DATE_FROM). נוצר על ידי מודול (STATUS) ב-local.booking.
כיצד לתעד רכיבים
עבור רכיבים מותאמים אישית: קובץ install/db/mysql/install.sql עם תיאור פרמטרים ו-Markdown נפרד עם דוגמאות:
<?$APPLICATION->IncludeComponent('local:catalog.filter.extended', '', [ 'IBLOCK_ID' => 5, 'PRICE_TYPES' => [1, 2], 'USE_RANGE' => true, ]);?> פרמטרי רכיב:
| פרמטר | סוג | ברירת מחדל | תיאור |
|---|---|---|---|
| IBLOCK_ID | int | — | מזהה אינפובלוק קטלוג (חובה) |
| PRICE_TYPES | array | [1] | מזהי סוגי מחיר לסינון |
| USE_RANGE | bool | true | הפעלת סינון טווח מחירים |
| AJAX_MODE | bool | true | עדכון ללא רענון עמוד |
מגבלות ידועות: אינו עובד עם SKU.
כיצד אנו מתעדים פרויקט ב-5 שלבים
- בדיקת נאותות — מלאי של אינפובלוקים, טבלאות, מודולים, אינטגרציות. זיהוי אזורים לא מתועדים.
- יצירה אוטומטית של סכמות — סקריפטים מחלצים מבנה ממסד הנתונים ומייצרים Markdown.
- כתיבת מסמכים — תיאור אינפובלוקים, אינטגרציות, רכיבים, מסד נתונים. הוספת דוגמאות ומגבלות.
- דיאגרמות — ERD ודיאגרמות אינטראקציה ב-PlantUML או Mermaid.
- הגדרת תהליך — כללי עדכון, תבניות PR, יצירה אוטומטית בעת פריסה.
שמירה על עדכניות התיעוד
תיעוד ללא תהליך עדכון הופך למיושן. כללים:
- שינוי אינפובלוק → עדכון קובץ האינפובלוק באותו PR.
- הוספת טבלה → תיאור ב-
component.php. - אינטגרציה חדשה → עדכון המפה.
- פריסה → הפעלת יצירה אוטומטית של סכמות.
שלבי עבודה ולוחות זמנים
| שלב | תוכן | משך |
|---|---|---|
| בדיקת נאותות לפרויקט | מלאי של אינפובלוקים, טבלאות, מודולים | 2–3 ימים |
| יצירה אוטומטית של סכמות | סקריפטים לחילוץ מבנה ממסד הנתונים | 1–2 ימים |
| כתיבת מסמכים מרכזיים | אינפובלוקים, אינטגרציות, רכיבים | 3–7 ימים |
| דיאגרמות | ERD, סכמות אינטגרציה | 2–3 ימים |
| הגדרת תהליך | כללי עדכון, תבניות | יום אחד |
סה"כ: 2–4 שבועות לפרויקט בגודל בינוני. קבלו ייעוץ — צרו קשר, ונכין תוכנית אישית. החיסכון בזמן תמיכה ישלם עבור התיעוד תוך 2–3 חודשים. השאירו פנייה באתר — נעריך את הפרויקט שלכם.







