/query-validate - проверка запроса по выгрузке
SkillDev toolsValidates 1C query text against a configuration export - whether tables, tabular sections, register virtual tables, and fields exist. Works without the platform, using the index from 1c-config-index
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 /query-validate - проверка запроса по выгрузке skill
What this skill tells your AI
The instructions your AI receives, as published by desko77/cursor-1c-skills in skills/1c-query-validate/SKILL.md and read by ahel’s review.
Берет текст запроса и индекс конфигурации, отвечает на один вопрос: все ли имена в запросе существуют. Опечатка в имени таблицы или поля ловится до того, как запрос попадет в базу.
Работает без EDT, без платформы и без базы.
Параметры
| Параметр | Обяз. | Умолч. | Описание |
|---|---|---|---|
| QueryPath | * | - | Файл с текстом запроса |
| Query | * | - | Текст запроса прямо в аргументе |
| IndexPath | да | - | Индекс от 1c-config-index |
| Detailed | нет | - | Показать счетчики проверенного даже когда есть замечания |
| MaxErrors | нет | 30 | Не выводить больше N замечаний |
* Нужен ровно один из QueryPath и Query.
Команда
python skills/1c-config-index/scripts/config-index.py -ConfigPath src -OutFile .cache/index.json
python skills/1c-query-validate/scripts/query-validate.py -QueryPath запрос.txt -IndexPath .cache/index.json
powershell.exe -NoProfile -File "skills/1c-query-validate/scripts/query-validate.ps1" -QueryPath "запрос.txt" -IndexPath ".cache/index.json"
Что проверяется
Имена метаданных где угодно в тексте. Двухчастное имя вида Справочник.Контрагенты проверяется
на существование объекта - в ИЗ, в ВЫРАЗИТЬ ... КАК, в ССЫЛКА, в ЗНАЧЕНИЕ, в условиях. Оба
языка запроса: Catalog.Контрагенты разбирается так же.
Третья часть - только в позиции таблицы (после ИЗ, FROM, СОЕДИНЕНИЕ, JOIN):
- у объектов - табличная часть:
Документ.Накладная.Товары; - у регистров - виртуальная таблица:
РегистрНакопления.Остатки.ОстаткиИОбороты. Список закрытый, незнакомое имя дает замечание.
Вне позиции таблицы третья часть не трогается: там она может быть значением перечисления
(ЗНАЧЕНИЕ(Перечисление.Статусы.Новый)), пустой ссылкой или предопределенным элементом.
Поля по псевдонимам. Из ИЗ <таблица> КАК <псевдоним> строится привязка, дальше каждое
Псевдоним.Поле сверяется с составом таблицы: реквизиты, измерения, ресурсы, признаки учета,
табличные части, стандартные поля.
Поля виртуальных таблиц выводятся из ресурсов по суффиксам: у Остатки это <Ресурс>Остаток, у
Обороты - <Ресурс>Оборот, <Ресурс>Приход, <Ресурс>Расход, у ОстаткиИОбороты - еще
НачальныйОстаток и КонечныйОстаток.
Чего НЕ проверяется
Это не платформенная валидация запроса и заменой ей не служит. Без платформы недоступны типы выражений, совместимость соединений, корректность агрегатов и план выполнения. Здесь только имена.
Намеренно пропускается:
- псевдоним, привязанный не к таблице метаданных - временная таблица (
ПОМЕСТИТЬ ВТ_Имя), вложенный запрос, внешний источник данных. Состав их полей задается самим запросом; - псевдоним таблицы, которой нет в конфигурации - иначе одна опечатка в имени таблицы породила бы замечание на каждое ее поле;
- вторая и далее часть поля (
Т.Ссылка.Контрагент) - навигация по ссылке требует разрешать типы цепочкой; - параметры виртуальных таблиц в скобках;
- строковые литералы и комментарии вырезаются до разбора: внутри них
Справочник.Что-Нибудь- просто текст.
Стандартные поля принимаются ОБЩИМ списком, а не по видам объектов: у справочника пройдет и
Проведен. Так сделано намеренно - неверная привязка поля к виду дала бы ложное срабатывание, а
лишнее имя в списке дает всего лишь пропуск.
Индекс должен быть построен по ПОЛНОЙ выгрузке. На частичной (выгружена часть объектов) проверка
будет сообщать об объектах, оставшихся снаружи, - отличить такую выгрузку от конфигурации с битой
ссылкой по файлам нельзя. У расширения признак есть (ConfigurationExtensionPurpose), и там
формулировка мягче.
Все замечания - предупреждения, код возврата всегда 0. Проверка кросс-объектная и молодая, а валидатор, однажды выдавший ложную ошибку, выключается целиком.
Связанные навыки
1c-config-index- строит индекс, без него проверка не работаетcomposing-1c-queries- как писать запросы: синтаксис, функции, подводные камни1c-query-optimization- разбор производительности запроса1c-skd-validate- проверка схемы компоновки, включая запросы ее наборов данных
Signals
- GitHub stars
- 57
- Forks
- 13
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
x-1c-query-validate-desko77- Source
- github.com/desko77/cursor-1c-skills