/config-index - индекс конфигурации 1С
SkillDev toolsIndexes a 1C configuration XML export into a single JSON - what objects exist, their attributes, table parts, register dimensions and resources, and exported methods of common modules. Needed by other skills for checks where an object is validated against the rest of the configuration.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the /config-index - индекс конфигурации 1С skill
What this skill tells your AI
The instructions your AI receives, as published by desko77/cursor-1c-skills in skills/1c-config-index/SKILL.md and read by ahel’s review.
Один проход по выгрузке, на выходе один JSON. Индекс отвечает на вопрос "что вообще есть в этой конфигурации и из чего оно состоит" - и тем самым дает остальным навыкам то, чего им не хватало: возможность проверить объект не сам по себе, а против остальной конфигурации.
Работает без EDT, без платформы и без запущенной базы - читает только файлы выгрузки.
Параметры
| Параметр | Обяз. | Умолч. | Описание |
|---|---|---|---|
| ConfigPath | да | - | Каталог выгрузки (где лежит Configuration.xml) либо путь к нему |
| OutFile | нет | - | Куда записать индекс. Без него JSON печатается в stdout |
| Detailed | нет | - | Дописать в отчет имена ненайденных объектов и время сборки |
Команда
powershell.exe -NoProfile -File "skills/1c-config-index/scripts/config-index.ps1" -ConfigPath "src" -OutFile "index.json"
python skills/1c-config-index/scripts/config-index.py -ConfigPath src -OutFile index.json
Что попадает в индекс
| Ключ | Что там |
|---|---|
format | Версия схемы индекса. Читающий навык обязан ее проверять |
kind | configuration либо extension - по ConfigurationExtensionPurpose |
name, version, namePrefix | Имя конфигурации, версия, префикс имен расширения |
declared | Состав Configuration.xml: тип -> список имен, в порядке записи |
objects | Ключ Тип.Имя -> разбор объекта (см. ниже) |
types | Все GeneratedType конфигурации: CatalogRef.Контрагенты, DocumentObject.Накладная и прочие |
commonModules | Общий модуль -> список ЭКСПОРТНЫХ методов его Ext/Module.bsl |
missing | Объявлено в Configuration.xml, но файла на диске нет |
unknownKinds | Типы из ChildObjects, которых нет в карте типов |
Запись объекта несет только непустое: attributes, standardAttributes, tabularSections,
standardTabularSections, dimensions, resources, addressingAttributes, accountingFlags,
extDimensionAccountingFlags, enumValues, forms, templates, commands, subsystems,
recalculations, columns, operations, urlTemplates, valueType, props и refs. Пустые
корзины не пишутся: на конфигурации в тысячи объектов они дали бы мегабайты фигурных скобок.
Табличная часть записана как {"attributes": {имя: [типы]}, "standardAttributes": [имена]} -
собственные колонки и стандартные лежат рядом, но раздельно.
Стандартные реквизиты берутся из блока StandardAttributes самой выгрузки, а не из своей таблицы:
таблица разошлась бы с платформой молча. Имена там внутренние, английские (Description, Code,
Period) - и в путях данных формы они пишутся точно так же.
У реквизита хранится список типов с отброшенным префиксом пространства имен: CatalogRef.Контрагенты,
string, decimal. Ссылочный тип узнается по точке в имени.
props держит те свойства, которые нужны последующим проверкам: Hierarchical, CodeLength,
DescriptionLength, RegisterType, Periodicity, WriteMode, ObjectBelonging и флаги общего
модуля. refs - списки ссылок на другие объекты: состав подсистемы (Content), движения документа
(RegisterRecords), владельцы, основания, регистры последовательности.
Вложенная подсистема получает ключ с полным путем: Subsystem.Основная.Subsystem.Справочники -
именно так подсистема адресуется во всей конфигурации.
Чего индекс НЕ делает
Он ничего не проверяет и ни на что не ругается, кроме одного: сообщает, что объект объявлен в
Configuration.xml, а файла нет. Проверки строятся ПОВЕРХ индекса в других навыках.
Он не разбирает формы, макеты и схемы компоновки - только перечисляет их имена. Не читает права ролей. Не выводит типы выражений BSL и не понимает запросы: без платформы этого получить нельзя.
Сколько это стоит
Замер на синтетической конфигурации: 3007 объектов, 3515 файлов, 43 МБ выгрузки, индекс на выходе 2.7 МБ.
| Порт | Время |
|---|---|
| python | ~2.5 с |
| powershell | ~16 с |
Разрыв объясняется стоимостью обхода XML в PowerShell, а не разной работой: оба порта дают байт-в-байт одинаковый JSON, это закреплено кейсами. На больших конфигурациях брать python-порт.
Как этим пользуются другие навыки
Индекс строится ОДИН раз на прогон и передается проверкам файлом. Обход каталога на каждую ссылку превратил бы валидацию большой конфигурации в неприемлемо долгую.
python skills/1c-config-index/scripts/config-index.py -ConfigPath src -OutFile .cache/config-index.json
# дальше этот файл отдается навыкам-проверкам параметром -IndexPath
Расширение и частичная выгрузка - нормальное состояние: объект может ссылаться на то, чего в ЭТОЙ
выгрузке нет, потому что оно в основной конфигурации. Индекс это различает полем kind, а
проверяющий навык обязан на него смотреть - иначе на любом расширении утонет в ложных ошибках.
Связанные навыки
1c-cf-info- краткая сводка по конфигурации для человека; индекс же машинный и полный1c-meta-info- разбор одного объекта метаданных1c-meta-validate,1c-cf-validate,1c-form-validate- проверки, которые читают индекс
Signals
- GitHub stars
- 57
- Forks
- 13
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
x-1c-config-index-desko77- Source
- github.com/desko77/cursor-1c-skills