1c-meta-validate

Валидация объекта метаданных 1С. Используй после создания или модификации объекта конфигурации для проверки корректности

SKILL.md

GitHub

/meta-validate - валидация объекта метаданных 1С

Проверяет XML объекта метаданных из выгрузки конфигурации на структурные ошибки.

Параметры

Параметр Обяз. Умолч. Описание
ObjectPath да - Путь к XML-файлу или каталогу. Через | для batch
Detailed нет - Подробный вывод (все проверки, включая успешные)
MaxErrors нет 30 Остановиться после N ошибок (per object)
OutFile нет - Записать результат в файл (UTF-8 BOM)
IndexPath нет - Индекс конфигурации от 1c-config-index: включает сверку ссылочных типов с остальной конфигурацией

Команда

powershell.exe -NoProfile -File skills/1c-meta-validate/scripts/meta-validate.ps1 -ObjectPath "Catalogs/Номенклатура/Номенклатура.xml"
powershell.exe -NoProfile -File skills/1c-meta-validate/scripts/meta-validate.ps1 -ObjectPath "Catalogs/Банки|Documents/Заказ"

Сверка ссылочных типов (проверка 16)

Реквизит с типом CatalogRef.Контрагенты при отсутствующем справочнике проходил валидацию: объект проверялся сам по себе. Проверка 16 закрывает это - она сверяет типы реквизитов, измерений, ресурсов, реквизитов табличных частей и значение самого объекта с тем, что есть в конфигурации.

Два источника ответа:

  • -IndexPath - индекс от навыка 1c-config-index. Точный ответ: индекс несет ВСЕ порождаемые типы конфигурации, включая Characteristic.ВидыСубконто и DefinedType.МойТип. Строится один раз на прогон, поэтому годится для проверки всей конфигурации подряд.
  • Без него - резерв: объект ищется файлом в каталоге конфигурации. Для одного объекта дешево, на всей конфигурации - обход каталога на каждую ссылку.

Нет ни того, ни другого (одиночный файл вне выгрузки) - проверка не выполняется и прямо об этом сообщает. Молчать нельзя: молчание читалось бы как "нарушений нет".

Тяжесть всегда предупреждение, не ошибка. Проверяется ОДИН объект, и валидатор не знает, полна ли выгрузка: файл могли достать из конфигурации побольше. В расширении и у заимствованного объекта (ObjectBelonging = Adopted) формулировка мягче - там ссылка на основную конфигурацию нормальна.

Ссылочный тип узнается по форме имени: часть до первой точки кончается на Ref либо это Characteristic или DefinedType. Прочее с точкой не трогается - ложное срабатывание дороже пропуска.

python skills/1c-config-index/scripts/config-index.py -ConfigPath src -OutFile .cache/index.json
python skills/1c-meta-validate/scripts/meta-validate.py -ObjectPath src/Catalogs/Контрагенты.xml -IndexPath .cache/index.json