Користувацькі модулі 1С-Бітрікс: архітектура, ORM, події, Marketplace
Допустили помилку — змінили ядро? Після оновлення все зламалося, а через рік ніхто не пам'ятає, що і навіщо правили. Знайома ситуація? Користувацький модуль вирішує цю проблему раз і назавжди. Ми розробляємо модулі, які не чіпають ядро, легко оновлюються і документуються. Наш досвід — понад 10 років у розробці на 1С-Бітрікс, десятки успішних проєктів для різних галузей.
Економія на підтримці сягає 40%, а інвестиції в модуль окупаються за 3–6 місяців. Гарантуємо якість і дотримання термінів. Зв'яжіться з нами для оцінки вашого проєкту — ми підготуємо комерційну пропозицію.
Чому варто відмовитися від правки ядра?
Користувацький модуль — це не просто набір файлів. Це архітектурне рішення, яке має бути стійким до оновлень, зручним у підтримці та безпечним. Прямі SQL-запити в коді — застарілий підхід. ORM D7 Бітрікс кращий з точки зору безпеки та гнучкості: він запобігає SQL-ін'єкціям і дозволяє легко змінювати структуру даних. Ми використовуємо сучасні патерни: Repository, Service, Event-driven. Сертифіковані спеціалісти з досвідом написання модулів для Marketplace гарантують, що ваш модуль пройде модерацію і працюватиме стабільно.
Як влаштована архітектура модуля?
Модуль 1С-Бітрікс — це директорія в /bitrix/modules/<vendor>.<modulename>/ зі строго визначеною структурою. Бітрікс використовує угоду про іменування: <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 у модулі?
Сучасні модулі використовують ORM Бітрікс D7 замість прямих SQL-запитів. Клас таблиці оголошується через наслідування \Bitrix\Main\ORM\Data\DataManager:
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-ін'єкціям, і підтримує теговане кешування. Це важливо для високонавантажених каталогів.
Події та їх реєстрація
Модуль може підписуватися на події платформи та генерувати власні. Реєстрація обробника події:
\Bitrix\Main\EventManager::getInstance()->addEventHandler( 'sale', // модуль 'OnSaleOrderBeforeSaved', // подія ['\Vendor\Modulename\EventHandlers', 'onOrderBeforeSaved'] ); Генерація власної події для розширюваності:
$event = new \Bitrix\Main\Event('vendor.modulename', 'OnRequestAdded', ['REQUEST' => $request]); $event->send(); Події дозволяють інтегрувати модуль з іншими системами без зміни коду ядра. Наприклад, ви можете підписатися на подію додавання замовлення і відправити дані в 1С через CommerceML.
Як відбувається встановлення модуля?
Процес встановлення включає кілька кроків:
- Копіювання модуля в
/bitrix/modules/<vendor>.<name>/. - Перехід в адмінку → «Marketplace» → «Встановлені рішення».
- Натискання «Встановити». Система виконує скрипт інсталятора (створення таблиць, копіювання файлів).
- Налаштування прав доступу та параметрів модуля через
options.php.
Адміністративний інтерфейс
Розділ в адміністративній панелі реєструється через пункт меню (/bitrix/menu.php або автоматично через файл menu.php в папці модуля). Сторінки адміністративного розділу розташовуються в /bitrix/admin/vendor_modulename_*.php. Для сучасних проєктів адміністративний інтерфейс реалізується як Inertia/React SPA або як класичні бітріксові адміністративні сторінки з використанням CAdminList, CAdminForm.
Версіонування та Marketplace
Модуль може поширюватися через Marketplace 1С-Бітрікс. Для публікації потрібно: код без помилок, мовні файли для ru/en, документація, сумісність з актуальними версіями PHP та платформи.
Процес розробки
| Етап | Деталі |
|---|---|
| Аналітика | Збір вимог, прототипування, оцінка термінів |
| Архітектура | Проєктування структури модуля, схеми БД, API |
| Розробка | Написання коду, інтеграція з зовнішніми сервісами (ЮKassa, СДЕК, 1С), налаштування кешування |
| Тестування | Юніт-тести, інтеграційне тестування, навантажувальне тестування |
| Документація | API-документація (PHPDoc), інструкція користувача |
| Передача | Вихідний код, доступи, навчання адміністраторів, гарантійна підтримка |
Орієнтовні терміни
| Складність модуля | Опис | Термін |
|---|---|---|
| Простий | 1–2 сутності, без складної логіки | 1–2 тижні |
| Середній | 3–5 сутностей, події, кастомний UI | 3–6 тижнів |
| Складний | Інтеграції, багатосайтовість, API | 2–4 місяці |
Що входить у розробку?
У рамках проєкту ми надаємо:
- Архітектурну документацію (ER-діаграми, опис API).
- Вихідний код з коментарями та PHPDoc.
- Мовні файли для ru/en.
- Доступи до репозиторію та системи керування завданнями.
- Навчання адміністраторів роботі з модулем.
- Гарантійну підтримку (виправлення помилок) на 1 місяць.
Типові помилки при розробці та встановленні
- Неправильні права на папку модуля (має бути 755).
- Відсутність обов'язкових залежностей (наприклад, модуль
sale). - Помилки в SQL-скриптах — дублювання індексів.
- Забули додати agent для фонових завдань.
Агенти — ще один потужний механізм: ви можете запланувати виконання коду за розкладом. Це корисно для синхронізації з зовнішніми сервісами або очищення застарілих даних.
Отримайте консультацію — ми розповімо, як вирішити вашу задачу оптимально та заощадити бюджет. Докладніше про платформу можна дізнатися на офіційному сайті 1С-Бітрікс.







