Bitrix Assistant
Подсказки, навигация и заливка файлов на сервер для разработки на 1С-Битрикс — прямо в VS Code.
Знакомо: нужно вспомнить, что делает CIBlockElement::GetList, какие поля лежат в $arResult
чужого компонента или какой метод у CFile? Bitrix Assistant строит карту ядра Битрикса
и вашего проекта и подсказывает по ходу набора — как в дорогих IDE, только без переезда.
Зачем это нужно
- Не держать в голове API ядра. Набрали
CFile:: — увидели методы. Навели — прочитали
сигнатуру и что метод делает. Кликнули — перешли к исходнику.
- Чужой код становится понятнее. Работает и с легаси (
CFile, CMain, $USER,
$APPLICATION), и с D7 (Bitrix\Main\...), и с вашими модулями в local/.
- Файлы на сервер — без FTP-клиента. Сохранили файл — он ушёл на сервер. Или одна
комбинация клавиш. Перед перезаписью можно посмотреть diff с серверной версией.
- Ничего не нужно доустанавливать. Сервер подсказок и PHP-рантайм уже внутри расширения:
не надо ставить PHP, Node, Composer и настраивать индексы руками.
Что вы получаете
- Подсказки по PHP: классы ядра и проекта (включая легаси), методы и свойства после
-> и ::, глобальные функции, ключи $arParams и $arResult компонентов, типы
$APPLICATION, $USER, $DB, методы трейтов и родителей. Вставка сразу с use-импортом.
- Подсказки по JS: объекты
BX.*, расширения Битрикса, их зависимости и параметры.
- Навигация: Ctrl+Click и hover по классам, методам, свойствам, константам, функциям
и переменным; структура файла и хлебные крошки.
- Анализ кода: все вхождения символа (Find All References) и подсветка использований,
переход к типу (Go to Type Definition) и к реализациям, иерархия вызовов и иерархия типов,
CodeLens с числом наследников и переопределений, подписи параметров в вызовах (inlay hints),
сворачивание классов/функций/
#region.
- Типы из PHPDoc:
@var/@param/@return с Foo[], array<Foo>, array{ITEMS: Foo[]} —
работают foreach по массивам объектов, $items[0] и подсказки по членам элемента.
- Диагностика типов (при включённой
bitrix.php.semantic): несовпадение аргументов и
возвращаемых значений с учётом иерархии классов, strict_types, nullable-типов и
приведений скаляров.
- Мелочи, которые экономят время: переименование локальных переменных (F2) с защитой от
опасных случаев, кликабельные пути в
require/include, форматирование хвостовых пробелов
и пустой строки в конце файла.
- Синхронизация: загрузка и скачивание файлов и каталогов, загрузка по сохранению,
сверка проекта в обе стороны, сравнение с сервером, резервные копии
.bak.
- Терминал на сервере: открывается по сохранённому профилю, пароль вводить каждый раз
не нужно.
- Проверки: ошибки синтаксиса PHP, диагностика подсказок, авто-импорт классов,
генерация
@property-аннотаций для ORM-таблиц.
- Настройка под проект: несколько папок сразу, свой путь к
bitrix, исключения
для индекса и синхронизации, горячие клавиши.
Быстрый старт
- Установите расширение и откройте папку проекта, где лежит
bitrix/.
- Дождитесь сообщения «Индекс готов» — на большом проекте это около минуты.
- Наберите
\CF в PHP-файле или BX. в JS — появятся подсказки.
- Для синхронизации: «Bitrix Assistant: Добавить SSH-профиль» → «Подключиться».
Требования
- VS Code 1.100 или новее.
- macOS (Apple Silicon и Intel), Linux (x64 и arm64) или Windows (x64).
- Проект с каталогом
bitrix/ в корне (путь можно указать в настройках).
- PHP, Node.js и Composer ставить не нужно: внутри расширения уже есть PHP 8.4.
PHP: встроенная версия и другие версии
В расширение встроен один PHP-рантайм — PHP 8.4 (сборка static-php-cli под вашу
платформу: macOS Intel/Apple Silicon, Linux x64/arm64, Windows x64). Он запускает сервер
подсказок и используется для проверки синтаксиса, если ничего другого не выбрано.
Ставить PHP на компьютер не обязательно.
Другие версии (7.4, 8.0, 8.1, 8.2, 8.3) в комплект не входят. Если проект работает на
другой версии PHP, есть три пути.
- PHP уже установлен на компьютере — выберите
auto: расширение возьмёт php из PATH
(а если его нет — встроенный PHP 8.4). Статус-бар покажет фактическую версию.
- Скачать статическую сборку — команда «Bitrix Assistant: скачать PHP для проверки
синтаксиса» (
bitrix.php.downloadRuntime). Сборка кладётся в хранилище расширения,
ничего в системе не меняет; список скачанного — команда «управлять скачанными версиями PHP».
- Установить PHP нужной версии на компьютер (например,
brew install php@8.3 или
официальный установщик для Windows) и указать путь к нему — см. ниже.
Как указать путь к конкретной версии
Путь хранится в состоянии расширения (workspaceState VS Code) — ни в файлах проекта,
ни в .vscode/settings.json записи нет. Файл на диске выбирать не нужно: путь вводится
строкой, его можно вставить из буфера обмена. Состояние не попадает в git и не
синхронизируется между машинами: на другом компьютере путь задаётся заново.
Команда «Bitrix Assistant: указать путь к PHP для версии» (bitrix.php.setPath):
выберите версию → введите путь в поле. Поддерживаются ~ и переменные окружения
${env:HOME}; пустое поле удаляет путь для этой версии. После сохранения расширение
проверит, что файл существует и что его версия совпадает с выбранной, и предупредит,
если это не так.
Настройки bitrix.php.version и bitrix.php.paths в settings.json теперь играют роль
значения по умолчанию: они читаются, только пока для проекта нет записи в состоянии
расширения. Их удобно держать в .vscode/settings.json, чтобы задать стартовые значения
для команды (тот же формат):
{
"bitrix.php.version": "8.3",
"bitrix.php.paths": {
// macOS, Homebrew; на Linux — "/usr/bin/php8.3",
// на Windows — "C:\\php83\\php.exe"
"8.3": "/opt/homebrew/opt/php@8.3/bin/php",
"7.4": "~/.php/7.4/bin/php",
"8.2": "${env:PHP82_BIN}"
}
}
Версия PHP привязана к папке проекта: у каждого проекта в мульти-рут workspace своя
запись в состоянии расширения (ключ — путь папки).
Что делает расширение, если версии нет
При старте и при смене bitrix.php.version расширение проверяет выбранную версию: встроенный
рантайм, путь из bitrix.php.paths, bitrix.php.lintBinary, скачанные сборки, затем php,
php8.3 и Homebrew-пути. Если ничего не найдено (или найден файл другой версии), появляется
предупреждение с кнопками «Скачать» и «Указать путь» — молча подставлять другую версию
расширение не будет.
Проверить вручную: команда «Bitrix Assistant: проверить PHP, выбранный для проекта»
(bitrix.php.checkRuntime). Порядок поиска и источник выбранного бинарника пишутся в лог
(«Bitrix Assistant: Показать лог»).
Установка
- Из Marketplace: панель Extensions → поиск «Bitrix Assistant» → Install.
- Из файла: Extensions →
... → Install from VSIX…, либо
code --install-extension bitrix-assistant-<версия>-<платформа>.vsix.
- После установки откройте папку проекта и дождитесь сообщения «Индекс готов».
SSH-профиль
- Команда «Bitrix Assistant: Добавить SSH-профиль» (или «Подключиться» — если профилей ещё нет,
расширение предложит создать).
- Заполните: имя, хост, порт, пользователь, пароль или путь к приватному ключу,
корень проекта на сервере (например,
/home/bitrix/www).
- «Bitrix Assistant: Подключиться к серверу» — появится дерево файлов сервера.
- Клавиши по умолчанию:
Ctrl+Alt+P — сменить сервер, Ctrl+Alt+U — загрузить файл,
Ctrl+Alt+S — сохранить и загрузить.
Пароли хранятся в защищённом хранилище VS Code, а не в файлах проекта. Если профилей несколько,
один можно назначить профилем по умолчанию — при включённой настройке bitrix.ssh.autoConnect
расширение подключится к нему при старте.
Команды
| Команда |
Действие |
bitrix.ssh.connect |
Выбрать/создать профиль и подключиться |
bitrix.ssh.terminal |
Открыть терминал на сервере по сохранённому профилю (без ввода логина и пароля) |
bitrix.ssh.disconnect |
Закрыть соединение |
bitrix.ssh.upload |
Загрузить текущий файл (или файл из контекстного меню) |
bitrix.ssh.download |
Скачать текущий файл с сервера |
bitrix.ssh.syncAll |
Двусторонняя/односторонняя синхронизация по mtime |
bitrix.ssh.preview |
Открыть файл с сервера только для просмотра |
bitrix.ssh.compareRemote |
Сравнить локальный файл с серверным (diff; из палитры, меню вкладки и проводника) |
bitrix.ssh.downloadRemote |
Скачать файл/каталог с сервера (контекстное меню дерева) |
bitrix.ssh.uploadLocal |
Загрузить локальную версию файла/каталога на сервер |
bitrix.ssh.copyRemotePath |
Скопировать путь на сервере |
bitrix.ssh.refresh |
Обновить дерево сервера |
bitrix.showMenu |
Меню расширения (клик по статус-бару) |
bitrix.showLog |
Показать лог расширения |
bitrix.ssh.addProfile / bitrix.ssh.removeProfile |
Управление профилями |
bitrix.index.rebuild |
Полная перестройка индекса |
bitrix.index.reindexFile |
Переиндексировать активный файл |
bitrix.index.stats |
Статистика и путь к БД |
bitrix.orm.generateAnnotations |
PHPDoc @property для *Table.php |
bitrix.lsp.restart |
Перезапустить LSP-сервер |
bitrix.php.selectVersion |
Версия PHP для проекта (auto, 7.4–8.4) |
bitrix.php.setPath |
Указать путь к PHP нужной версии (в bitrix.php.paths) |
bitrix.php.checkRuntime |
Проверить, что выбранный PHP доступен |
bitrix.php.downloadRuntime |
Скачать статическую сборку выбранной версии |
bitrix.php.manageRuntimes |
Список/удаление скачанных версий PHP |
bitrix.php.lintWorkspace |
Проверить синтаксис всего проекта |
Горячие клавиши
Привязки расширения работают сразу после установки. Дальше — что нажимать и зачем.
Команды расширения
| Действие |
macOS |
Windows / Linux |
Команда |
| Сменить сервер (профиль SSH) |
⌘⌥P |
Ctrl+Alt+P |
bitrix.ssh.switchProfile |
| Загрузить текущий файл на сервер |
⌘⌥U |
Ctrl+Alt+U |
bitrix.ssh.upload |
| Сохранить и сразу загрузить |
⌘⌥S |
Ctrl+Alt+S |
bitrix.ssh.saveAndUpload |
Две последние срабатывают только когда фокус в редакторе кода — чтобы не мешать
диалогам и терминалу. Свои комбинации задаются настройками
bitrix.keybindings.switchProfile, bitrix.keybindings.upload,
bitrix.keybindings.saveAndUpload, после чего нужно выполнить
Bitrix Assistant: применить горячие клавиши из настроек — команда с подтверждением
записывает их в keybindings.json (если VS Code не подхватил сразу, перезагрузите окно).
Посмотреть текущие привязки: Bitrix Assistant: открыть Keyboard Shortcuts — откроет
редактор привязок с фильтром по bitrix.
Навигация по коду
| Действие |
macOS |
Windows / Linux |
Зачем |
| Перейти к определению |
F12 |
F12 |
Прыжок к классу/методу/функции/свойству. То же делает ⌘+клик (Ctrl+клик). Работает по индексу, включая ядро, vendor/ и стабы PHP |
| Посмотреть определение, не уходя из файла |
⌥F12 |
Alt+F12 (Linux Ctrl+Shift+F10) |
Компактное окно поверх кода — удобно посмотреть сигнатуру и вернуться |
| Все ссылки на символ |
⇧F12 |
Shift+F12 |
Где ещё используется метод/свойство/класс. На макбуках с медиа-F-клавишами жмите Fn+Shift+F12 |
| Перейти к реализации |
⌘F12 |
Ctrl+F12 |
Для интерфейса и абстрактного метода — список реализаций, для класса — наследники |
| Перейти к типу |
не назначено |
не назначено |
Показать класс значения под курсором (в т.ч. тип переменной из @var/@param). Команда Go to Type Definition, назначается по желанию |
| Иерархия вызовов |
не назначено |
не назначено |
Кто вызывает метод и кого вызывает он сам: правый клик → Call Hierarchy / Peek Call Hierarchy |
| Иерархия типов |
не назначено |
не назначено |
Родители и наследники класса: правый клик → Type Hierarchy |
| Символы в файле (outline) |
⇧⌘O |
Ctrl+Shift+O |
Структура текущего файла: классы, методы, функции |
| Символы во всём проекте |
⌘T |
Ctrl+T |
Поиск класса/функции по имени во всём индексе |
| Показать подсказку (hover) с клавиатуры |
⌘K ⌘I |
Ctrl+K Ctrl+I |
Описание, сигнатура, тип, doc-блок без мыши |
| Назад / вперёд по переходам |
⌃- / ⌃⇧- |
Alt+← / Alt+→ |
Вернуться туда, где были до прыжка |
Подсказки, проверки и правки
| Действие |
macOS |
Windows / Linux |
Зачем |
| Вызвать подсказки |
⌃Space |
Ctrl+Space |
Список классов, методов, свойств, переменных, ключей $arParams/$arResult |
| Подсказка параметров |
⇧⌘Space |
Ctrl+Shift+Space |
Сигнатура вызываемого метода/функции с подсветкой текущего аргумента (в т.ч. в new) |
| Быстрое исправление |
⌘. |
Ctrl+. |
Импорт класса (use), подключение JS-библиотеки, генерация @property |
| Переименовать переменную |
F2 |
F2 |
Переименование локальной переменной и всех её использований в файле. Классы и методы не переименовываются — это защита от порчи кода |
| Проблемы (ошибки и предупреждения) |
⇧⌘M |
Ctrl+Shift+M |
Список диагностик: синтаксис, неизвестные функции/методы, типы, видимость |
| Форматировать файл |
⇧⌥F |
Shift+Alt+F (Linux Ctrl+Shift+I) |
Убирает пробелы в конце строк и лишние пустые строки в конце файла |
| Форматировать выделение |
⌘K ⌘F |
Ctrl+K Ctrl+F |
То же для выделенного фрагмента |
Сворачивание кода
| Действие |
macOS |
Windows / Linux |
Свернуть блок (класс, метод, #region) |
⌥⌘[ |
Ctrl+Shift+[ |
| Развернуть блок |
⌥⌘] |
Ctrl+Shift+] |
| Свернуть всё |
⌘K ⌘0 |
Ctrl+K Ctrl+0 |
| Развернуть всё |
⌘K ⌘J |
Ctrl+K Ctrl+J |
Работа с файлами и сервером
| Действие |
macOS |
Windows / Linux |
Зачем |
| Сохранить |
⌘S |
Ctrl+S |
Обычное сохранение; при включённой bitrix.ssh.uploadOnSave файл сразу уйдёт на сервер |
| Сохранить всё |
⌥⌘S |
Ctrl+K S |
|
| Терминал |
Control + ` |
Ctrl + ` |
Обычный терминал VS Code; терминал на сервере — отдельная команда расширения |
| Фокус в хлебных крошках |
⇧⌘; |
Ctrl+Shift+; |
Быстро перейти к соседнему классу/методу |
Как назначить или изменить клавишу
⌘K ⌘S (Windows/Linux Ctrl+K Ctrl+S) — откроется редактор Keyboard Shortcuts.
- Найдите действие по названию (например,
Go to Type Definition, Call Hierarchy,
Type Hierarchy) или по id (editor.action.goToTypeDefinition,
editor.showCallHierarchy, editor.showTypeHierarchy).
- Двойной клик по строке → нажмите новую комбинацию.
- Для команд расширения удобнее Bitrix Assistant: открыть Keyboard Shortcuts
(там сразу видно наши привязки) и Bitrix Assistant: применить горячие клавиши
из настроек.
Если комбинация занята системой или другой привязкой, VS Code покажет конфликт при
сохранении — выберите другую. На macOS функциональные клавиши (F2, F12) на ноутбуках
по умолчанию работают как медиа-клавиши: либо зажмите Fn, либо включите
«Использовать F1, F2 и т.д. как стандартные функциональные клавиши» в настройках
клавиатуры macOS.
Настройки
| Ключ |
По умолчанию |
Смысл |
bitrix.ssh.uploadOnSave |
false |
Загружать файл при сохранении |
bitrix.ssh.downloadOnOpen |
false |
Скачивать при открытии, если на сервере новее |
bitrix.ssh.exclude |
cache/upload/*.min.js |
Что не синхронизировать |
bitrix.index.enabled |
true |
Индексация |
bitrix.index.bitrixPath |
bitrix |
Путь к каталогу bitrix (относительно workspace или абсолютный) |
bitrix.index.exclude |
cache/upload/*.min.js |
Что не индексировать |
bitrix.index.jsMaxFileSizeKb |
512 |
Пропуск больших JS-файлов |
bitrix.index.phpStubs |
true |
Импорт встроенных функций/классов PHP (stdlib) в индекс |
bitrix.index.vendor |
true |
Индексировать vendor/ и local/vendor/ (Composer-зависимости) |
bitrix.js.enableLibraryCheck |
false |
Диагностика неподключённых библиотек (по умолчанию выкл.) |
bitrix.lsp.enabled |
true |
Запуск LSP |
bitrix.lsp.phpBinary |
"" |
Явный путь к PHP (иначе встроенный бинарник) |
bitrix.php.lint |
true |
Проверять синтаксис PHP через php -l |
bitrix.php.version |
auto |
Значение по умолчанию для версии PHP проекта: auto (что установлено на ПК, иначе встроенный 8.4), 7.4–8.4. Фактическая версия хранится в состоянии расширения (команда «выбрать версию PHP») |
bitrix.php.paths |
{} |
Значение по умолчанию для путей к PHP по версиям: { "8.3": "/opt/homebrew/opt/php@8.3/bin/php" }; поддерживаются ~ и ${env:VAR}. Рабочие пути хранятся в состоянии расширения (команда «указать путь к PHP») |
bitrix.php.lintBinary |
"" |
Общий путь к PHP (устаревшая настройка, для любой версии) |
bitrix.php.semantic |
false |
Семантические PHP-предупреждения: неизвестные функции/переменные, число и типы аргументов, типы возврата. Неизвестные функции и методы видны всегда, даже при false |
bitrix.ssh.autoConnect |
false |
Подключаться при старте к профилю по умолчанию |
bitrix.keybindings.switchProfile |
"" |
Клавиша смены сервера (пусто — Ctrl/Cmd+Alt+P) |
bitrix.keybindings.upload |
"" |
Клавиша загрузки файла (пусто — Ctrl/Cmd+Alt+U) |
bitrix.keybindings.saveAndUpload |
"" |
Клавиша «сохранить и загрузить» (пусто — Ctrl/Cmd+Alt+S) |
Индексация
Расширение строит локальный индекс ядра Битрикса и проекта: модули, компоненты, классы,
методы, свойства, константы, функции, JS-расширения и глобальные переменные. Индекс нужен
для подсказок и переходов, на сервер ничего не отправляется.
- Первая индексация крупного проекта занимает около минуты, дальше обновляется по мере
изменения файлов и при сохранении.
- Если меняли
bitrix.index.bitrixPath или переключали ветку — перезагрузите окно.
- Полная перестройка: «Bitrix Assistant: Перестроить индекс». Статистика и путь к базе:
«Bitrix Assistant: Статистика индекса».
Если что-то не работает
- Откройте канал Bitrix Assistant в панели Output — там ход индексации, запуск сервера
подсказок и ошибки; команда «Bitrix Assistant: Показать лог» открывает его.
- Нет подсказок — проверьте, что открыта папка проекта с каталогом
bitrix/ и что в логе
есть «Индекс готов».
- Пустой список подсказок по классам — «Bitrix Assistant: Перестроить индекс» и перезагрузка окна.
- Проблемы с подключением — проверьте профиль и пароль; при неудаче расширение один раз
спросит пароль заново.
Честные ограничения
- Это не замена PhpStorm: рефакторинги, отладчик и глубокий статический анализ там сильнее.
Расширение закрывает повседневные задачи — подсказки, переходы, синхронизацию.
- Индекс строится локально и никуда не отправляется. Пароли хранятся в защищённом
хранилище VS Code, а не в файлах проекта.
- Первая индексация крупного проекта занимает около минуты, база индекса — сотни мегабайт
в служебной папке VS Code.
- Расширение не работает с LLM и внешними сервисами: всё считается локально из вашего кода.
- Анализ PHP эвристический (регулярные выражения + индекс), а не полноценный парсер: типы
выводятся по литералам,
new, PHPDoc и instanceof; динамика (call_user_func,
$obj->$method(), строковые имена) не видна.
- Переименование — только локальные переменные в текущем файле и только когда это безопасно
(нет вхождения в строках,
compact(), $$var). Классы и методы не переименовываются.
- Форматирование намеренно консервативное: отступы и стиль скобок не меняются, файлы с
heredoc пропускаются. Полный PSR-12 — задача отдельного форматтера.
- CodeLens, иерархии и поиск вызовов опираются на индекс: пока он строится или файл не
сохранён, результат может быть неполным.
Обратная связь
| |