Files
cc-1c-skills/tests/skills/cases/meta-validate/error-subscription-empty-source.json
T
Nick ShirokovandClaude Opus 5 f694c48835 fix(meta-validate): ложные срабатывания на типовых конфигурациях
Прогон по acc_8.3.24 и erp_8.3.24 (33 895 объектов) давал 246 ERROR и 1662 WARN на выгрузках,
которые платформа принимает без единой ошибки, — то есть ложным был весь вывод валидатора.
Две группы при этом роняли exit=1 на типовой конфигурации: то же, из-за чего заводились #79 и #84,
только зеркально.

Разобрано платформой на стенде 8.3.24.1691, каждый случай — копия эталона с одной мутацией:

- пустой <Type/> у реквизита — это тип «Произвольный»; загрузка проходит, round-trip сохраняет
  конструкцию без изменений. Было ERROR (245 раз), стало молчание;
- блока Type нет вовсе — загрузка тоже проходит, но платформа молча подставляет тип нового
  реквизита, Строка(10). Замысел теряется, загрузка нет: ERROR заменён на WARN;
- IntegrationService и Bot отсутствовали в списках видов метаданных (в спеке 45 типов, навык знал
  43) — штатный объект типовой давал «Unrecognized metadata type» и exit=1;
- HierarchyType платформа пишет всегда и при выключенной иерархии игнорирует: из 1254 срабатываний
  1253 приходились на её собственный дефолт. Предупреждаем только о явно заданном другом типе;
- источник подписки задают и наборами типов (<v8:TypeSet>), а состав журнала — элементами
  <xr:Item>; проверки искали только <v8:Type> и потому не видели ни одной такой подписки и ни
  одного журнала. Зато реально пустой источник и пустой состав платформа отвергает
  («Источник событий должен быть задан», «Для журнала не заданы регистрируемые документы») —
  там уровень поднят с WARN до ERROR;
- сигнатура процедуры переносится на несколько строк, и Экспорт оказывается не на строке с именем;
  регулярка требовала одну строку. Модуль поставщика в двоичном виде (Module.bin) больше не даёт
  предупреждения «файл не найден» — текста там нет by design;
- ExchangeDate — легаси-реквизит планов обмена, поддержан в meta-compile и meta-decompile:
  добавлен как допустимый, но не обязательный.

После правки корпус даёт 0 ERROR и 1 WARN — тот самый единственный недефолтный тип иерархии.
Объём проверки не потерян: объектов провалидировано 33 895 против 33 894.

Восемь новых кейсов держат обе стороны каждой правки: валидная конструкция молчит, настоящая
ошибка по-прежнему ловится.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-22 14:00:22 +03:00

12 lines
382 B
JSON

{
"name": "Пустой источник подписки — платформа отвергает загрузку (Check 10)",
"setup": "fixture:subscription-empty-source",
"params": {
"objectPath": "EventSubscriptions/ТестПодписка.xml"
},
"expectError": true,
"expect": {
"stdoutContains": "источник событий не задан"
}
}