feat(form-validate): путь на необъявленный основной реквизит заимствованной формы

Форма, которую платформа отвергала с «Неверный путь к полю - Объект.Партнер»,
проходила валидацию с вердиктом OK. Check 5 такое не видит по двум причинам:
у формы с BaseForm он пропускает базовые элементы (id < 1000000), а привязка
внутри <ChoiceParameterLinks> лежит в <xr:DataPath> и в его список тегов не
входит вовсе.

Проверка 11d: если форма не объявляет основной реквизит, любой путь с корнем
«Объект» не разрешится — ошибка. Непрозрачные формы пути (1/0:uuid), которыми
как раз и заменяет такие ссылки Конфигуратор, ошибкой не считаются.

Две фикстуры: висячая ссылка ловится, та же форма в uuid-форме проходит.
Регресс 13/13 на обоих рантаймах.
This commit is contained in:
Nick Shirokov
2026-08-12 15:58:45 +03:00
parent 1bd0c7724e
commit 9a28fbfacb
7 changed files with 188 additions and 2 deletions
@@ -0,0 +1,7 @@
{
"name": "Ошибка: путь Объект.* в заимствованной форме без объявленного основного реквизита",
"setup": "fixture:borrowed-object-path-no-main",
"params": { "formPath": "Documents/Заказ/Forms/ФормаДокумента" },
"expectError": true,
"expect": { "stdoutContains": "Объект.Партнер" }
}
@@ -0,0 +1,5 @@
{
"name": "Заимствованная форма без основного реквизита: непрозрачный путь 1/0:uuid ошибкой не считается",
"setup": "fixture:borrowed-object-path-opaque",
"params": { "formPath": "Documents/Заказ/Forms/ФормаДокумента" }
}
@@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<Form xmlns="http://v8.1c.ru/8.3/xcf/logform" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.20">
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
<Autofill>false</Autofill>
</AutoCommandBar>
<ChildItems>
<InputField name="КонтактноеЛицо" id="4">
<ChoiceParameterLinks>
<xr:Link>
<xr:Name>Отбор.Владелец</xr:Name>
<xr:DataPath xsi:type="xs:string">Объект.Партнер</xr:DataPath>
<xr:ValueChange>Clear</xr:ValueChange>
</xr:Link>
</ChoiceParameterLinks>
<ContextMenu name="КонтактноеЛицоКонтекстноеМеню" id="5"/>
<ExtendedTooltip name="КонтактноеЛицоРасширеннаяПодсказка" id="6"/>
</InputField>
</ChildItems>
<Attributes/>
<BaseForm version="2.20">
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
<Autofill>false</Autofill>
</AutoCommandBar>
<ChildItems>
<InputField name="КонтактноеЛицо" id="4">
<ChoiceParameterLinks>
<xr:Link>
<xr:Name>Отбор.Владелец</xr:Name>
<xr:DataPath xsi:type="xs:string">Объект.Партнер</xr:DataPath>
<xr:ValueChange>Clear</xr:ValueChange>
</xr:Link>
</ChoiceParameterLinks>
<ContextMenu name="КонтактноеЛицоКонтекстноеМеню" id="5"/>
<ExtendedTooltip name="КонтактноеЛицоРасширеннаяПодсказка" id="6"/>
</InputField>
</ChildItems>
<Attributes/>
</BaseForm>
</Form>
@@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<Form xmlns="http://v8.1c.ru/8.3/xcf/logform" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.20">
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
<Autofill>false</Autofill>
</AutoCommandBar>
<ChildItems>
<InputField name="КонтактноеЛицо" id="4">
<ChoiceParameterLinks>
<xr:Link>
<xr:Name>Отбор.Владелец</xr:Name>
<xr:DataPath xsi:type="xs:string">1/0:8d121ce6-6d64-46b8-994d-69e60ed91a43</xr:DataPath>
<xr:ValueChange>Clear</xr:ValueChange>
</xr:Link>
</ChoiceParameterLinks>
<ContextMenu name="КонтактноеЛицоКонтекстноеМеню" id="5"/>
<ExtendedTooltip name="КонтактноеЛицоРасширеннаяПодсказка" id="6"/>
</InputField>
</ChildItems>
<Attributes/>
<BaseForm version="2.20">
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
<Autofill>false</Autofill>
</AutoCommandBar>
<ChildItems>
<InputField name="КонтактноеЛицо" id="4">
<ChoiceParameterLinks>
<xr:Link>
<xr:Name>Отбор.Владелец</xr:Name>
<xr:DataPath xsi:type="xs:string">1/0:8d121ce6-6d64-46b8-994d-69e60ed91a43</xr:DataPath>
<xr:ValueChange>Clear</xr:ValueChange>
</xr:Link>
</ChoiceParameterLinks>
<ContextMenu name="КонтактноеЛицоКонтекстноеМеню" id="5"/>
<ExtendedTooltip name="КонтактноеЛицоРасширеннаяПодсказка" id="6"/>
</InputField>
</ChildItems>
<Attributes/>
</BaseForm>
</Form>
@@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<Form xmlns="http://v8.1c.ru/8.3/xcf/logform" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.20">
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
<Autofill>false</Autofill>
</AutoCommandBar>
<ChildItems>
<InputField name="КонтактноеЛицо" id="4">
<ChoiceParameterLinks>
<xr:Link>
<xr:Name>Отбор.Владелец</xr:Name>
<xr:DataPath xsi:type="xs:string">1/0:UUID-001</xr:DataPath>
<xr:ValueChange>Clear</xr:ValueChange>
</xr:Link>
</ChoiceParameterLinks>
<ContextMenu name="КонтактноеЛицоКонтекстноеМеню" id="5"/>
<ExtendedTooltip name="КонтактноеЛицоРасширеннаяПодсказка" id="6"/>
</InputField>
</ChildItems>
<Attributes/>
<BaseForm version="2.20">
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
<Autofill>false</Autofill>
</AutoCommandBar>
<ChildItems>
<InputField name="КонтактноеЛицо" id="4">
<ChoiceParameterLinks>
<xr:Link>
<xr:Name>Отбор.Владелец</xr:Name>
<xr:DataPath xsi:type="xs:string">1/0:UUID-001</xr:DataPath>
<xr:ValueChange>Clear</xr:ValueChange>
</xr:Link>
</ChoiceParameterLinks>
<ContextMenu name="КонтактноеЛицоКонтекстноеМеню" id="5"/>
<ExtendedTooltip name="КонтактноеЛицоРасширеннаяПодсказка" id="6"/>
</InputField>
</ChildItems>
<Attributes/>
</BaseForm>
</Form>