Платформа Bitrix Framework созданная компанией «1С‑Битрикс» является одним из наиболее распространенных решений для разработки веб‑приложений. Это набор готовых модулей и компонентов, из которых разработчики могут создавать свои продукты. Платформа написана на PHP, что требует от разработчиков хорошего владения этим языком программирования.
В этой статье мы рассмотрим начало работы с этой платформой, но перед этим поговорим об основных правилах разработки в Bitrix Framework, соблюдение которых позволит вам избежать многих ошибок.
Золотые правила Bitrix Framework
Для начала соберите статистику использования функционала, который вам необходимо настроить. Так, если вы хотите внести какие‑либо изменения в работу сайта, сначала сформулируйте свои потребности на бумаге, не начинайте исправлять код сразу. После этого еще раз просмотрите все случаи, когда на веб‑сайте используется блок, который вы хотите изменить. Убедитесь, что все логично, нет каких‑то явных противоречий. Очень часто некоторые, казалось бы, незначительные изменения негативно влияют на связанные с ними функции, которые были пропущены или забыты.
После того, как вы формализовали свои требования для внесения изменений, проверьте, на какие объекты распространяются эти требования. Только после этого подумайте, какие средства следует использовать для достижения ваших целей.
Вносить изменения можно также различными способами. Лучше всего вносить их, отредактировав шаблон самого веб‑сайта и CSS‑файлы. Однако, если это невозможно, то перейдите к редактированию шаблонов компонентов и CSS‑файлов или измените вывод данных с помощью файлов result_modifier.php и component_epilog.php.
Кастомизация компонентов или разработка собственного компонента или модуля — это последний из возможных вариантов для достижения нестандартной функциональности.
Не рекомендуется добавлять HTML‑код в PHP‑код для изменения представления данных. Логика и представление разделены в компонентах версии 2.0. Логика — это компонент как таковой, а представление — это шаблон отображения компонента. Шаблон значительно проще, чем компонент в целом. Нет необходимости изменять логику компонента, чтобы изменить параметры его вывода данных. Для одной и той же логики может быть несколько представлений, включая представления, которые зависят от шаблона текущего веб‑сайта. Представление (выходной шаблон) может быть написано на любом языке шаблонов, который может быть подключен из PHP. Например, шаблоны могут быть написаны на PHP, Smarty, XSL и так далее
Отдельные компоненты и шаблоны должны располагаться в их собственном пространстве имен. При настройке стандартных компонентов и шаблонов или разработке своих, размещайте их в собственном пространстве имен. Все изменения, внесенные в пространство bitrix, будут устранены после обновления системы.
Не обращайтесь к базе данных напрямую при работе с компонентами. Концепция работы с продуктом предполагает работу с данными через функцию API. Структура данных может меняться в каждой версии, но функции сохраняют обратную совместимость. Разработчики настоятельно не рекомендуем использовать прямые запросы к базе данных, поскольку это может нарушить целостность данных и привести к неработоспособности веб‑сайта. Именно по этой причине структура таблиц не раскрывается.
Также, не следует исправлять код ядра так в этом случае владелец лицензии теряет право обращаться в службу технической поддержки, также внесенные изменения будут устранены после обновления системы. Наконец, изменение ядра может привести к некорректной работе системы, поскольку ядро — это сложная система, которая требует учета работы всех модулей.
Соблюдение этих несложных прав позволит обеспечить стабильную работу вашего кода на платформе Bitrix.
Командная строка
В процессе разработки часто возникают ситуации, когда необходимо быстро выполнить определенный код, вызывая API‑функции Bitrix Framework без создания новых страниц на сайте. В этом случае доступен простой и удобный инструмент — командная строка PHP. Он позволяет запускать произвольный PHP‑код с помощью вызовов функций.
Этот инструмент находится в панели управления сайта по следующему пути: Настройки > Инструменты > командная строка PHP и имеет адрес: /bitrix/admin/php_command_line.php.
Вот как выглядит результат выполнения кода с использованием функций класса CUser основных модулей:

Используя вкладку с «+», мы можем создавать новые вкладки и сохранять в них наиболее часто используемый PHP‑код. Чтобы переименовать вкладку, достаточно воспользоваться //title:*** в начале вашего кода.
Init.php и его польза
Файл init.php может содержать инициализацию обработчиков событий и подключение дополнительных функций, которые являются общими для всех веб‑сайтов. В этом случае он должен быть расположен по пути /bitrix/php_interface/init.php.
На каждом конкретном веб‑сайте может быть свой аналогичный файл. В этом случае он должен быть расположен по пути /bitrix/php_interface/website_ID/init.php. Если там есть оба файла, система подключит их оба, но файл /bitrix/php_interface/init.php будет выполняться первым. Код в init.php должен быть расположен в соответствии с логической группировкой по файлам и классам.
Сам файл init.php содержит только связи с другими файлами, и их лучше подключать через __autoload. Это можно сделать следующим образом, используя стандартные средства
CModule::AddAutoloadClasses(
'', // we do not indicate the name of the module
array(
// key – a class name, value – a path from the website root to the file with the class
'CMyClassName1' => '/path/cmyclassname1file.php',
'CMyClassName2' => '/path/cmyclassname2file.php',
)
);
Если функциональность используется только на одном из веб‑сайтов в системе, ее следует разместить в отдельном файле init.php. Обработчики событий должны быть сгруппированы в одном файле и сопровождаться подробным примечанием с указанием того, где они используются и какую задачу решают.
При работе с init.php важно понимать, что ошибка в этом файле приводит к полной неработоспособности веб‑сайта, и исправить что‑либо без доступа к файлу по ftp/ssh невозможно. Например, у клиента хостинг на базе Windows, а у вас «серый» IP, и ftp работать не будет. Или хостинг на базе Linux, но php и ftp работают у разных пользователей, и файл недоступен для редактирования через ftp. Наконец, у клиента есть свой собственный сервер, который запрещает вам доступ по ftp.
Если доступ к файлу возможен только через Интернет, один из самых простых способов — поместить весь ваш код во внешний файл и подключить его следующим образом:
if (isset($_GET['noinit']) && !пустой($_GET['noinit']))
{
$strNoInit = strval($_GET['noinit']);
if ($strNoInit == 'N')
{
if (isset($_SESSION['NO_INIT']))
unset($_SESSION['NO_INIT']);
}
elseif ($strNoInit == 'Y')
{
$_SESSION['NO_INIT'] = 'Y';
}
}
Параметр в адресной строке noinit=Y активирует подключение, noinit=N деактивирует. Собственные функциональные возможности должны быть расположены (в рамках данного примера) в /bitrix/php_interface/functions.php.
Также, рекомендуется использовать собственное имя ключа. Например, nomysuperinit, потому что данный пример находится в открытом доступе, и любой желающий может ознакомиться с этим методом, в том числе и те, у кого есть злонамеренные цели.
При таком подходе вы сможете безопасно редактировать и вносить ошибки в файл functions.php не опасаясь получить неработоспособный веб‑сайт, который невозможно восстановить без использования ftp.
Файл init.php или Собственный модуль?
У разработчика проекта есть два способа использовать уже созданные решения: собственный модуль или файл init.php. Оба варианта имеют свои преимущества и недостатки. Начнем с init.php. Если у вас есть классы, общие для нескольких веб‑сайтов (в случае нескольких веб‑сайтов или на одном сервере), файлы, содержащие классы, для удобства размещаются в одной папке. Позже создаются символические ссылки. В случае наличия нескольких веб‑сайтов есть еще один способ: использовать уже созданные папки.
Альтернативным вариантом является применение модулей. Использование init.php предпочтительнее, если вы создаете проекты, которые обязательно будут находиться на одном сервере на протяжении всего срока существования таких проектов, и хотите свести расходы, связанные с поддержкой пользовательских библиотек, к минимуму. Эти библиотеки лучше поддерживать одному и тому же специалисту. Однако, если вы планируете использовать эти решения для других проектов, следует создать отдельный модуль.
Модуль больше подходит для распределенных API. В этом случае их интерфейс также должен поддерживаться вместе с форматом ответов и другими параметрами. В противном случае случайное обновление на одном из веб‑сайтов, использующих модуль, может привести к фатальным последствиям в случае изменения интерфейсов или форматов ответов API. С одной стороны, вы остаетесь в выигрыше; с другой стороны, вы должны создать гарантии для всех веб‑сайтов, использующих модуль API.
Инструменты разработки
Разработку в Bitrix можно реализовать несколькими способами. В рамках данной статьи мы рассмотрим использование командного интерфейса, а также composer. Так как данный интерфейс реализован на основе библиотеки symfony/console, перед началом использования вам необходимо установить эти зависимости через composer.
В случае, если исполняемый файл находится в папке bitrix:
$ cd bitrix
$ php bitrix.php
Для удобства создайте символьную ссылку без постфикса php:
$ chmod +x bitrix.php
$ ln -s bitrix.php битрикс
$ ./bitrix
Еще один вариант это использование composer. Composer — это пакетный менеджер уровня приложений для языка программирования PHP, который предлагает инструменты для управления зависимостями в PHP‑приложении.
Приведенное ниже описание будет основано на том факте, что composer установлен глобально и вызывается простой командой:
$ composer –V
Если вы еще не используете composer в проекте, то вам необходимо установить зависимости из файла bitrix/composer‑bx.json:
$ cd bitrix
$ COMPOSER=composer-bx.json установка composer
После этого создается папка bitrix/vendor с установленными необходимыми библиотеками. Если вы хотите указать другое расположение для этого каталога, вам нужно создать свой собственный composer.json — посмотрите второй вариант настройки зависимостей ниже.
Что делать, в случае, если вам нужна собственная конфигурация composer.json? По умолчанию система ожидает увидеть ваш файл composer.json в папке bitrix, но мы рекомендуем расположить его где‑нибудь за пределами DOCUMENT_ROOT (чтобы он не был общедоступен). В этом случае укажите путь к файлу в.settings.php.
<?php
return [
'composer' => [
'value' => ['config_path' => '/path/to/your/composer.json']
],
// ...
];
//...
Внутри подключаем наш файл с зависимостями bitrix/composer‑bx.json через плагин Composer Merge Plugin. Как минимум, ваш composer.json должен содержать вызов плагина и нашу конфигурацию подключения.
Файл composer.json (может быть скопирован из bitrix/composer.json.example):
{
"require": {
"wikimedia/composer-merge-plugin": "dev-master"
},
"extra": {
"merge-plugin": {
"require": [
"/path/to/bitrix/composer-bx.json"
]
}
}
}
Вместо /path/к/bitrix/ вам нужно указать реальный путь к папке bitrix.
Также, вы можете добавить свои зависимости и настройки. Например, чтобы напрямую указать путь к папке поставщика (по умолчанию она будет находиться в том же расположении, что и файл composer.json), используйте команду «vendor‑dir».
{
"require": {
"wikimedia/composer-merge-plugin": "dev-master"
},
"config": {
"vendor-dir": "../../vendor"
},
"extra": {
"merge-plugin": {
"require": [
"/path/to/bitrix/composer-bx.json"
]
}
}
}
После описания вашей конфигурации установите библиотеки:
$ composer install
Теперь вы можете использовать преимущества composer в своем проекте, подключив файл vendor/autoload.php. При использовании CLI‑команд он подключается автоматически.
Заключение
В этой статье мы рассмотрели основные моменты, связанные с началом работы в Bitrix Framework. Следование представленным в начале статьи правилам позволит разработчикам избежать множества проблем, связанных с поиском ошибок и отладкой кода.
Также, использование различных инструментов разработки позволяет выбрать наиболее подходящее средство для создания собственного веб приложения.
Если вы работаете с Bitrix Framework или только начинаете осваивать экосистему Bitrix24, обратите внимание на курс «Разработчик Битрикс24».
Перед стартом курса вы можете посетить два открытых урока:
10 ноября в 20:00 — «Локальные приложения и веб‑хуки при разработке в Битрикс24»
Записаться19 ноября в 20:00 — «События в Битрикс24: Путеводитель по изменениям»
Записаться

А тем, кто настроен на серьезное системное обучение, рекомендуем рассмотреть Подписку — выбираете курсы под свои задачи, экономите на обучении, получаете профессиональный рост. Узнать подробнее