מודולי 1C-Bitrix מותאמים אישית: ארכיטקטורה, ORM, אירועים, Marketplace
עשיתם טעות—שיניתם את הליבה? אחרי עדכון הכל נשבר, ושנה לאחר מכן אף אחד לא זוכר מה שונה או למה. מצב מוכר? מודול מותאם אישית פותר את הבעיה הזו אחת ולתמיד. אנו מפתחים מודולים שלעולם לא נוגעים בליבה, קלים לעדכון ומתועדים היטב. הניסיון שלנו: למעלה מ-10 שנים בפיתוח 1C-Bitrix, עשרות פרויקטים מוצלחים בתעשיות שונות.
הפחתת עלויות התמיכה יכולה להגיע ל-40%, וההשקעה במודול מחזירה את עצמה תוך 3–6 חודשים. אנו מבטיחים איכות ועמידה בלוחות זמנים. צרו קשר להערכת הפרויקט שלכם—נכין הצעה מסחרית.
למה להימנע משינויים בליבה?
מודול מותאם אישית הוא לא רק אוסף קבצים. זהו פתרון ארכיטקטוני שחייב להיות עמיד לעדכונים, ניתן לתחזוקה ומאובטח. שאילתות SQL ישירות בקוד הן גישה מיושנת. Bitrix D7 ORM עדיף מבחינת אבטחה וגמישות: הוא מונע הזרקות SQL ומקל על שינוי מבנה הנתונים. אנו משתמשים בתבניות מודרניות: Repository, Service, Event-driven. מומחים מוסמכים עם ניסיון בכתיבת מודולים ל-Marketplace מבטיחים שהמודול שלכם יעבור מודרציה ויפעל ביציבות.
כיצד בנויה ארכיטקטורת המודול?
מודול 1C-Bitrix הוא תיקייה ב-/bitrix/modules/<vendor>.<modulename>/ עם מבנה מוגדר בהחלט. Bitrix משתמשת במוסכמת שמות <vendor>.<name>, כאשר vendor הוא השם הקצר של המפתח.
vendor.modulename/
├── install/
│ ├── index.php # Класс установщика (extends CModule)
│ ├── db/
│ │ └── mysql/
│ │ ├── install.sql # SQL для создания таблиц
│ │ └── uninstall.sql # SQL для удаления таблиц
│ └── files/ # Файлы, копируемые при установке
│ └── bitrix/
│ └── components/
├── lib/ # Классы в пространстве имён Vendor\Modulename\
│ ├── Repository.php
│ ├── Service.php
│ └── Orm/
│ └── EntityTable.php # ORM-сущность (D7)
├── lang/
│ ├── ru/
│ │ └── install/
│ │ └── index.php # Языковые метки
│ └── en/
├── options.php # Страница настроек модуля
└── include.php # Подключается при \Bitrix\Main\Loader::includeModule()
כיצד עובד ORM D7 במודול?
מודולים מודרניים משתמשים ב-Bitrix D7 ORM במקום שאילתות SQL ישירות. מחלקת הטבלה מוצהרת על ידי ירושה מ-vendor.modulename/ ├── install/ │ ├── index.php # Класс установщика (extends CModule) │ ├── db/ │ │ └── mysql/ │ │ ├── install.sql # SQL для создания таблиц │ │ └── uninstall.sql # SQL для удаления таблиц │ └── files/ # Файлы, копируемые при установке │ └── bitrix/ │ └── components/ ├── lib/ # Классы в пространстве имён Vendor\Modulename\ │ ├── Repository.php │ ├── Service.php │ └── Orm/ │ └── EntityTable.php # ORM-сущность (D7) ├── lang/ │ ├── ru/ │ │ └── install/ │ │ └── index.php # Языковые метки │ └── en/ ├── options.php # Страница настроек модуля └── include.php # Подключается при \Bitrix\Main\Loader::includeModule() :
namespace Vendor\Modulename\Orm;
use Bitrix\Main\ORM\Data\DataManager;
use Bitrix\Main\ORM\Fields\{IntegerField, StringField, DatetimeField, BooleanField};
class RequestTable extends DataManager
{
public static function getTableName(): string
{
return 'vendor_modulename_requests';
}
public static function getMap(): array
{
return [
new IntegerField('ID', ['primary' => true, 'autocomplete' => true]),
new StringField('NAME', ['required' => true, 'size' => 255]),
new StringField('EMAIL', ['size' => 255]),
new BooleanField('ACTIVE', ['default_value' => true]),
new DatetimeField('CREATED_AT'),
];
}
}שימוש:
// Получить записи
$result = RequestTable::getList([
'filter' => ['ACTIVE' => true],
'select' => ['ID', 'NAME', 'EMAIL'],
'order' => ['CREATED_AT' => 'DESC'],
]);
// Добавить запись
RequestTable::add([
'NAME' => 'Test',
'EMAIL' => '[email protected]'
]);ORM D7 מנקה ערכים אוטומטית, מונע הזרקות SQL, ותומך במטמון מתויג. זה חשוב לקטלוגים בעלי עומס גבוה.
אירועים והרישום שלהם
מודול יכול להירשם לאירועי פלטפורמה וליצור אירועים משלו. רישום של handler לאירוע:
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'sale', // модуль
'OnSaleOrderBeforeSaved', // событие
['\Vendor\Modulename\EventHandlers', 'onOrderBeforeSaved']
);
יצירת אירוע מותאם אישית להרחבה:
$event = new \Bitrix\Main\Event('vendor.modulename', 'OnRequestAdded', ['REQUEST' => $request]); $event->send(); אירועים מאפשרים שילוב המודול עם מערכות אחרות מבלי לשנות קוד ליבה. לדוגמה, ניתן להירשם לאירוע של הוספת הזמנה ולשלוח נתונים ל-1C דרך CommerceML.
כיצד פועלת התקנת המודול?
תהליך ההתקנה כולל מספר שלבים:
- העתקת המודול ל-
\Bitrix\Main\ORM\Data\DataManager. - כניסה לפאנל הניהול → "Marketplace" → "Installed Solutions".
- לחיצה על "Install". המערכת מריצה את סקריפט ההתקנה (יוצר טבלאות, מעתיק קבצים).
- הגדרת הרשאות גישה ופרמטרי מודול דרך
namespace Vendor\Modulename\Orm; use Bitrix\Main\ORM\Data\DataManager; use Bitrix\Main\ORM\Fields\{IntegerField, StringField, DatetimeField, BooleanField}; class RequestTable extends DataManager { public static function getTableName(): string { return 'vendor_modulename_requests'; } public static function getMap(): array { return [ new IntegerField('ID', ['primary' => true, 'autocomplete' => true]), new StringField('NAME', ['required' => true, 'size' => 255]), new StringField('EMAIL', ['size' => 255]), new BooleanField('ACTIVE', ['default_value' => true]), new DatetimeField('CREATED_AT'), ]; } }.
ממשק ניהולי
הסעיף בפאנל הניהול נרשם דרך פריט תפריט (// Получить записи $result = RequestTable::getList([ 'filter' => ['ACTIVE' => true], 'select' => ['ID', 'NAME', 'EMAIL'], 'order' => ['CREATED_AT' => 'DESC'], ]); // Добавить запись RequestTable::add(['NAME' => 'Test', 'EMAIL' => '[email protected]']); או אוטומטית דרך קובץ \Bitrix\Main\EventManager::getInstance()->addEventHandler( 'sale', // модуль 'OnSaleOrderBeforeSaved', // событие ['\Vendor\Modulename\EventHandlers', 'onOrderBeforeSaved'] ); בתיקיית המודול). דפי סעיף הניהול נמצאים ב-$event = new \Bitrix\Main\Event('vendor.modulename', 'OnRequestAdded', ['REQUEST' => $request]); $event->send(); . עבור פרויקטים מודרניים, ממשק הניהול מיושם כ-Inertia/React SPA או כדפי ניהול קלאסיים של Bitrix באמצעות /bitrix/modules/<vendor>.<name>/, options.php.
גרסאות ו-Marketplace
מודול יכול להיות מופץ דרך 1C-Bitrix Marketplace. הפרסום דורש: קוד ללא שגיאות, קבצי שפה ל-ru/en, תיעוד, תאימות לגרסאות PHP ופלטפורמה עדכניות.
תהליך הפיתוח
| שלב | פרטים |
|---|---|
| ניתוח | איסוף דרישות, אב-טיפוס, הערכת לוחות זמנים |
| ארכיטקטורה | עיצוב מבנה המודול, סכמת DB, API |
| פיתוח | כתיבת קוד, שילוב עם שירותים חיצוניים (YooKassa, CDEK, 1C), הגדרת מטמון |
| בדיקות | בדיקות יחידה, בדיקות אינטגרציה, בדיקות עומס |
| תיעוד | תיעוד API (PHPDoc), מדריך למשתמש |
| מסירה | קוד מקור, פרטי גישה, הדרכת מנהלים, תמיכה באחריות |
לוחות זמנים משוערים
| מורכבות המודול | תיאור | לוח זמנים |
|---|---|---|
| פשוט | 1–2 ישויות, ללא לוגיקה מורכבת | 1–2 שבועות |
| בינוני | 3–5 ישויות, אירועים, ממשק משתמש מותאם | 3–6 שבועות |
| מורכב | אינטגרציות, ריבוי אתרים, API | 2–4 חודשים |
מה כלול בפיתוח?
במסגרת הפרויקט, אנו מספקים:
- תיעוד ארכיטקטוני (דיאגרמות ER, תיאור API).
- קוד מקור עם הערות ו-PHPDoc.
- קבצי שפה ל-ru/en.
- גישה לריפוזיטורי ולמערכת ניהול המשימות.
- הדרכת מנהלים על תפעול המודול.
- תמיכה באחריות (תיקוני באגים) למשך חודש.
טעויות נפוצות במהלך פיתוח והתקנה
- הרשאות שגויות על תיקיית המודול (חייבות להיות 755).
- תלות חסרה (לדוגמה, מודול
/bitrix/menu.php). - שגיאות בסקריפטים של SQL—אינדקסים כפולים.
- שכחתם להוסיף agent למשימות רקע.
Agents הם מנגנון חזק נוסף: ניתן לתזמן ביצוע קוד. זה שימושי לסנכרון עם שירותים חיצוניים או לניקוי נתונים מיושנים.
קבלו ייעוץ—נראה לכם כיצד לפתור את המשימה שלכם בצורה אופטימלית ולחסוך בתקציב. למידע נוסף על הפלטפורמה, בקרו באתר הרשמי של 1C-Bitrix.

