Skip to content
Back to skills

1c Query Validate

ASecurity

Проверка текста запроса 1С по выгрузке конфигурации - существуют ли таблицы, табличные части, виртуальные таблицы регистров и поля. Работает без платформы, по индексу от 1c-config-index

  • 73 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 2, 2026
ai-agentspythonshellbash

Security analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned September 2, 2026

npx -y skills add Desko77/claude-code-skills-1c --skill 1c-query-validate --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of 1c Query Validate?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for 1c Query Validate
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/desko77-1c-query-validate/badge)](https://www.skillsdirectory.com/skills/desko77-1c-query-validate)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: 1c-query-validate
description: Проверка текста запроса 1С по выгрузке конфигурации - существуют ли таблицы, табличные части, виртуальные таблицы регистров и поля. Работает без платформы, по индексу от 1c-config-index
argument-hint: <-QueryPath файл | -Query текст> -IndexPath index.json [-Detailed]
allowed-tools:
  - Bash
  - Read
  - Glob
---

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

Берет текст запроса и индекс конфигурации, отвечает на один вопрос: все ли имена в запросе
существуют. Опечатка в имени таблицы или поля ловится до того, как запрос попадет в базу.

Работает без EDT, без платформы и без базы.

## Параметры

| Параметр   | Обяз. | Умолч. | Описание                                                    |
|------------|:-----:|--------|--------------------------------------------------------------|
| QueryPath  | *     | -      | Файл с текстом запроса                                       |
| Query      | *     | -      | Текст запроса прямо в аргументе                              |
| IndexPath  | да    | -      | Индекс от `1c-config-index`                                  |
| Detailed   | нет   | -      | Показать счетчики проверенного даже когда есть замечания     |
| MaxErrors  | нет   | 30     | Не выводить больше N замечаний                               |

\* Нужен ровно один из `QueryPath` и `Query`.

## Команда

```bash
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
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` - проверка схемы компоновки, включая запросы ее наборов данных

Files in this skill

  • SKILL.md7.4 KB
  • scripts/query-validate.ps116.4 KB
  • scripts/query-validate.py16.9 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.