mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-03 02:00:22 +03:00
fix(meta-compile): строка вида "Документ.Имя" перестала молча становиться ссылкой
Значением параметра выбора и значения заполнения бывает ЗНАЧЕНИЕ — пустая
ссылка, предопределённый элемент или значение перечисления. Объект метаданных
значением быть не может, поэтому двухчастное "Тип.Имя" — это строка.
Правило уже существовало, но только для перечислений ("Enum.X" не значение);
для остальных корней его не было, и строка "Документ.РеализацияТоваровУслуг"
превращалась в xr:DesignTimeRef с переводом имени на английский — молчаливая
подмена смысла: вместо текста получалась ссылка на реальный документ.
Проверка по корпусу (acc+erp+ut): 5520 значений в ChoiceParameters и 8623 в
FillValue — двухчастных с типом метаданных НЕТ ни одного. Прощающий ввод не
пострадал: "Справочник.Номенклатура.ПустаяСсылка" -> Catalog.Номенклатура.EmptyRef,
"Перечисление.X.Y" -> Enum.X.EnumValue.Y работают как раньше (закреплено кейсом).
Проверка: УТ tier-1 1283 -> 1282 совпадения, справочники 519/519,
сюита 76/76 на обоих портах, 1С-сертификация кейса пройдена.
Остаётся 1 расхождение — план обмена без Ext/Content.xml (хвостовая аномалия
конфигурации: на одной БП все четыре платформы файл пишут).
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
3d5c9e5bee
commit
4b6c3faa1d
@@ -853,8 +853,12 @@ function Normalize-FillRef {
|
|||||||
$root = $script:fillRefRoots[$parts[0].ToLower()]
|
$root = $script:fillRefRoots[$parts[0].ToLower()]
|
||||||
if (-not $root) { return $null }
|
if (-not $root) { return $null }
|
||||||
$typeName = $parts[1]
|
$typeName = $parts[1]
|
||||||
|
# Двухчастное "Тип.Имя" — это объект метаданных, а не ЗНАЧЕНИЕ. Значением бывают пустая ссылка,
|
||||||
|
# предопределённый элемент или значение перечисления — все они длиннее. Правило было выведено
|
||||||
|
# только для Enum; без него строка вида "Документ.РеализацияТоваров" молча становилась ссылкой
|
||||||
|
# (на корпусе: 5520 значений в ChoiceParameters и 8623 в FillValue — двухчастных НЕТ ни одного).
|
||||||
|
if ($parts.Count -lt 3) { return $null }
|
||||||
if ($root -eq 'Enum') {
|
if ($root -eq 'Enum') {
|
||||||
if ($parts.Count -eq 2) { return $null } # "Enum.X" — не значение
|
|
||||||
if ($parts.Count -eq 3) {
|
if ($parts.Count -eq 3) {
|
||||||
if ($script:fillEmptyRefWords -contains $parts[2].ToLower()) { return "Enum.$typeName.EmptyRef" }
|
if ($script:fillEmptyRefWords -contains $parts[2].ToLower()) { return "Enum.$typeName.EmptyRef" }
|
||||||
return "Enum.$typeName.EnumValue.$($parts[2])"
|
return "Enum.$typeName.EnumValue.$($parts[2])"
|
||||||
|
|||||||
@@ -873,9 +873,13 @@ def normalize_fill_ref(s):
|
|||||||
if not root:
|
if not root:
|
||||||
return None
|
return None
|
||||||
type_name = parts[1]
|
type_name = parts[1]
|
||||||
|
# Двухчастное "Тип.Имя" — это объект метаданных, а не ЗНАЧЕНИЕ. Значением бывают пустая ссылка,
|
||||||
|
# предопределённый элемент или значение перечисления — все они длиннее. Правило было выведено
|
||||||
|
# только для Enum; без него строка вида "Документ.РеализацияТоваров" молча становилась ссылкой
|
||||||
|
# (на корпусе: 5520 значений в ChoiceParameters и 8623 в FillValue — двухчастных НЕТ ни одного).
|
||||||
|
if len(parts) < 3:
|
||||||
|
return None
|
||||||
if root == 'Enum':
|
if root == 'Enum':
|
||||||
if len(parts) == 2:
|
|
||||||
return None
|
|
||||||
if len(parts) == 3:
|
if len(parts) == 3:
|
||||||
if parts[2].lower() in fill_empty_ref_words:
|
if parts[2].lower() in fill_empty_ref_words:
|
||||||
return f'Enum.{type_name}.EmptyRef'
|
return f'Enum.{type_name}.EmptyRef'
|
||||||
|
|||||||
@@ -15,7 +15,12 @@
|
|||||||
{ "name": "ПустаяСсылка", "type": "String(10)",
|
{ "name": "ПустаяСсылка", "type": "String(10)",
|
||||||
"choiceParameters": [ { "name": "Отбор.ТипПоказателя", "value": { "emptyRef": true } } ] },
|
"choiceParameters": [ { "name": "Отбор.ТипПоказателя", "value": { "emptyRef": true } } ] },
|
||||||
{ "name": "ПустаяСсылкаВМассиве", "type": "String(10)",
|
{ "name": "ПустаяСсылкаВМассиве", "type": "String(10)",
|
||||||
"choiceParameters": [ { "name": "Отбор.Набор", "value": [ { "emptyRef": true }, "ТТН" ] } ] }
|
"choiceParameters": [ { "name": "Отбор.Набор", "value": [ { "emptyRef": true }, "ТТН" ] } ] },
|
||||||
|
{ "name": "СтрокаПохожаяНаСсылку", "type": "String(60)",
|
||||||
|
"choiceParameters": [ { "name": "Отбор.ТипДокумента", "value": "Документ.РеализацияТоваровУслуг" } ] },
|
||||||
|
{ "name": "НастоящаяСсылка", "type": "CatalogRef.Номенклатура",
|
||||||
|
"fillValue": "Справочник.Номенклатура.ПустаяСсылка",
|
||||||
|
"choiceParameters": [ { "name": "Отбор.Вид", "value": "Перечисление.ТипыВЕТИС.ТТН" } ] }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"validatePath": "Catalogs/ТестВыбора",
|
"validatePath": "Catalogs/ТестВыбора",
|
||||||
|
|||||||
+92
@@ -369,6 +369,98 @@
|
|||||||
<DataHistory>Use</DataHistory>
|
<DataHistory>Use</DataHistory>
|
||||||
</Properties>
|
</Properties>
|
||||||
</Attribute>
|
</Attribute>
|
||||||
|
<Attribute uuid="UUID-018">
|
||||||
|
<Properties>
|
||||||
|
<Name>СтрокаПохожаяНаСсылку</Name>
|
||||||
|
<Synonym>
|
||||||
|
<v8:item>
|
||||||
|
<v8:lang>ru</v8:lang>
|
||||||
|
<v8:content>Строка похожая на ссылку</v8:content>
|
||||||
|
</v8:item>
|
||||||
|
</Synonym>
|
||||||
|
<Comment/>
|
||||||
|
<Type>
|
||||||
|
<v8:Type>xs:string</v8:Type>
|
||||||
|
<v8:StringQualifiers>
|
||||||
|
<v8:Length>60</v8:Length>
|
||||||
|
<v8:AllowedLength>Variable</v8:AllowedLength>
|
||||||
|
</v8:StringQualifiers>
|
||||||
|
</Type>
|
||||||
|
<PasswordMode>false</PasswordMode>
|
||||||
|
<Format/>
|
||||||
|
<EditFormat/>
|
||||||
|
<ToolTip/>
|
||||||
|
<MarkNegatives>false</MarkNegatives>
|
||||||
|
<Mask/>
|
||||||
|
<MultiLine>false</MultiLine>
|
||||||
|
<ExtendedEdit>false</ExtendedEdit>
|
||||||
|
<MinValue xsi:nil="true"/>
|
||||||
|
<MaxValue xsi:nil="true"/>
|
||||||
|
<FillFromFillingValue>false</FillFromFillingValue>
|
||||||
|
<FillValue xsi:type="xs:string"/>
|
||||||
|
<FillChecking>DontCheck</FillChecking>
|
||||||
|
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
|
||||||
|
<ChoiceParameterLinks/>
|
||||||
|
<ChoiceParameters>
|
||||||
|
<app:item name="Отбор.ТипДокумента">
|
||||||
|
<app:value xsi:type="xs:string">Документ.РеализацияТоваровУслуг</app:value>
|
||||||
|
</app:item>
|
||||||
|
</ChoiceParameters>
|
||||||
|
<QuickChoice>Auto</QuickChoice>
|
||||||
|
<CreateOnInput>Auto</CreateOnInput>
|
||||||
|
<ChoiceForm/>
|
||||||
|
<LinkByType/>
|
||||||
|
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||||
|
<Use>ForItem</Use>
|
||||||
|
<Indexing>DontIndex</Indexing>
|
||||||
|
<FullTextSearch>Use</FullTextSearch>
|
||||||
|
<DataHistory>Use</DataHistory>
|
||||||
|
</Properties>
|
||||||
|
</Attribute>
|
||||||
|
<Attribute uuid="UUID-019">
|
||||||
|
<Properties>
|
||||||
|
<Name>НастоящаяСсылка</Name>
|
||||||
|
<Synonym>
|
||||||
|
<v8:item>
|
||||||
|
<v8:lang>ru</v8:lang>
|
||||||
|
<v8:content>Настоящая ссылка</v8:content>
|
||||||
|
</v8:item>
|
||||||
|
</Synonym>
|
||||||
|
<Comment/>
|
||||||
|
<Type>
|
||||||
|
<v8:Type xmlns:d5p1="http://v8.1c.ru/8.1/data/enterprise/current-config">d5p1:CatalogRef.Номенклатура</v8:Type>
|
||||||
|
</Type>
|
||||||
|
<PasswordMode>false</PasswordMode>
|
||||||
|
<Format/>
|
||||||
|
<EditFormat/>
|
||||||
|
<ToolTip/>
|
||||||
|
<MarkNegatives>false</MarkNegatives>
|
||||||
|
<Mask/>
|
||||||
|
<MultiLine>false</MultiLine>
|
||||||
|
<ExtendedEdit>false</ExtendedEdit>
|
||||||
|
<MinValue xsi:nil="true"/>
|
||||||
|
<MaxValue xsi:nil="true"/>
|
||||||
|
<FillFromFillingValue>false</FillFromFillingValue>
|
||||||
|
<FillValue xsi:type="xr:DesignTimeRef">Catalog.Номенклатура.EmptyRef</FillValue>
|
||||||
|
<FillChecking>DontCheck</FillChecking>
|
||||||
|
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
|
||||||
|
<ChoiceParameterLinks/>
|
||||||
|
<ChoiceParameters>
|
||||||
|
<app:item name="Отбор.Вид">
|
||||||
|
<app:value xsi:type="xr:DesignTimeRef">Enum.ТипыВЕТИС.EnumValue.ТТН</app:value>
|
||||||
|
</app:item>
|
||||||
|
</ChoiceParameters>
|
||||||
|
<QuickChoice>Auto</QuickChoice>
|
||||||
|
<CreateOnInput>Auto</CreateOnInput>
|
||||||
|
<ChoiceForm/>
|
||||||
|
<LinkByType/>
|
||||||
|
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||||
|
<Use>ForItem</Use>
|
||||||
|
<Indexing>DontIndex</Indexing>
|
||||||
|
<FullTextSearch>Use</FullTextSearch>
|
||||||
|
<DataHistory>Use</DataHistory>
|
||||||
|
</Properties>
|
||||||
|
</Attribute>
|
||||||
</ChildObjects>
|
</ChildObjects>
|
||||||
</Catalog>
|
</Catalog>
|
||||||
</MetaDataObject>
|
</MetaDataObject>
|
||||||
|
|||||||
Reference in New Issue
Block a user