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

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

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

Этапы разработки

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

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1330
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    924
  • 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
    672
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    815
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    714
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1051

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

На одном проекте потребовалось создать интерфейс для управления партнёрскими программами с гибкими правилами. Стандартные компоненты Битрикс не подходили — требовалась сложная бизнес-логика с кастомными правами доступа и интеграцией с внешними 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 день. Запишитесь на бесплатную демонстрацию.