Кастомные страницы в 1С-Битрикс: D7-контроллеры и маршрутизация

Когда стандартных страниц недостаточно: реальная проблема На одном проекте потребовалось создать интерфейс для управления партнёрскими программами с гибкими правилами. Стандартные компоненты Битрикс не подходили — требовалась сложная бизнес-логика с кастомными правами доступа и интеграцией с внеш
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Кастомные страницы в 1С-Битрикс: D7-контроллеры и маршрутизация
Средний
~1-2 недели

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1454
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    1018
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    760
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    879
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    803
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1162

Когда стандартных страниц недостаточно: реальная проблема

На одном проекте потребовалось создать интерфейс для управления партнёрскими программами с гибкими правилами. Стандартные компоненты Битрикс не подходили — требовалась сложная бизнес-логика с кастомными правами доступа и интеграцией с внешними API. Ручное создание admin-файлов привело бы к дублированию кода и проблемам с обновлениями. Мы выбрали подход на D7 — контроллеры с маршрутизацией, встроенной защитой от CSRF и модульной архитектурой. Разработка заняла 5 дней вместо ожидаемых 2 недель. Экономия бюджета составила существенную сумму за счёт сокращения времени доработок. Наши инженеры имеют сертификаты «1С-Битрикс» и опыт работы с D7 с момента выхода платформы. Свяжитесь с нами, чтобы получить аналогичный результат.

Почему стоит выбрать MVC Controller в Битрикс?

Контроллер избавляет от шаблонного кода: проверка прав через prefilters, автоматический CSRF, поддержка JSON и сессий. В классическом admin-файле вы сами вызываете bitrix_sessid_post() и проверяете права. Опыт нашей команды (более 50 проектов на Битрикс) показывает, что переход на контроллеры сокращает время разработки на 1–2 дня на страницу. Гарантируем стабильность при обновлениях ядра — все prefilters и маршруты управляются кодом, а не файлами. Кроме того, снижаются затраты на сопровождение на 20–30% за счёт единообразной структуры.

Как создать кастомную страницу на D7? Два подхода

Классический admin-файл (/bitrix/admin/my_page.php) — простейший вариант, пригодный для вспомогательных инструментов. Он не требует настройки маршрутизации, но вся проверка прав и CSRF ложится на разработчика.

<?php require_once($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_before.php"); use Bitrix\Main\Loader; use Bitrix\Main\Localization\Loc; Loader::includeModule('my.module'); // Проверка прав if (!$APPLICATION->IsAdminPage() || !\CMain::GetUserRight("main") >= "S") { $APPLICATION->AuthForm("Доступ запрещён"); } $APPLICATION->SetTitle("Мой инструмент"); require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_after.php"); // Вывод содержимого страницы ?> <form method="post" action="<?= $APPLICATION->GetCurPage() ?>"> <?= bitrix_sessid_post() ?> <!-- поля формы --> <input type="submit" value="Выполнить"> </form> <?php require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/epilog_admin.php"); 

MVC через Controller — правильный путь для страниц с логикой.

namespace MyProject\Controllers; use Bitrix\Main\Engine\Controller; use Bitrix\Main\Engine\ActionFilter; class ReportController extends Controller { public function configureActions(): array { return [ 'getReport' => [ 'prefilters' => [ new ActionFilter\Authentication(), new ActionFilter\HttpMethod(['GET', 'POST']), new ActionFilter\Csrf(), ], ], ]; } public function getReportAction(int $periodDays = 30): array { $data = \MyProject\Services\ReportService::build($periodDays); return ['data' => $data, 'total' => count($data)]; } } 

Контроллер автоматически обрабатывает запросы, проверяет CSRF-токен и возвращает JSON. Маршрут регистрируется через \Bitrix\Main\Routing\Router::getInstance()->add().

Пошаговая инструкция: создание контроллера для кастомной страницы

  1. Определите namespace и класс контроллера, унаследовав его от \Bitrix\Main\Engine\Controller.
  2. Реализуйте метод configureActions(), задав prefilters для проверки прав и CSRF.
  3. Создайте action-методы (например, getListAction, saveAction) с валидацией параметров.
  4. Зарегистрируйте маршрут в файле local/routes.php или через Router::add().
  5. Настройте права доступа с помощью ActionFilter\Permission или кастомных фильтров.
  6. Интегрируйте UI: для списков используйте CAdminList, для форм — CAdminForm.

Что даёт использование MVC Controller в Битрикс?

Контроллер избавляет от шаблонного кода: проверка прав через prefilters, автоматический CSRF, поддержка JSON и сессий. В классическом admin-файле вы сами вызываете bitrix_sessid_post() и проверяете права. Опыт нашей команды (более 50 проектов на Битрикс) показывает, что переход на контроллеры сокращает время разработки на 1–2 дня на страницу. Гарантируем стабильность при обновлениях ядра — все prefilters и маршруты управляются кодом, а не файлами.

Постраничная навигация и UI: интеграция с D7

Для списков данных используйте \Bitrix\Main\UI\PageNavigation:

use Bitrix\Main\UI\PageNavigation; $nav = new PageNavigation('page'); $nav->allowAllRecords(false) ->setPageSize(20) ->initFromUri(); $result = \MyProject\Storage\OrderLogTable::getList([ 'select' => ['*'], 'order' => ['ID' => 'DESC'], 'count_total' => true, 'offset' => $nav->getOffset(), 'limit' => $nav->getLimit(), ]); $nav->setRecordCount($result->getCount()); 

Для административных страниц со списками — готовый UI через CAdminList и CAdminFilter.

Сравнение подходов: admin-файл vs Controller

Критерий Классический admin-файл MVC Controller
Безопасность Ручной CSRF Встроенные prefilters
Поддержка Сложнее Модульная
Скорость разработки Быстро для простых задач Быстрее для сложных
Обновления ядра Риск поломки Стабильность

Сроки и стоимость

Тип задачи Ориентировочный срок
Простая admin-страница (форма + вывод данных) 2–3 дня
Страница со списком, постраничкой, фильтром и действиями 4–7 дней
Полный CRUD-интерфейс для кастомной сущности с правами и логами 1.5–2.5 недели

Стоимость рассчитывается индивидуально. В среднем экономия времени на поддержке составляет 20–30% по сравнению с классическим подходом. Подробнее о преимуществах D7 читайте в официальной документации 1С-Битрикс и на Wikipedia.

Что входит в работу

  • Проектирование архитектуры страницы (контроллеры, маршруты, шаблоны)
  • Реализация бизнес-логики на D7 с учётом кэширования и прав доступа
  • Интеграция с UI Битрикс (CAdminList, фильтры, постраничная навигация)
  • Документация по API и структуре кода
  • Передача доступов (репозиторий, БД, админка)
  • Обучение команды поддержке страницы
  • Гарантия 3 месяца на функциональность
Дополнительные сведения о безопасности В контроллерах D7 можно настраивать prefilters для проверки прав доступа, например `ActionFilter\Authentication` и `ActionFilter\Csrf`. Это исключает ошибки, связанные с ручной проверкой. Кроме того, контроллеры поддерживают работу с сессиями и автоматическую защиту от XSS.

Кастомная страница на D7 — это не замена компонентной системе. Это инструмент для задач, которые не укладываются в стандартную модель: инструменты администратора, интерфейсы импорта, дашборды с агрегированными данными. Написанные правильно, они не конфликтуют с ядром при обновлениях. Получите консультацию по вашему проекту — оценим сложность и сроки за 1 день. Запишитесь на бесплатную демонстрацию.