/query-validate - проверка запроса по выгрузке

SkillAI & models

Validates 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.

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/claude-code-skills-1c 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
61
Forks
14
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
x-1c-query-validate
Source
github.com/desko77/claude-code-skills-1c