Команды ORM 
Стандартная команда Битрикс для работы с ORM: сканирование и генерация аннотаций.
orm:annotate 
Сканирует проект на наличие ORM-сущностей и генерирует аннотации для улучшения автодополнения в IDE.
Синтаксис 
php bitrix.php orm:annotate [output] [опции]Аргументы 
output- путь к файлу для сохранения аннотаций (необязательный, по умолчанию:bitrix/modules/orm_annotations.php)
Опции 
--modules=<список>или-m- модули для сканирования через запятую (по умолчанию: main)--cleanили-c- очистить текущую карту сущностей перед генерацией
Примеры использования 
# Генерация аннотаций (по умолчанию в bitrix/modules/orm_annotations.php)
php bitrix.php orm:annotate
# С указанием файла для сохранения
php bitrix.php orm:annotate /path/to/orm_annotations.php
# Сканирование конкретных модулей
php bitrix.php orm:annotate --modules=main,iblock,catalog
# Сканирование всех модулей
php bitrix.php orm:annotate --modules=all
# Очистка существующей карты и создание новой
php bitrix.php orm:annotate --clean
# Комбинированный пример
php bitrix.php orm:annotate \
  /local/php_interface/orm_annotations.php \
  --modules=main,iblock,catalog,sale \
  --cleanЧто делает команда 
Команда выполняет следующие действия:
- Сканирует модули - находит все классы, наследующие 
DataManager - Анализирует структуру - определяет поля, связи и методы
 - Генерирует аннотации - создает PHPDoc аннотации для IDE
 - Создает файл метаданных - сохраняет карту сущностей
 
Результат 
Создается файл с PHPDoc аннотациями, который помогает IDE:
- Распознавать ORM-сущности
 - Предоставлять автодополнение для полей и методов
 - Улучшать навигацию по коду
 - Показывать подсказки по типам
 
Пример сгенерированного файла 
<?php
/**
 * @method static EO_User_Query query()
 * @method static EO_User_Result getByPrimary($primary)
 * @method static EO_User_Result getById($id)
 * @method static EO_User_Result getList(array $parameters = [])
 * @method static EO_User_Entity getEntity()
 */
class Bitrix\Main\UserTable
{
}
/**
 * @property int $ID
 * @property string $LOGIN
 * @property string $EMAIL
 * @property string $NAME
 * @property string $LAST_NAME
 */
class EO_User
{
}Использование 
Базовая генерация после установки модулей 
#!/bin/bash
# Генерация аннотаций после установки нового модуля
MODULE_ID="$1"
cd /var/www/bitrix
# Установить модуль
php bitrix.php module:install "$MODULE_ID"
# Регенерировать аннотации для всех модулей
php bitrix.php orm:annotate --modules=all --clean
echo "Модуль $MODULE_ID установлен, аннотации обновлены"Регулярное обновление аннотаций 
#!/bin/bash
# Еженедельное обновление ORM-аннотаций
cd /var/www/bitrix
echo "Обновление ORM-аннотаций: $(date)"
# Генерация для основных модулей
php bitrix.php orm:annotate \
  --modules=main,iblock,catalog,sale,crm \
  --clean \
  -v
echo "Аннотации обновлены"Генерация для кастомных модулей 
#!/bin/bash
# Генерация аннотаций только для кастомных модулей компании
cd /var/www/bitrix
# Найти все кастомные модули
CUSTOM_MODULES=$(ls -d /local/modules/company.* 2>/dev/null | xargs -n1 basename | tr '\n' ',')
if [ -n "$CUSTOM_MODULES" ]; then
    # Удалить последнюю запятую
    CUSTOM_MODULES=${CUSTOM_MODULES%,}
    
    echo "Генерация аннотаций для модулей: $CUSTOM_MODULES"
    
    php bitrix.php orm:annotate \
      /local/php_interface/orm_custom_annotations.php \
      --modules="$CUSTOM_MODULES" \
      --clean
    
    echo "Аннотации для кастомных модулей созданы"
else
    echo "Кастомные модули не найдены"
fiИнтеграция в CI/CD 
#!/bin/bash
# Автоматическая генерация аннотаций при деплое
cd /var/www/bitrix
# Обновить код
git pull origin master
# Установить зависимости
composer install
# Обновить модули
php bitrix.php update:modules
# Регенерировать аннотации
php bitrix.php orm:annotate --modules=all --clean
# Закоммитить обновленные аннотации (опционально)
if [ -f "modules/orm_annotations.php" ]; then
    git add modules/orm_annotations.php
    git commit -m "chore: обновлены ORM-аннотации" || true
fi
echo "Деплой завершен, аннотации обновлены"Продвинутые сценарии 
Раздельная генерация для разных окружений 
#!/bin/bash
# Разные аннотации для development и production
cd /var/www/bitrix
ENV="${1:-development}"
case $ENV in
    development)
        # Для разработки - все модули
        php bitrix.php orm:annotate \
          /local/php_interface/orm_annotations_dev.php \
          --modules=all \
          --clean
        ;;
    production)
        # Для продакшена - только необходимые
        php bitrix.php orm:annotate \
          modules/orm_annotations.php \
          --modules=main,iblock,catalog,sale \
          --clean
        ;;
    *)
        echo "Неизвестное окружение: $ENV"
        exit 1
        ;;
esac
echo "Аннотации для окружения $ENV сгенерированы"Мониторинг изменений ORM-структуры 
#!/bin/bash
# Отслеживание изменений в ORM-структуре
cd /var/www/bitrix
CURRENT="/tmp/orm_current.php"
PREVIOUS="/var/cache/orm_previous.php"
# Сгенерировать текущие аннотации
php bitrix.php orm:annotate "$CURRENT" --modules=all
# Сравнить с предыдущей версией
if [ -f "$PREVIOUS" ]; then
    if ! diff -q "$PREVIOUS" "$CURRENT" > /dev/null; then
        {
            echo "Обнаружены изменения в ORM-структуре:"
            echo "Дата: $(date)"
            echo ""
            diff -u "$PREVIOUS" "$CURRENT"
        } | mail -s "ORM Structure Changed" admin@example.com
    fi
fi
# Сохранить текущую версию
cp "$CURRENT" "$PREVIOUS"Генерация документации по ORM-сущностям 
#!/bin/bash
# Создание документации на основе ORM-аннотаций
cd /var/www/bitrix
ANNOTATIONS="/tmp/orm_annotations.php"
DOCS="/docs/orm_entities.md"
# Сгенерировать аннотации
php bitrix.php orm:annotate "$ANNOTATIONS" --modules=all --clean
# Извлечь информацию о сущностях
{
    echo "# ORM-сущности проекта"
    echo ""
    echo "Дата генерации: $(date)"
    echo ""
    
    # Извлечь классы DataManager
    grep -A 5 "class.*DataManager" "$ANNOTATIONS" | while read -r line; do
        if [[ $line =~ class.*DataManager ]]; then
            entity=$(echo "$line" | grep -oP '\\K[\w\\]+(?=\s*$)')
            echo "## $entity"
            echo ""
        fi
    done
} > "$DOCS"
echo "Документация создана: $DOCS"Автоматическое обновление после миграций 
#!/bin/bash
# Обновление аннотаций после выполнения миграций
cd /var/www/bitrix
# Выполнить миграции (например, sprint.migration)
php bitrix.php sprint:migrate
# Обновить аннотации
php bitrix.php orm:annotate --modules=all --clean
# Очистить кеш ORM
php bitrix.php cache:type:clear orm
echo "Миграции выполнены, аннотации обновлены"Troubleshooting 
Аннотации не генерируются 
Проблема: Команда выполняется, но файл не создается
Решения:
- Проверьте права доступа к целевой директории
 - Убедитесь, что модули установлены и активны
 - Проверьте наличие ORM-классов в модулях
 - Используйте опцию 
-vдля подробного вывода 
IDE не видит аннотации 
Проблема: После генерации автодополнение не работает
Решения:
- Перезапустите IDE
 - Invalidate Caches в PhpStorm
 - Убедитесь, что файл аннотаций находится в индексируемой директории
 - Проверьте, что файл не игнорируется в .gitignore
 
Ошибка "Out of memory" 
Проблема: Недостаточно памяти при генерации для всех модулей
Решения:
- Увеличьте 
memory_limitв php.ini - Генерируйте аннотации по частям (по модулям)
 - Используйте инкрементальную генерацию
 - Оптимизируйте список сканируемых модулей
 
Устаревшие аннотации 
Проблема: Аннотации не соответствуют текущей структуре
Решения:
- Используйте опцию 
--cleanдля полной перегенерации - Настройте автоматическое обновление после изменений
 - Регулярно запускайте команду в cron
 
Полезные советы 
💡 Регулярно обновляйте - настройте автоматическое обновление после изменений
💡 Версионируйте - коммитьте файл аннотаций в Git для синхронизации команды
💡 Используйте --clean - при проблемах полностью перегенерируйте аннотации
💡 Оптимизируйте список модулей - не сканируйте лишние модули
💡 Интегрируйте в CI/CD - автоматизируйте генерацию при деплое
💡 Мониторьте изменения - отслеживайте изменения структуры автоматически
💡 Документируйте - используйте аннотации для создания документации
Смотрите также 
- Команды make - создание ORM-классов для таблиц
 - Команды разработки - генерация метаданных для IDE
 - Официальная документация Битрикс по ORM