Индекс метаданных и модулей конфигураций 1С

Единый кэш: cache/1c_meta/index.sqlite — все выгрузки 1С проекта в одной БД (FTS5).

Скрипт Назначение
index_1c.py построение и обновление индекса
query_1c.py поиск по готовому индексу

Документация для Cursor: .cursor/rules/1c-meta-index.mdc


Параметры командной строки

Параметр Короткий Что это
--config -c Файл настроек утилиты (JSON), см. config.example.json. Не конфигурация 1С.
--root -r Корень проекта CRM3-26 (если скрипт запущен не из дерева проекта).
--baseconf -b Выгрузка конфигурации 1С в репозитории — папка <name>/src/. Можно указывать несколько раз.

Алиасы --baseconf

Алиас Папка в репозитории
target, crm3_26 crm3-26
source, crm3_old, crm3-old, crm3_dev crm3-dev

Список выгрузок и алиасов: python tools/index/index_1c.py list


Зачем это нужно

При работе в Cursor поиск по XML/BSL всего дерева crm3-26/src (десятки тысяч файлов) медленный. Индекс один раз разбирает метаданные и модули и даёт:

  • поиск объектов по имени, синониму, полям;
  • обратный индекс ссылок (refs);
  • поиск по BSL (процедуры, фрагменты кода);
  • фильтр по конкретной выгрузке (-b crm3-26).

Типичный workflow агента: query_1c.py searchshow / refs → открыть конкретный .bsl или .xml, без полного Grep по конфигурации.


index_1c.py — переиндексация

Команды

Команда Описание
reindex обновить индекс (по умолчанию только изменившиеся файлы)
status размер БД, метаданные, список проиндексированных baseconf
list какие <name>/src/ есть в репозитории и что уже в индексе

Режимы reindex

Вызов Поведение
reindex -j 12 инкремент всех известных выгрузок с src/
reindex --full -j 12 удалить index.sqlite и собрать заново
reindex --full -b crm3-26 пересобрать только crm3-26 (остальные в БД сохраняются)
reindex -b target -t Documents,Catalogs только документы и справочники целевой конфигурации
reindex -b ws-rhana --no-modules только XML метаданных, без .bsl

Дополнительно: --md — экспорт Markdown в cache/1c_meta/md/<baseconf>/ для @ в чате.

Что попадает в индекс

  • Метаданные: src/<ТипObjects>/*.xml — имя, синоним, реквизиты, измерения, типы, ссылки.
  • Модули: все **/*.bsl — путь, владелец (Document.ЗаказКлиента), процедуры/функции, тело (до 200 КБ в FTS).

Пропускаются по умолчанию: картинки, стили, XDTO, шаблоны, языки.


query_1c.py — поиск

Требует готовый cache/1c_meta/index.sqlite (см. index_1c.py reindex).

Команды

Команда Аргумент Результат
search строка запроса объекты метаданных (FTS)
show имя объекта полная карточка JSON
refs Catalog.Партнеры кто ссылается полем-ссылкой
modules строка поиск по BSL
module путь или owner метаданные модуля (символы, строки)

Примеры

# все конфигурации в индексе
python tools/index/query_1c.py search "ЗаказКлиента"

# только целевая (алиас target)
python tools/index/query_1c.py show ЗаказКлиента -b target
python tools/index/query_1c.py show Document.ЗаказКлиента -b crm3-26

# исходная + расширение
python tools/index/query_1c.py search "Партнер" -b source -b crm3-dev.rhana

# модули ws-rhana
python tools/index/query_1c.py modules "ОбработатьHealth" -b ws-rhana

# обратные ссылки в целевой
python tools/index/query_1c.py refs Catalog.Партнеры -b target --limit 20

Ошибки

  • Нет индекса — подсказка запустить index_1c.py reindex.
  • -b unknown — список папок в репозитории и алиасы.
  • -b crm3-26, но не проиндексировано — список того, что есть в БД, и команда переиндексации.
  • show не нашёл объект — похожие имена из индекса.

Файл настроек утилиты (--config)

Для нестандартного расположения проекта:

cp tools/index/config.example.json tools/index/config.local.json
# отредактировать project_root
python tools/index/query_1c.py --config tools/index/config.local.json search "Заказ"

Приоритет корня: --root > project_root в JSON > автоопределение от tools/index/.


Применение в Cursor

  1. После выгрузки из EDT/конфигуратора:
    python tools/index/index_1c.py reindex -j 12
    или reindex -b target если менялась только целевая.
  2. Агент ищет через query_1c.py, не через Grep по src/.
  3. Уточнение контекста: -b target / -b source чтобы не смешивать старую и новую конфигурацию.
  4. Для кода: modules → открыть найденный rel_path в репозитории.

Артефакты

cache/1c_meta/
  index.sqlite      # единая БД
  INDEX.md          # сводка последнего reindex
  manifest.json
  md/<baseconf>/    # опционально (--md)

Старые per-config search.sqlite в подкаталогах не используются.

S
Description
Утилита индексирования конфигураций 1С для контекстного и полнотекстового поиска без сканирования многочисленных папок
Readme GPL-3.0 326 KiB
Languages
Python 100%