Собственный модуль в Битрикс — правильное место для бизнес-логики, которую нужно переиспользовать на разных сайтах или поддерживать отдельно от шаблона. В отличие от кода в /local/, модуль можно устанавливать, деинсталлировать и обновлять через стандартный механизм Битрикс.
Структура модуля
/local/modules/mycompany.mymodule/
install/
index.php ← класс установки/удаления
version.php ← версия и дата
lib/
myservice.php ← бизнес-логика (PSR-4 через Bitrix autoload)
include.php ← точка входа модуля
.settings.php ← настройки (опционально)
lang/
ru/
lib/myservice.php ← языковые константы
install/version.php
"1.0.0",
"VERSION_DATE" => "2026-03-01 00:00:00",
];
install/index.php — установщик модуля
MODULE_VERSION = $arModuleVersion["VERSION"];
$this->MODULE_VERSION_DATE = $arModuleVersion["VERSION_DATE"];
}
public function DoInstall(): bool
{
ModuleManager::registerModule($this->MODULE_ID);
$this->InstallDB();
$this->InstallEvents();
return true;
}
public function DoUninstall(): bool
{
$this->UnInstallEvents();
$this->UnInstallDB();
ModuleManager::unRegisterModule($this->MODULE_ID);
return true;
}
public function InstallDB(): void
{
// создание таблиц при необходимости
}
public function InstallEvents(): void
{
// регистрация обработчиков событий
}
public function UnInstallDB(): void {}
public function UnInstallEvents(): void {}
}
include.php — точка входа
"lib/myservice.php", ]);
lib/myservice.php — бизнес-логика
addError(new Error("ID должен быть положительным"));
return $result;
}
// логика...
$result->setData(["id" => $id, "status" => "ok"]);
return $result;
}
}
Использование модуля в компонентах
isSuccess()) {
$data = $result->getData();
} else {
$errors = $result->getErrorMessages();
}
Установка модуля
После размещения файлов в /local/modules/mycompany.mymodule/ модуль появится в административной панели: Рабочий стол → Marketplace → Установленные решения. Нажмите «Установить».
Или через PHP:
DoInstall();
Итог
Собственный модуль — это правильная архитектура для переиспользуемого кода в Битрикс. Следуйте соглашению об именовании vendor.module, используйте Bitrix\Main\Result для возврата результатов и регистрируйте классы через Loader::registerAutoLoadClasses.
