7.1 KiB
Индекс метаданных и модулей конфигураций 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 search → show / 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
- После выгрузки из EDT/конфигуратора:
python tools/index/index_1c.py reindex -j 12
илиreindex -b targetесли менялась только целевая. - Агент ищет через
query_1c.py, не через Grep поsrc/. - Уточнение контекста:
-b target/-b sourceчтобы не смешивать старую и новую конфигурацию. - Для кода:
modules→ открыть найденныйrel_pathв репозитории.
Артефакты
cache/1c_meta/
index.sqlite # единая БД
INDEX.md # сводка последнего reindex
manifest.json
md/<baseconf>/ # опционально (--md)
Старые per-config search.sqlite в подкаталогах не используются.