diff --git a/.claude/skills/cfe-borrow/SKILL.md b/.claude/skills/cfe-borrow/SKILL.md index c7b5de737..2764cebc7 100644 --- a/.claude/skills/cfe-borrow/SKILL.md +++ b/.claude/skills/cfe-borrow/SKILL.md @@ -41,6 +41,7 @@ allowed-tools: - `Document.РеализацияТоваров` — документ - `Enum.ВидыОплат` — перечисление - `Catalog.Контрагенты.Form.ФормаЭлемента` — форма объекта (заимствование формы) +- `CommonForm.ВыборПериода` — общая форма, вместе с содержимым (как форма объекта). С `-BorrowMainAttribute` владелец берётся из типа основного реквизита: объект (`DataProcessorObject.X` и т.п.), основная таблица динамического списка или константы набора констант - `Catalog.X ;; CommonModule.Y ;; Enum.Z` — несколько объектов ### Заимствование форм diff --git a/.claude/skills/cfe-borrow/scripts/cfe-borrow.ps1 b/.claude/skills/cfe-borrow/scripts/cfe-borrow.ps1 index 5137c6dae..f45c77d0e 100644 --- a/.claude/skills/cfe-borrow/scripts/cfe-borrow.ps1 +++ b/.claude/skills/cfe-borrow/scripts/cfe-borrow.ps1 @@ -1,4 +1,4 @@ -# cfe-borrow v1.42 — Borrow objects from configuration into extension (CFE) +# cfe-borrow v1.43 — Borrow objects from configuration into extension (CFE) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills [CmdletBinding(PositionalBinding=$false)] param( @@ -123,6 +123,7 @@ $script:mainAttrKinds = @{ 'ChartOfAccountsObject'='ChartOfAccounts'; 'ChartOfCalculationTypesObject'='ChartOfCalculationTypes' 'ExchangePlanObject'='ExchangePlan'; 'BusinessProcessObject'='BusinessProcess'; 'TaskObject'='Task' 'InformationRegisterRecordManager'='InformationRegisterRecord'; 'AccumulationRegisterRecordSet'='AccumulationRegisterRow' + 'ConstantsSet'='ConstantsSet' } # Путь связи → текст (разрешается в расширении), код или $null (вырезать). @@ -185,6 +186,8 @@ function Resolve-LinkDataPath { if ($borrowed -and $ctx.AttrUuids.ContainsKey($rest)) { return $path } return $ctx.MainId } + # Код пути на константу набора не измерен — такую связь вырезаем, а не кодируем наугад + if ($ctx.MainKind -eq 'ConstantsSet') { return $null } $segs = $rest.Split('.') if ($segs.Count -eq 1) { if ($ctx.AttrUuids.ContainsKey($rest)) { return "$($ctx.MainId)/0:$($ctx.AttrUuids[$rest])" } @@ -737,9 +740,9 @@ if ($BorrowMainAttribute) { Write-Error "-BorrowMainAttribute accepts 'Form' or 'All' (default: Form)" exit 1 } - # Validate: only with .Form. pattern + # Validate: only with a form — .Form. pattern or a common form $hasForm = $false - foreach ($item in $items) { if ($item -match '\.Form\.') { $hasForm = $true; break } } + foreach ($item in $items) { if ($item -match '\.Form\.' -or $item -match '^(CommonForm|ОбщаяФорма)\.') { $hasForm = $true; break } } if (-not $hasForm) { Write-Error "-BorrowMainAttribute requires a form in -Object (e.g. 'Catalog.X.Form.Y')" exit 1 @@ -920,7 +923,9 @@ function Read-SourceFormUuid { param([string]$typeName, [string]$objName, [string]$formName) $dirName = $childTypeDirMap[$typeName] - $srcFile = Join-Path (Join-Path (Join-Path (Join-Path $cfgDir $dirName) $objName) "Forms") "${formName}.xml" + # Общая форма — сама объект конфигурации: её описание лежит рядом с другими, а не в Forms владельца + $srcFile = if ($typeName -eq 'CommonForm') { Join-Path (Join-Path $cfgDir $dirName) "${objName}.xml" } + else { Join-Path (Join-Path (Join-Path (Join-Path $cfgDir $dirName) $objName) "Forms") "${formName}.xml" } if (-not (Test-Path $srcFile)) { Write-Error "Source form not found: $srcFile" exit 1 @@ -955,12 +960,31 @@ function Borrow-Form { $dirName = $childTypeDirMap[$typeName] $enc = New-Object System.Text.UTF8Encoding($true) + # Общая форма — сама объект конфигурации: описание CommonForms/<Имя>.xml с корнем , + # тело CommonForms/<Имя>/Ext/Form.xml, регистрация в Configuration.xml. Форма объекта — в Forms + # владельца. Остальное (скелет, BaseForm, связи, оформление, картинки) одинаково (эталон УТ link). + $isCommonForm = $typeName -eq 'CommonForm' + # Уже заимствованная общая форма (в т.ч. оболочкой от прежних версий навыка) в Configuration.xml + # уже есть — повторно не регистрируем + $commonFormRegistered = $isCommonForm -and (Test-ObjectBorrowed $typeName $objName) + if ($isCommonForm) { + $srcFormDir = Join-Path (Join-Path $cfgDir $dirName) $objName + $formMetaFile = Join-Path (Join-Path $extDir $dirName) "${objName}.xml" + $extFormDir = Join-Path (Join-Path $extDir $dirName) $objName + $formMetaTag = 'CommonForm' + } else { + $srcFormDir = Join-Path (Join-Path (Join-Path (Join-Path $cfgDir $dirName) $objName) "Forms") $formName + $formMetaFile = Join-Path (Join-Path (Join-Path (Join-Path $extDir $dirName) $objName) "Forms") "${formName}.xml" + $extFormDir = Join-Path (Join-Path (Join-Path (Join-Path $extDir $dirName) $objName) "Forms") $formName + $formMetaTag = 'Form' + } + # 1. Read source form UUID $formUuid = Read-SourceFormUuid $typeName $objName $formName Info " Source form UUID: $formUuid" # 2. Read source Form.xml content - $srcFormXmlPath = Join-Path (Join-Path (Join-Path (Join-Path (Join-Path $cfgDir $dirName) $objName) "Forms") $formName) "Ext/Form.xml" + $srcFormXmlPath = Join-Path $srcFormDir "Ext/Form.xml" if (-not (Test-Path $srcFormXmlPath)) { Write-Error "Source Form.xml not found: $srcFormXmlPath" exit 1 @@ -970,13 +994,12 @@ function Borrow-Form { # 3. Generate form metadata XML (ФормаЭлемента.xml). # If the wrapper was already borrowed, reuse its uuid so re-borrow is idempotent # (regenerating it would churn the form's identity on every rerun). - $formMetaFileExisting = Join-Path (Join-Path (Join-Path (Join-Path $extDir $dirName) $objName) "Forms") "${formName}.xml" $newFormUuid = "" - if (Test-Path $formMetaFileExisting) { + if (Test-Path $formMetaFile) { try { $existingDoc = New-Object System.Xml.XmlDocument - $existingDoc.Load($formMetaFileExisting) - $existingFormNode = $existingDoc.DocumentElement.SelectSingleNode("*[local-name()='Form']") + $existingDoc.Load($formMetaFile) + $existingFormNode = $existingDoc.DocumentElement.SelectSingleNode("*[local-name()='$formMetaTag']") if ($existingFormNode) { $existingUuid = $existingFormNode.GetAttribute("uuid") if ($existingUuid) { $newFormUuid = $existingUuid } @@ -987,7 +1010,7 @@ function Borrow-Form { $formMetaSb = New-Object System.Text.StringBuilder $formMetaSb.AppendLine("") | Out-Null $formMetaSb.AppendLine("") | Out-Null - $formMetaSb.AppendLine("`t
") | Out-Null + $formMetaSb.AppendLine("`t<$formMetaTag uuid=`"${newFormUuid}`">") | Out-Null $formMetaSb.AppendLine("`t`t") | Out-Null $formMetaSb.AppendLine("`t`t") | Out-Null $formMetaSb.AppendLine("`t`t`tAdopted") | Out-Null @@ -996,17 +1019,16 @@ function Borrow-Form { $formMetaSb.AppendLine("`t`t`t${formUuid}") | Out-Null $formMetaSb.AppendLine("`t`t`tManaged") | Out-Null $formMetaSb.AppendLine("`t`t") | Out-Null - $formMetaSb.AppendLine("`t") | Out-Null + $formMetaSb.AppendLine("`t") | Out-Null $formMetaSb.Append("
") | Out-Null # 4. Create directories - $formMetaDir = Join-Path (Join-Path (Join-Path $extDir $dirName) $objName) "Forms" + $formMetaDir = Split-Path $formMetaFile -Parent if (-not (Test-Path $formMetaDir)) { New-Item -ItemType Directory -Path $formMetaDir -Force | Out-Null } # Write form metadata - $formMetaFile = Join-Path $formMetaDir "${formName}.xml" [System.IO.File]::WriteAllText($formMetaFile, $formMetaSb.ToString(), $enc) Info " Created: $formMetaFile" @@ -1072,7 +1094,26 @@ function Borrow-Form { # Имена реквизитов объекта нужны в обоих режимах: без заимствования — для кода пути в связях # формы, с заимствованием — чтобы отличить реквизит (разрешается текстом) от стандартного поля - $srcAttrUuids = Get-SourceAttributeUuids $typeName $objName + # У общей формы реквизиты берутся у владельца, выведенного из типа основного реквизита; + # у набора констант — ничего: код пути на константу не измерен, связь без основного реквизита + # вырезается с предупреждением, с ним — остаётся текстом + if ($isCommonForm) { + $cfOwner = Resolve-CommonFormOwner $srcFormEl + $srcAttrUuids = @{} + if ($cfOwner -and $cfOwner.Kind -eq 'Object') { + $srcAttrUuids = Get-SourceAttributeUuids $cfOwner.TypeName $cfOwner.ObjName + } elseif ($cfOwner -and $cfOwner.Kind -eq 'Constants') { + # Константы, на которые есть пути: с основным реквизитом путь на заимствованную — текстом + foreach ($cName in @((Collect-FormDataPaths $srcFormXmlPath $cfOwner.MainName).FirstLevel.Keys)) { + $cFile = Join-Path (Join-Path $cfgDir "Constants") "${cName}.xml" + if (-not (Test-Path $cFile)) { continue } + $cm = [regex]::Match([System.IO.File]::ReadAllText($cFile), '(?:(?!||).)*?)(.*?)' + $childItemsXml = [regex]::Replace($childItemsXml, $mainTablePat, { + param($m) + $key = "@@KEPTCMDSET$($keptCmdSets.Count)@@" + $keptCmdSets[$key] = $m.Groups[2].Value + $m.Groups[1].Value + $key + }) + } $childItemsXml = [regex]::Replace($childItemsXml, '(?s)\s*.*?', '') $childItemsXml = [regex]::Replace($childItemsXml, '\s*', '') + foreach ($key in $keptCmdSets.Keys) { $childItemsXml = $childItemsXml.Replace($key, $keptCmdSets[$key]) } $childItemsXml = Rewrite-TypeLinks $childItemsXml $linkCtx # Strip element-level Events (base form handlers not in extension) $childItemsXml = [regex]::Replace($childItemsXml, '(?s)\s*.*?', '') @@ -1386,7 +1443,7 @@ function Borrow-Form { $formXmlSb.Append("") | Out-Null # Write Form.xml - $formXmlDir = Join-Path (Join-Path $formMetaDir $formName) "Ext" + $formXmlDir = Join-Path $extFormDir "Ext" if (-not (Test-Path $formXmlDir)) { New-Item -ItemType Directory -Path $formXmlDir -Force | Out-Null } @@ -1466,8 +1523,12 @@ function Borrow-Form { Info " Copied: $dstPic" } - # 7. Register form in parent object ChildObjects - Register-FormInObject $typeName $objName $formName + # 7. Register form: общая форма — в Configuration.xml, форма объекта — в ChildObjects владельца + if ($isCommonForm) { + if (-not $commonFormRegistered) { Add-ToChildObjects $typeName $objName } + } else { + Register-FormInObject $typeName $objName $formName + } return @($formMetaFile, $formXmlFile, $moduleBslFile) + $picFiles } @@ -1726,7 +1787,8 @@ function Get-LinkContext { if ($mainName -and $nm -ceq $mainName) { $typeNode = $a.SelectSingleNode("*[local-name()='Type']/*[local-name()='Type']") if ($typeNode) { - $tm = [regex]::Match($typeNode.InnerText.Trim(), '^(?:\w+:)?(\w+)\.') + # Тип без имени объекта (cfg:ConstantsSet) — тоже вид + $tm = [regex]::Match($typeNode.InnerText.Trim(), '^(?:\w+:)?(\w+)(?:\.|$)') if ($tm.Success -and $script:mainAttrKinds.ContainsKey($tm.Groups[1].Value)) { $kind = $script:mainAttrKinds[$tm.Groups[1].Value] } } } @@ -2142,17 +2204,135 @@ function Merge-AttributesIntoObject { } # --- 11h. Borrow-MainAttribute orchestrator --- +# Ссылочные типы → объекты-оболочки в расширении (кто уже заимствован — пропускается) +function Borrow-ReferenceTypeShells { + param([string[]]$typeXmls) + + $encBom = New-Object System.Text.UTF8Encoding($true) + $refTypes = Collect-ReferenceTypes $typeXmls + Info " Reference types to borrow: $($refTypes.Count)" + + foreach ($rt in $refTypes) { + if (-not $childTypeDirMap.ContainsKey($rt.TypeName)) { + Warn " Unknown reference type: $($rt.TypeName).$($rt.ObjName)" + continue + } + if (Test-ObjectBorrowed $rt.TypeName $rt.ObjName) { + Info " Already borrowed: $($rt.TypeName).$($rt.ObjName)" + continue + } + $rtSrcFile = Join-Path (Join-Path $cfgDir $childTypeDirMap[$rt.TypeName]) "$($rt.ObjName).xml" + if (-not (Test-Path $rtSrcFile)) { + Warn " Source not found: $($rt.TypeName).$($rt.ObjName)" + continue + } + $src = Read-SourceObject $rt.TypeName $rt.ObjName + $borrowedXml = Build-BorrowedObjectXml $rt.TypeName $rt.ObjName $src.Uuid $src.Properties + $targetDir = Join-Path $extDir $childTypeDirMap[$rt.TypeName] + if (-not (Test-Path $targetDir)) { + New-Item -ItemType Directory -Path $targetDir -Force | Out-Null + } + $targetFile = Join-Path $targetDir "$($rt.ObjName).xml" + [System.IO.File]::WriteAllText($targetFile, $borrowedXml, $encBom) + Add-ToChildObjects $rt.TypeName $rt.ObjName + $script:borrowedFiles += $targetFile + Info " Auto-borrowed: $($rt.TypeName).$($rt.ObjName)" + } +} + +# Владелец общей формы — из ТИПА её основного реквизита (эталон УТ CommonMain): +# <Вид>Object.Имя / <Вид>RecordManager.Имя → объект; DynamicList → объект из ; +# ConstantsSet → константы по путям формы. Примитив, тип без имени (ReportObject — любой отчёт), +# список без MainTable → владельца нет: в расширение идёт только сам реквизит формы. +$script:commonFormOwnerKinds = [ordered]@{ + 'CatalogObject'='Catalog'; 'DocumentObject'='Document'; 'DataProcessorObject'='DataProcessor'; 'ReportObject'='Report' + 'ChartOfCharacteristicTypesObject'='ChartOfCharacteristicTypes'; 'ChartOfAccountsObject'='ChartOfAccounts' + 'ChartOfCalculationTypesObject'='ChartOfCalculationTypes'; 'ExchangePlanObject'='ExchangePlan' + 'BusinessProcessObject'='BusinessProcess'; 'TaskObject'='Task' + 'InformationRegisterRecordManager'='InformationRegister'; 'InformationRegisterRecordSet'='InformationRegister' + 'AccumulationRegisterRecordSet'='AccumulationRegister' +} +function Resolve-CommonFormOwner { + param($formEl) + + $mainAttr = $formEl.SelectSingleNode("*[local-name()='Attributes']/*[local-name()='Attribute'][*[local-name()='MainAttribute']='true']") + if (-not $mainAttr) { return $null } + $typeNode = $mainAttr.SelectSingleNode("*[local-name()='Type']/*[local-name()='Type']") + $typeText = if ($typeNode) { $typeNode.InnerText.Trim() } else { "" } + if ($typeText -ceq 'cfg:ConstantsSet') { return @{ Kind = 'Constants'; MainName = $mainAttr.GetAttribute("name") } } + $m = [regex]::Match($typeText, '^cfg:(\w+)\.(\w+)$') + if ($m.Success -and $script:commonFormOwnerKinds.Contains($m.Groups[1].Value)) { + return @{ Kind = 'Object'; TypeName = $script:commonFormOwnerKinds[$m.Groups[1].Value]; ObjName = $m.Groups[2].Value } + } + if ($typeText -ceq 'cfg:DynamicList') { + $mt = $mainAttr.SelectSingleNode(".//*[local-name()='MainTable']") + if ($mt) { + $mtm = [regex]::Match($mt.InnerText.Trim(), '^(\w+)\.(\w+)$') + if ($mtm.Success -and $childTypeDirMap.ContainsKey($mtm.Groups[1].Value)) { + return @{ Kind = 'Object'; TypeName = $mtm.Groups[1].Value; ObjName = $mtm.Groups[2].Value } + } + } + } + return $null +} + +# Набор констант как основной реквизит общей формы: заимствуются константы, пути на которые есть +# в форме (<Реквизит>.<Константа>), — с типом как в источнике; их ссылочные типы — оболочками +# (эталон УТ CommonMain: НастройкаПереводаТекста → две константы + перечисление из типа). +function Borrow-FormConstants { + param([string]$srcFormXmlPath, [string]$mainName) + + Info "Borrowing constants for main attribute ${mainName} (ConstantsSet)..." + $names = (Collect-FormDataPaths $srcFormXmlPath $mainName).FirstLevel + $encBom = New-Object System.Text.UTF8Encoding($true) + $typeXmls = @() + foreach ($cName in @($names.Keys)) { + $cSrcFile = Join-Path (Join-Path $cfgDir "Constants") "${cName}.xml" + if (-not (Test-Path $cSrcFile)) { continue } + $cDoc = New-Object System.Xml.XmlDocument + # С пробелами: вложенные отступы типа в источнике — ровно та же глубина, что в расширении + $cDoc.PreserveWhitespace = $true + $cDoc.Load($cSrcFile) + $cTypeNode = $cDoc.SelectSingleNode("//*[local-name()='Constant']/*[local-name()='Properties']/*[local-name()='Type']") + $cTypeXml = if ($cTypeNode) { ([regex]::Replace($cTypeNode.OuterXml, '\s+xmlns(?::\w+)?="[^"]*"', '') -replace "`r?`n", "`r`n") } else { "" } + if ($cTypeXml) { $typeXmls += $cTypeXml } + if (Test-ObjectBorrowed "Constant" $cName) { + Info " Already borrowed: Constant.${cName}" + continue + } + $src = Read-SourceObject "Constant" $cName + $borrowedXml = Build-BorrowedObjectXml "Constant" $cName $src.Uuid $src.Properties + if ($cTypeXml) { + # Тип — последним свойством, после ExtendedConfigurationObject (как у Конфигуратора) + $borrowedXml = ([regex]'(?[ \t]*)[^<]*').Replace($borrowedXml, { + param($mm) $mm.Value + "`r`n" + $mm.Groups['ind'].Value + $cTypeXml + }, 1) + } + $targetDir = Join-Path $extDir "Constants" + if (-not (Test-Path $targetDir)) { New-Item -ItemType Directory -Path $targetDir -Force | Out-Null } + $targetFile = Join-Path $targetDir "${cName}.xml" + [System.IO.File]::WriteAllText($targetFile, $borrowedXml, $encBom) + Add-ToChildObjects "Constant" $cName + $script:borrowedFiles += $targetFile + Info " Borrowed: Constant.${cName}" + } + Borrow-ReferenceTypeShells $typeXmls +} + function Borrow-MainAttribute { - param([string]$typeName, [string]$objName, [string]$formName, [string]$mode) + param([string]$typeName, [string]$objName, [string]$formName, [string]$mode, [string]$srcFormXmlPath = "") $dirName = $childTypeDirMap[$typeName] Info "Borrowing main attribute for ${typeName}.${objName} (mode: $mode)..." + # Путь к исходной форме: у общей формы его передают явно (владелец выведен из типа реквизита) + if (-not $srcFormXmlPath) { + $srcFormXmlPath = Join-Path (Join-Path (Join-Path (Join-Path (Join-Path $cfgDir $dirName) $objName) "Forms") $formName) "Ext/Form.xml" + } # Step 1: Collect DataPaths (Form mode) or take all (All mode) $firstLevelNames = $null $deepPaths = @() if ($mode -eq "Form") { - $srcFormXmlPath = Join-Path (Join-Path (Join-Path (Join-Path (Join-Path $cfgDir $dirName) $objName) "Forms") $formName) "Ext/Form.xml" if (-not (Test-Path $srcFormXmlPath)) { Write-Error "Source Form.xml not found: $srcFormXmlPath" exit 1 @@ -2244,7 +2424,7 @@ function Borrow-MainAttribute { # тип должен быть заимствован — иначе колонка ссылается на DefinedType/справочник, которого в # расширении нет. Конфигуратор поступает так же (эталон: DefinedTypes/Артикул при заимствовании # формы заказа поставщику). - $srcFormForCols = Join-Path (Join-Path (Join-Path (Join-Path (Join-Path $cfgDir $dirName) $objName) "Forms") $formName) "Ext/Form.xml" + $srcFormForCols = $srcFormXmlPath if (Test-Path $srcFormForCols) { $colsDoc = New-Object System.Xml.XmlDocument $colsDoc.PreserveWhitespace = $true @@ -2255,35 +2435,7 @@ function Borrow-MainAttribute { } } - $refTypes = Collect-ReferenceTypes $allTypeXmls - Info " Reference types to borrow: $($refTypes.Count)" - - foreach ($rt in $refTypes) { - if (-not $childTypeDirMap.ContainsKey($rt.TypeName)) { - Warn " Unknown reference type: $($rt.TypeName).$($rt.ObjName)" - continue - } - if (Test-ObjectBorrowed $rt.TypeName $rt.ObjName) { - Info " Already borrowed: $($rt.TypeName).$($rt.ObjName)" - continue - } - $rtSrcFile = Join-Path (Join-Path $cfgDir $childTypeDirMap[$rt.TypeName]) "$($rt.ObjName).xml" - if (-not (Test-Path $rtSrcFile)) { - Warn " Source not found: $($rt.TypeName).$($rt.ObjName)" - continue - } - $src = Read-SourceObject $rt.TypeName $rt.ObjName - $borrowedXml = Build-BorrowedObjectXml $rt.TypeName $rt.ObjName $src.Uuid $src.Properties - $targetDir = Join-Path $extDir $childTypeDirMap[$rt.TypeName] - if (-not (Test-Path $targetDir)) { - New-Item -ItemType Directory -Path $targetDir -Force | Out-Null - } - $targetFile = Join-Path $targetDir "$($rt.ObjName).xml" - [System.IO.File]::WriteAllText($targetFile, $borrowedXml, $encBom) - Add-ToChildObjects $rt.TypeName $rt.ObjName - $script:borrowedFiles += $targetFile - Info " Auto-borrowed: $($rt.TypeName).$($rt.ObjName)" - } + Borrow-ReferenceTypeShells $allTypeXmls # Step 5: Handle deep paths (Form mode only) if ($mode -eq "Form" -and $deepPaths.Count -gt 0) { @@ -2666,15 +2818,25 @@ foreach ($item in $items) { } else { $objName = $remainder } + # Общая форма — сама форма: «CommonForm.X» заимствуется вместе с содержимым, владельца у неё нет + $isCommonForm = $typeName -eq 'CommonForm' + if ($isCommonForm) { + if ($formName) { + Write-Error "Invalid format '${item}': общая форма задаётся как 'CommonForm.Имя'" + exit 1 + } + $formName = $objName + } $dirName = $childTypeDirMap[$typeName] if ($formName) { # --- Form borrowing --- - Info "Borrowing form ${typeName}.${objName}.Form.${formName}..." + if ($isCommonForm) { Info "Borrowing common form ${typeName}.${objName}..." } + else { Info "Borrowing form ${typeName}.${objName}.Form.${formName}..." } # Auto-borrow parent object if not yet borrowed - if (-not (Test-ObjectBorrowed $typeName $objName)) { + if (-not $isCommonForm -and -not (Test-ObjectBorrowed $typeName $objName)) { Info " Parent object ${typeName}.${objName} not yet borrowed — borrowing first..." $src = Read-SourceObject $typeName $objName @@ -2704,7 +2866,32 @@ foreach ($item in $items) { $borrowedCount++ # Borrow main attribute if requested - if ($hasBMA) { + if ($hasBMA -and $isCommonForm) { + # У общей формы владельца нет — он выводится из типа основного реквизита + $cfSrcFormXmlPath = Join-Path (Join-Path (Join-Path $cfgDir $dirName) $objName) "Ext/Form.xml" + $cfDoc = New-Object System.Xml.XmlDocument + $cfDoc.PreserveWhitespace = $true + $cfDoc.Load($cfSrcFormXmlPath) + $cfOwner = Resolve-CommonFormOwner $cfDoc.DocumentElement + if (-not $cfOwner) { + Info " Основной реквизит общей формы не ссылается на объект — заимствуется только сам реквизит" + } elseif ($cfOwner.Kind -eq 'Constants') { + Borrow-FormConstants $cfSrcFormXmlPath $cfOwner.MainName + } else { + if (-not (Test-ObjectBorrowed $cfOwner.TypeName $cfOwner.ObjName)) { + $src = Read-SourceObject $cfOwner.TypeName $cfOwner.ObjName + $borrowedXml = Build-BorrowedObjectXml $cfOwner.TypeName $cfOwner.ObjName $src.Uuid $src.Properties + $ownerDir = Join-Path $extDir $childTypeDirMap[$cfOwner.TypeName] + if (-not (Test-Path $ownerDir)) { New-Item -ItemType Directory -Path $ownerDir -Force | Out-Null } + $ownerFile = Join-Path $ownerDir "$($cfOwner.ObjName).xml" + [System.IO.File]::WriteAllText($ownerFile, $borrowedXml, (New-Object System.Text.UTF8Encoding($true))) + Add-ToChildObjects $cfOwner.TypeName $cfOwner.ObjName + $script:borrowedFiles += $ownerFile + Info " Auto-borrowed: $($cfOwner.TypeName).$($cfOwner.ObjName)" + } + Borrow-MainAttribute $cfOwner.TypeName $cfOwner.ObjName $null $BorrowMainAttribute $cfSrcFormXmlPath + } + } elseif ($hasBMA) { Borrow-MainAttribute $typeName $objName $formName $BorrowMainAttribute } } else { diff --git a/.claude/skills/cfe-borrow/scripts/cfe-borrow.py b/.claude/skills/cfe-borrow/scripts/cfe-borrow.py index e27b21be8..2cfce6323 100644 --- a/.claude/skills/cfe-borrow/scripts/cfe-borrow.py +++ b/.claude/skills/cfe-borrow/scripts/cfe-borrow.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# cfe-borrow v1.42 — Borrow objects from configuration into extension (CFE) +# cfe-borrow v1.43 — Borrow objects from configuration into extension (CFE) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse @@ -142,6 +142,7 @@ MAIN_ATTR_KINDS = { 'ChartOfAccountsObject': 'ChartOfAccounts', 'ChartOfCalculationTypesObject': 'ChartOfCalculationTypes', 'ExchangePlanObject': 'ExchangePlan', 'BusinessProcessObject': 'BusinessProcess', 'TaskObject': 'Task', 'InformationRegisterRecordManager': 'InformationRegisterRecord', 'AccumulationRegisterRecordSet': 'AccumulationRegisterRow', + 'ConstantsSet': 'ConstantsSet', } @@ -206,6 +207,9 @@ def resolve_link_data_path(path, ctx): if borrowed and rest in attr_uuids: return path return ctx['MainId'] + # Код пути на константу набора не измерен — такую связь вырезаем, а не кодируем наугад + if ctx['MainKind'] == 'ConstantsSet': + return None segs = rest.split('.') if len(segs) == 1: if rest in attr_uuids: @@ -1145,7 +1149,11 @@ def main(): def read_source_form_uuid(type_name, obj_name, form_name): dir_name = CHILD_TYPE_DIR_MAP[type_name] - src_file = os.path.join(cfg_dir, dir_name, obj_name, "Forms", f"{form_name}.xml") + # Общая форма — сама объект конфигурации: её описание лежит рядом с другими, а не в Forms владельца + if type_name == "CommonForm": + src_file = os.path.join(cfg_dir, dir_name, f"{obj_name}.xml") + else: + src_file = os.path.join(cfg_dir, dir_name, obj_name, "Forms", f"{form_name}.xml") if not os.path.isfile(src_file): print(f"Source form not found: {src_file}", file=sys.stderr) sys.exit(1) @@ -1404,7 +1412,8 @@ def main(): elif localname(sub) == "Type" and main_name and nm == main_name and kind is None: for tn in sub: if isinstance(tn.tag, str) and localname(tn) == "Type": - tm = re.match(r'^(?:\w+:)?(\w+)\.', (tn.text or "").strip()) + # Тип без имени объекта (cfg:ConstantsSet) — тоже вид + tm = re.match(r'^(?:\w+:)?(\w+)(?:\.|$)', (tn.text or "").strip()) if tm and tm.group(1) in MAIN_ATTR_KINDS: kind = MAIN_ATTR_KINDS[tm.group(1)] break @@ -1764,15 +1773,127 @@ def main(): info(f" Merged {added} attribute(s) into: {obj_file}") # --- 11h. Borrow main attribute orchestrator --- - def borrow_main_attribute(type_name, obj_name, form_name, mode): + def borrow_reference_type_shells(type_xmls): + """Ссылочные типы → объекты-оболочки в расширении (кто уже заимствован — пропускается).""" + ref_types = collect_reference_types(type_xmls) + info(f" Reference types to borrow: {len(ref_types)}") + + for rt in ref_types: + if rt["TypeName"] not in CHILD_TYPE_DIR_MAP: + warn(f" Unknown reference type: {rt['TypeName']}.{rt['ObjName']}") + continue + if test_object_borrowed(rt["TypeName"], rt["ObjName"]): + info(f" Already borrowed: {rt['TypeName']}.{rt['ObjName']}") + continue + rt_src_file = os.path.join(cfg_dir, CHILD_TYPE_DIR_MAP[rt["TypeName"]], f"{rt['ObjName']}.xml") + if not os.path.isfile(rt_src_file): + warn(f" Source not found: {rt['TypeName']}.{rt['ObjName']}") + continue + src = read_source_object(rt["TypeName"], rt["ObjName"]) + borrowed_xml = build_borrowed_object_xml(rt["TypeName"], rt["ObjName"], src["Uuid"], src["Properties"]) + target_dir = os.path.join(ext_dir, CHILD_TYPE_DIR_MAP[rt["TypeName"]]) + os.makedirs(target_dir, exist_ok=True) + target_file = os.path.join(target_dir, f"{rt['ObjName']}.xml") + write_xml_file(target_file, borrowed_xml) + add_to_child_objects(rt["TypeName"], rt["ObjName"]) + borrowed_files.append(target_file) + info(f" Auto-borrowed: {rt['TypeName']}.{rt['ObjName']}") + + # Владелец общей формы — из ТИПА её основного реквизита (эталон УТ CommonMain): + # <Вид>Object.Имя / <Вид>RecordManager.Имя → объект; DynamicList → объект из ; + # ConstantsSet → константы по путям формы. Примитив, тип без имени (ReportObject — любой отчёт), + # список без MainTable → владельца нет: в расширение идёт только сам реквизит формы. + common_form_owner_kinds = { + 'CatalogObject': 'Catalog', 'DocumentObject': 'Document', 'DataProcessorObject': 'DataProcessor', 'ReportObject': 'Report', + 'ChartOfCharacteristicTypesObject': 'ChartOfCharacteristicTypes', 'ChartOfAccountsObject': 'ChartOfAccounts', + 'ChartOfCalculationTypesObject': 'ChartOfCalculationTypes', 'ExchangePlanObject': 'ExchangePlan', + 'BusinessProcessObject': 'BusinessProcess', 'TaskObject': 'Task', + 'InformationRegisterRecordManager': 'InformationRegister', 'InformationRegisterRecordSet': 'InformationRegister', + 'AccumulationRegisterRecordSet': 'AccumulationRegister', + } + + def resolve_common_form_owner(form_el): + main_attr = None + for attrs in form_el: + if isinstance(attrs.tag, str) and localname(attrs) == "Attributes": + for a in attrs: + if not isinstance(a.tag, str) or localname(a) != "Attribute": + continue + if any(isinstance(c.tag, str) and localname(c) == "MainAttribute" and (c.text or "").strip() == "true" for c in a): + main_attr = a + break + break + if main_attr is None: + return None + type_text = "" + for c in main_attr: + if isinstance(c.tag, str) and localname(c) == "Type": + for tn in c: + if isinstance(tn.tag, str) and localname(tn) == "Type": + type_text = (tn.text or "").strip() + break + break + if type_text == "cfg:ConstantsSet": + return {"Kind": "Constants", "MainName": main_attr.get("name")} + m = re.match(r'^cfg:(\w+)\.(\w+)$', type_text) + if m and m.group(1) in common_form_owner_kinds: + return {"Kind": "Object", "TypeName": common_form_owner_kinds[m.group(1)], "ObjName": m.group(2)} + if type_text == "cfg:DynamicList": + for el in main_attr.iter(): + if isinstance(el.tag, str) and localname(el) == "MainTable": + mtm = re.match(r'^(\w+)\.(\w+)$', (el.text or "").strip()) + if mtm and mtm.group(1) in CHILD_TYPE_DIR_MAP: + return {"Kind": "Object", "TypeName": mtm.group(1), "ObjName": mtm.group(2)} + break + return None + + def borrow_form_constants(src_form_xml_path, main_name): + """Набор констант как основной реквизит общей формы: заимствуются константы, пути на которые есть + в форме (<Реквизит>.<Константа>), — с типом как в источнике; их ссылочные типы — оболочками + (эталон УТ CommonMain: НастройкаПереводаТекста → две константы + перечисление из типа).""" + info(f"Borrowing constants for main attribute {main_name} (ConstantsSet)...") + names = collect_form_data_paths(src_form_xml_path, main_name)["FirstLevel"] + type_xmls = [] + for c_name in list(names.keys()): + c_src_file = os.path.join(cfg_dir, "Constants", f"{c_name}.xml") + if not os.path.isfile(c_src_file): + continue + with open(c_src_file, "r", encoding="utf-8-sig") as fh: + c_text = fh.read() + # С пробелами: вложенные отступы типа в источнике — ровно та же глубина, что в расширении + tm = re.search(r'[\s\S]*?[\s\S]*?([\s\S]*?)', c_text) + c_type_xml = re.sub(r'\s+xmlns(?::\w+)?="[^"]*"', '', tm.group(1)).replace("\r\n", "\n") if tm else "" + if c_type_xml: + type_xmls.append(c_type_xml) + if test_object_borrowed("Constant", c_name): + info(f" Already borrowed: Constant.{c_name}") + continue + src = read_source_object("Constant", c_name) + borrowed_xml = build_borrowed_object_xml("Constant", c_name, src["Uuid"], src["Properties"]) + if c_type_xml: + # Тип — последним свойством, после ExtendedConfigurationObject (как у Конфигуратора) + borrowed_xml = re.sub(r'(?P[ \t]*)[^<]*', + lambda mm: mm.group(0) + "\n" + mm.group('ind') + c_type_xml, borrowed_xml, count=1) + target_dir = os.path.join(ext_dir, "Constants") + os.makedirs(target_dir, exist_ok=True) + target_file = os.path.join(target_dir, f"{c_name}.xml") + write_xml_file(target_file, borrowed_xml) + add_to_child_objects("Constant", c_name) + borrowed_files.append(target_file) + info(f" Borrowed: Constant.{c_name}") + borrow_reference_type_shells(type_xmls) + + def borrow_main_attribute(type_name, obj_name, form_name, mode, src_form_xml_path=""): dir_name = CHILD_TYPE_DIR_MAP[type_name] info(f"Borrowing main attribute for {type_name}.{obj_name} (mode: {mode})...") + # Путь к исходной форме: у общей формы его передают явно (владелец выведен из типа реквизита) + if not src_form_xml_path: + src_form_xml_path = os.path.join(cfg_dir, dir_name, obj_name, "Forms", form_name, "Ext", "Form.xml") # Step 1: Collect DataPaths (Form mode) or take all (All mode) first_level_names = None deep_paths = [] if mode == "Form": - src_form_xml_path = os.path.join(cfg_dir, dir_name, obj_name, "Forms", form_name, "Ext", "Form.xml") if not os.path.isfile(src_form_xml_path): print(f"Source Form.xml not found: {src_form_xml_path}", file=sys.stderr) sys.exit(1) @@ -1853,7 +1974,7 @@ def main(): # тип должен быть заимствован — иначе колонка ссылается на DefinedType/справочник, которого в # расширении нет. Конфигуратор поступает так же (эталон: DefinedTypes/Артикул при заимствовании # формы заказа поставщику). - src_form_for_cols = os.path.join(cfg_dir, dir_name, obj_name, "Forms", form_name, "Ext", "Form.xml") + src_form_for_cols = src_form_xml_path if os.path.isfile(src_form_for_cols): cols_tree = etree.parse(src_form_for_cols) cols_ns_strip = re.compile(r'\s+xmlns(?::\w+)?="[^"]*"') @@ -1861,29 +1982,7 @@ def main(): if cols_info: all_type_xmls.extend(re.findall(r'(?s).*?', cols_info["Xml"])) - ref_types = collect_reference_types(all_type_xmls) - info(f" Reference types to borrow: {len(ref_types)}") - - for rt in ref_types: - if rt["TypeName"] not in CHILD_TYPE_DIR_MAP: - warn(f" Unknown reference type: {rt['TypeName']}.{rt['ObjName']}") - continue - if test_object_borrowed(rt["TypeName"], rt["ObjName"]): - info(f" Already borrowed: {rt['TypeName']}.{rt['ObjName']}") - continue - rt_src_file = os.path.join(cfg_dir, CHILD_TYPE_DIR_MAP[rt["TypeName"]], f"{rt['ObjName']}.xml") - if not os.path.isfile(rt_src_file): - warn(f" Source not found: {rt['TypeName']}.{rt['ObjName']}") - continue - src = read_source_object(rt["TypeName"], rt["ObjName"]) - borrowed_xml = build_borrowed_object_xml(rt["TypeName"], rt["ObjName"], src["Uuid"], src["Properties"]) - target_dir = os.path.join(ext_dir, CHILD_TYPE_DIR_MAP[rt["TypeName"]]) - os.makedirs(target_dir, exist_ok=True) - target_file = os.path.join(target_dir, f"{rt['ObjName']}.xml") - write_xml_file(target_file, borrowed_xml) - add_to_child_objects(rt["TypeName"], rt["ObjName"]) - borrowed_files.append(target_file) - info(f" Auto-borrowed: {rt['TypeName']}.{rt['ObjName']}") + borrow_reference_type_shells(all_type_xmls) # Step 5: Handle deep paths (Form mode only) if mode == "Form" and deep_paths: @@ -1977,12 +2076,30 @@ def main(): def borrow_form(type_name, obj_name, form_name, borrow_main_attr=False): dir_name = CHILD_TYPE_DIR_MAP[type_name] + # Общая форма — сама объект конфигурации: описание CommonForms/<Имя>.xml с корнем , + # тело CommonForms/<Имя>/Ext/Form.xml, регистрация в Configuration.xml. Форма объекта — в Forms + # владельца. Остальное (скелет, BaseForm, связи, оформление, картинки) одинаково (эталон УТ link). + is_common_form = type_name == "CommonForm" + # Уже заимствованная общая форма (в т.ч. оболочкой от прежних версий навыка) в Configuration.xml + # уже есть — повторно не регистрируем + common_form_registered = is_common_form and test_object_borrowed(type_name, obj_name) + if is_common_form: + src_form_dir = os.path.join(cfg_dir, dir_name, obj_name) + form_meta_file = os.path.join(ext_dir, dir_name, f"{obj_name}.xml") + ext_form_dir = os.path.join(ext_dir, dir_name, obj_name) + form_meta_tag = "CommonForm" + else: + src_form_dir = os.path.join(cfg_dir, dir_name, obj_name, "Forms", form_name) + form_meta_file = os.path.join(ext_dir, dir_name, obj_name, "Forms", f"{form_name}.xml") + ext_form_dir = os.path.join(ext_dir, dir_name, obj_name, "Forms", form_name) + form_meta_tag = "Form" + # 1. Read source form UUID form_uuid = read_source_form_uuid(type_name, obj_name, form_name) info(f" Source form UUID: {form_uuid}") # 2. Read source Form.xml - src_form_xml_path = os.path.join(cfg_dir, dir_name, obj_name, "Forms", form_name, "Ext", "Form.xml") + src_form_xml_path = os.path.join(src_form_dir, "Ext", "Form.xml") if not os.path.isfile(src_form_xml_path): print(f"Source Form.xml not found: {src_form_xml_path}", file=sys.stderr) sys.exit(1) @@ -1992,13 +2109,12 @@ def main(): # 3. Generate form metadata XML. # If the wrapper was already borrowed, reuse its uuid so re-borrow is idempotent # (regenerating it would churn the form's identity on every rerun). - existing_wrapper = os.path.join(ext_dir, dir_name, obj_name, "Forms", f"{form_name}.xml") new_form_uuid = "" - if os.path.isfile(existing_wrapper): + if os.path.isfile(form_meta_file): try: - existing_root = etree.parse(existing_wrapper).getroot() + existing_root = etree.parse(form_meta_file).getroot() for c in existing_root: - if isinstance(c.tag, str) and localname(c) == "Form": + if isinstance(c.tag, str) and localname(c) == form_meta_tag: new_form_uuid = c.get("uuid", "") or "" break except Exception: @@ -2008,7 +2124,7 @@ def main(): form_meta_lines = [ '', f'', - f'\t
', + f'\t<{form_meta_tag} uuid="{new_form_uuid}">', '\t\t', '\t\t', '\t\t\tAdopted', @@ -2017,15 +2133,14 @@ def main(): f'\t\t\t{form_uuid}', '\t\t\tManaged', '\t\t', - '\t', + f'\t', '
', ] # 4. Create directories - form_meta_dir = os.path.join(ext_dir, dir_name, obj_name, "Forms") + form_meta_dir = os.path.dirname(form_meta_file) os.makedirs(form_meta_dir, exist_ok=True) - form_meta_file = os.path.join(form_meta_dir, f"{form_name}.xml") write_xml_file(form_meta_file, "\n".join(form_meta_lines)) info(f" Created: {form_meta_file}") @@ -2096,7 +2211,26 @@ def main(): main_attr_info = src_main_info if borrow_main_attr else None # Имена реквизитов объекта нужны в обоих режимах: без заимствования — для кода пути в связях # формы, с заимствованием — чтобы отличить реквизит (разрешается текстом) от стандартного поля - src_attr_uuids = get_source_attribute_uuids(type_name, obj_name) + # У общей формы реквизиты берутся у владельца, выведенного из типа основного реквизита; + # у набора констант — ничего: код пути на константу не измерен, связь без основного реквизита + # вырезается с предупреждением, с ним — остаётся текстом + if is_common_form: + cf_owner = resolve_common_form_owner(etree.parse(src_form_xml_path).getroot()) + src_attr_uuids = {} + if cf_owner and cf_owner["Kind"] == "Object": + src_attr_uuids = get_source_attribute_uuids(cf_owner["TypeName"], cf_owner["ObjName"]) + elif cf_owner and cf_owner["Kind"] == "Constants": + # Константы, на которые есть пути: с основным реквизитом путь на заимствованную — текстом + for c_name in list(collect_form_data_paths(src_form_xml_path, cf_owner["MainName"])["FirstLevel"].keys()): + c_file = os.path.join(cfg_dir, "Constants", f"{c_name}.xml") + if not os.path.isfile(c_file): + continue + with open(c_file, "r", encoding="utf-8-sig") as fh: + cm = re.search(r'(?:(?!||).)*?' + + re.escape(main_attr_name) + + r'(?:(?!||).)*?)(.*?)') + + def keep_cmd_set(m): + key = f"@@KEPTCMDSET{len(kept_cmd_sets)}@@" + kept_cmd_sets[key] = m.group(2) + return m.group(1) + key + child_items_xml = re.sub(main_table_pat, keep_cmd_set, child_items_xml) child_items_xml = re.sub(r'(?s)\s*.*?', '', child_items_xml) child_items_xml = re.sub(r'\s*', '', child_items_xml) + for key, val in kept_cmd_sets.items(): + child_items_xml = child_items_xml.replace(key, val) child_items_xml = rewrite_type_links(child_items_xml, link_ctx) # Strip element-level Events child_items_xml = re.sub(r'\s*.*?', '', child_items_xml, flags=re.DOTALL) @@ -2381,7 +2532,7 @@ def main(): parts.append("\t\r\n") parts.append("") - form_xml_dir = os.path.join(form_meta_dir, form_name, "Ext") + form_xml_dir = os.path.join(ext_form_dir, "Ext") os.makedirs(form_xml_dir, exist_ok=True) form_xml_file = os.path.join(form_xml_dir, "Form.xml") write_xml_file(form_xml_file, "".join(parts)) @@ -2443,7 +2594,12 @@ def main(): info(f" Copied: {dst_pic}") # 7. Register form in parent object ChildObjects - register_form_in_object(type_name, obj_name, form_name) + # общая форма — в Configuration.xml, форма объекта — в ChildObjects владельца + if is_common_form: + if not common_form_registered: + add_to_child_objects(type_name, obj_name) + else: + register_form_in_object(type_name, obj_name, form_name) return [form_meta_file, form_xml_file, module_bsl_file] + pic_files @@ -2464,8 +2620,8 @@ def main(): if borrow_main_attribute_mode not in ("Form", "All"): print("-BorrowMainAttribute accepts 'Form' or 'All' (default: Form)", file=sys.stderr) sys.exit(1) - # Validate: only with .Form. pattern - has_form = any(".Form." in item for item in items) + # Validate: only with a form — .Form. pattern or a common form + has_form = any(".Form." in item or re.match(r'^(CommonForm|ОбщаяФорма)\.', item) for item in items) if not has_form: print("-BorrowMainAttribute requires a form in -Object (e.g. 'Catalog.X.Form.Y')", file=sys.stderr) sys.exit(1) @@ -2536,14 +2692,24 @@ def main(): form_name = remainder[form_idx + 6:] else: obj_name = remainder + # Общая форма — сама форма: «CommonForm.X» заимствуется вместе с содержимым, владельца у неё нет + is_common_form = type_name == "CommonForm" + if is_common_form: + if form_name: + print(f"Invalid format '{item}': общая форма задаётся как 'CommonForm.Имя'", file=sys.stderr) + sys.exit(1) + form_name = obj_name dir_name = CHILD_TYPE_DIR_MAP[type_name] if form_name: # --- Form borrowing --- - info(f"Borrowing form {type_name}.{obj_name}.Form.{form_name}...") + if is_common_form: + info(f"Borrowing common form {type_name}.{obj_name}...") + else: + info(f"Borrowing form {type_name}.{obj_name}.Form.{form_name}...") - if not test_object_borrowed(type_name, obj_name): + if not is_common_form and not test_object_borrowed(type_name, obj_name): info(f" Parent object {type_name}.{obj_name} not yet borrowed \u2014 borrowing first...") src = read_source_object(type_name, obj_name) @@ -2568,7 +2734,27 @@ def main(): borrowed_count += 1 # Borrow main attribute if requested - if has_bma: + if has_bma and is_common_form: + # У общей формы владельца нет — он выводится из типа основного реквизита + cf_src_form_xml_path = os.path.join(cfg_dir, dir_name, obj_name, "Ext", "Form.xml") + cf_owner = resolve_common_form_owner(etree.parse(cf_src_form_xml_path).getroot()) + if not cf_owner: + info(" Основной реквизит общей формы не ссылается на объект — заимствуется только сам реквизит") + elif cf_owner["Kind"] == "Constants": + borrow_form_constants(cf_src_form_xml_path, cf_owner["MainName"]) + else: + if not test_object_borrowed(cf_owner["TypeName"], cf_owner["ObjName"]): + src = read_source_object(cf_owner["TypeName"], cf_owner["ObjName"]) + borrowed_xml = build_borrowed_object_xml(cf_owner["TypeName"], cf_owner["ObjName"], src["Uuid"], src["Properties"]) + owner_dir = os.path.join(ext_dir, CHILD_TYPE_DIR_MAP[cf_owner["TypeName"]]) + os.makedirs(owner_dir, exist_ok=True) + owner_file = os.path.join(owner_dir, f"{cf_owner['ObjName']}.xml") + write_xml_file(owner_file, borrowed_xml) + add_to_child_objects(cf_owner["TypeName"], cf_owner["ObjName"]) + borrowed_files.append(owner_file) + info(f" Auto-borrowed: {cf_owner['TypeName']}.{cf_owner['ObjName']}") + borrow_main_attribute(cf_owner["TypeName"], cf_owner["ObjName"], None, borrow_main_attribute_mode, cf_src_form_xml_path) + elif has_bma: borrow_main_attribute(type_name, obj_name, form_name, borrow_main_attribute_mode) else: # --- Object borrowing --- diff --git a/docs/1c-extension-spec.md b/docs/1c-extension-spec.md index 30a336a84..96d58f87a 100644 --- a/docs/1c-extension-spec.md +++ b/docs/1c-extension-spec.md @@ -394,6 +394,8 @@ Enums/ # Перечисления Содержимое формы хранится в `Forms/ФормаСписка/Ext/Form.xml`, модуль формы — в `Forms/ФормаСписка/Ext/Form/Module.bsl`. +**Общая форма** заимствуется так же, только она сама объект конфигурации: описание — `CommonForms/<Имя>.xml` с корнем `` (те же свойства), тело — `CommonForms/<Имя>/Ext/Form.xml` (те же правила §5.5.2), модуль — `CommonForms/<Имя>/Ext/Form/Module.bsl`; регистрируется в `ChildObjects` конфигурации, а не владельца (эталон Конфигуратора УТ 8.3.27). Владельца у неё нет — при заимствовании основного реквизита он выводится из типа реквизита: `<Вид>Object.Имя` → этот объект; `DynamicList` → объект из ``; `ConstantsSet` → константы, на которые есть пути в форме (заимствуются с типом как есть, их ссылочные типы — оболочками); примитив или тип без имени (`ReportObject` — любой отчёт) → только сам реквизит формы (эталон УТ CommonMain, 5 форм). + #### 5.5.2. Структура Form.xml заимствованной формы Form.xml заимствованной формы — **двухчастный файл**: Part 1 (результирующая форма) и BaseForm (исходная форма). Существуют **два варианта** в зависимости от наличия модификаций модуля формы. @@ -455,6 +457,8 @@ Form.xml заимствованной формы — **двухчастный ф 2. **AutoCommandBar** — присутствует всегда с `id="-1"`, но без `` (кнопки удаляются). `` = `false`. + **Вложенные ``** (у элементов в `ChildItems` и в командной панели) удаляются целиком; корневой набор команд формы остаётся свойством формы. Исключение — набор таблицы, чей `DataPath` — сам основной реквизит, когда он заимствован: команды динамического списка снова разрешимы, и Конфигуратор набор оставляет в обеих секциях (эталоны УТ 8.3.27: общая форма `ФайлыВТоме`, форма списка обработки `ЖурналСкладскихАктов`). + 3. **Attributes** — по умолчанию пустой `` в обеих секциях. Атрибуты базовой конфигурации **не включаются**. Реквизиты расширения (id ≥ 1000000) добавляются только в Part 1. **Условное оформление формы** (`` внутри ``) копируется из исходной формы как есть в обе секции, после реквизитов; без основного реквизита — единственным ребёнком ``. Ссылки оформления на незаимствованные реквизиты формы остаются — платформа их принимает. Элементы стиля, на которые ссылается оформление (`style:X`), заимствуются, даже если больше нигде в форме не упомянуты (эталоны Конфигуратора УТ 8.3.27 и УНФ 8.5). diff --git a/tests/skills/cases/cfe-borrow/common-form-main.json b/tests/skills/cases/cfe-borrow/common-form-main.json new file mode 100644 index 000000000..b09770168 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/common-form-main.json @@ -0,0 +1,296 @@ +{ + "name": "Общие формы с -BorrowMainAttribute: владелец из типа основного реквизита — обработка, динамический список, набор констант, примитив", + "preRun": [ + { + "script": "meta-compile/scripts/meta-compile", + "input": { + "type": "DataProcessor", + "name": "Поиск", + "attributes": [ + "Строка: String(100)", + "Лишний: String(10)" + ] + }, + "args": { + "-JsonPath": "{inputFile}", + "-OutputDir": "{workDir}" + } + }, + { + "script": "meta-compile/scripts/meta-compile", + "input": { + "type": "Catalog", + "name": "Тома" + }, + "args": { + "-JsonPath": "{inputFile}", + "-OutputDir": "{workDir}" + } + }, + { + "script": "meta-compile/scripts/meta-compile", + "input": { + "type": "Catalog", + "name": "Пользователи" + }, + "args": { + "-JsonPath": "{inputFile}", + "-OutputDir": "{workDir}" + } + }, + { + "script": "meta-compile/scripts/meta-compile", + "input": { + "type": "Enum", + "name": "Сервисы", + "values": [ + "Первый", + "Второй" + ] + }, + "args": { + "-JsonPath": "{inputFile}", + "-OutputDir": "{workDir}" + } + }, + { + "script": "meta-compile/scripts/meta-compile", + "input": { + "type": "Constant", + "name": "Использовать", + "valueType": "Boolean" + }, + "args": { + "-JsonPath": "{inputFile}", + "-OutputDir": "{workDir}" + } + }, + { + "script": "meta-compile/scripts/meta-compile", + "input": { + "type": "Constant", + "name": "Сервис", + "valueType": "EnumRef.Сервисы" + }, + "args": { + "-JsonPath": "{inputFile}", + "-OutputDir": "{workDir}" + } + }, + { + "script": "meta-compile/scripts/meta-compile", + "input": { + "type": "Constant", + "name": "НеНаФорме", + "valueType": "String(10)" + }, + "args": { + "-JsonPath": "{inputFile}", + "-OutputDir": "{workDir}" + } + }, + { + "script": "meta-compile/scripts/meta-compile", + "input": { + "type": "CommonForm", + "name": "ФормаПоиска" + }, + "args": { + "-JsonPath": "{inputFile}", + "-OutputDir": "{workDir}" + } + }, + { + "script": "form-compile/scripts/form-compile", + "input": { + "elements": [ + { + "input": "Строка", + "path": "Объект.Строка" + } + ], + "attributes": [ + { + "name": "Объект", + "type": "DataProcessorObject.Поиск", + "main": true + } + ] + }, + "args": { + "-JsonPath": "{inputFile}", + "-OutputPath": "{workDir}/CommonForms/ФормаПоиска/Ext/Form.xml" + } + }, + { + "script": "meta-compile/scripts/meta-compile", + "input": { + "type": "CommonForm", + "name": "ФайлыВТоме" + }, + "args": { + "-JsonPath": "{inputFile}", + "-OutputDir": "{workDir}" + } + }, + { + "script": "form-compile/scripts/form-compile", + "input": { + "elements": [ + { + "table": "Список", + "path": "Список", + "excludedCommands": [ + "Find" + ], + "columns": [ + { + "input": "СписокСсылка", + "path": "Список.Ссылка" + }, + { + "input": "СписокАвтор", + "path": "Список.Автор" + } + ] + } + ], + "attributes": [ + { + "name": "Список", + "type": "DynamicList", + "main": true, + "settings": { + "mainTable": "Catalog.Тома", + "query": "ВЫБРАТЬ Т.Ссылка КАК Ссылка, ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка) КАК Автор ИЗ Справочник.Тома КАК Т" + } + } + ] + }, + "args": { + "-JsonPath": "{inputFile}", + "-OutputPath": "{workDir}/CommonForms/ФайлыВТоме/Ext/Form.xml" + } + }, + { + "script": "meta-compile/scripts/meta-compile", + "input": { + "type": "CommonForm", + "name": "НастройкаКонстант" + }, + "args": { + "-JsonPath": "{inputFile}", + "-OutputDir": "{workDir}" + } + }, + { + "script": "form-compile/scripts/form-compile", + "input": { + "elements": [ + { + "check": "Использовать", + "path": "НаборКонстант.Использовать" + }, + { + "input": "Сервис", + "path": "НаборКонстант.Сервис" + } + ], + "attributes": [ + { + "name": "НаборКонстант", + "type": "ConstantsSet", + "main": true + } + ] + }, + "args": { + "-JsonPath": "{inputFile}", + "-OutputPath": "{workDir}/CommonForms/НастройкаКонстант/Ext/Form.xml" + } + }, + { + "script": "meta-compile/scripts/meta-compile", + "input": { + "type": "CommonForm", + "name": "ВыборСвойства" + }, + "args": { + "-JsonPath": "{inputFile}", + "-OutputDir": "{workDir}" + } + }, + { + "script": "form-compile/scripts/form-compile", + "input": { + "elements": [ + { + "input": "Значение", + "path": "Объект" + } + ], + "attributes": [ + { + "name": "Объект", + "type": "string", + "main": true + } + ] + }, + "args": { + "-JsonPath": "{inputFile}", + "-OutputPath": "{workDir}/CommonForms/ВыборСвойства/Ext/Form.xml" + } + }, + { + "script": "cfe-init/scripts/cfe-init", + "args": { + "-Name": "Тест", + "-OutputDir": "{workDir}/cfe", + "-ConfigPath": "{workDir}" + } + } + ], + "params": { + "extensionPath": "cfe", + "object": "CommonForm.ФормаПоиска ;; CommonForm.ФайлыВТоме ;; CommonForm.НастройкаКонстант ;; CommonForm.ВыборСвойства" + }, + "expect": { + "files": [ + "cfe/DataProcessors/Поиск.xml", + "cfe/Catalogs/Тома.xml", + "cfe/Constants/Использовать.xml", + "cfe/Constants/Сервис.xml", + "cfe/Enums/Сервисы.xml" + ], + "filesAbsent": [ + "cfe/Constants/НеНаФорме.xml" + ], + "fileContains": [ + { + "file": "cfe/DataProcessors/Поиск.xml", + "text": "Строка" + }, + { + "file": "cfe/Constants/Сервис.xml", + "text": "cfg:EnumRef.Сервисы" + }, + { + "file": "cfe/CommonForms/ФайлыВТоме/Ext/Form.xml", + "text": "Find" + }, + { + "file": "cfe/CommonForms/ВыборСвойства/Ext/Form.xml", + "text": "" + } + ], + "fileNotContains": { + "file": "cfe/DataProcessors/Поиск.xml", + "text": "Лишний" + } + }, + "args_extra": [ + "-BorrowMainAttribute", + "Form" + ] +} diff --git a/tests/skills/cases/cfe-borrow/common-form.json b/tests/skills/cases/cfe-borrow/common-form.json new file mode 100644 index 000000000..54e7d4f71 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/common-form.json @@ -0,0 +1,115 @@ +{ + "name": "Общая форма заимствуется вместе с содержимым: описание , тело с BaseForm, модуль, регистрация", + "preRun": [ + { + "script": "meta-compile/scripts/meta-compile", + "input": { + "type": "Catalog", + "name": "Склады" + }, + "args": { + "-JsonPath": "{inputFile}", + "-OutputDir": "{workDir}" + } + }, + { + "script": "meta-compile/scripts/meta-compile", + "input": { + "type": "CommonForm", + "name": "Подбор" + }, + "args": { + "-JsonPath": "{inputFile}", + "-OutputDir": "{workDir}" + } + }, + { + "script": "form-compile/scripts/form-compile", + "input": { + "title": "Подбор", + "elements": [ + { + "check": "Режим", + "path": "Режим" + }, + { + "table": "Таблица", + "path": "Таблица", + "columns": [ + { + "input": "ТаблицаСклад", + "path": "Таблица.Склад", + "choiceParameterLinks": [ + { + "name": "Отбор.Ссылка", + "dataPath": "Items.Таблица.CurrentData.Склад" + } + ] + } + ] + } + ], + "attributes": [ + { + "name": "Режим", + "type": "boolean" + }, + { + "name": "Таблица", + "type": "ValueTable", + "columns": [ + { + "name": "Склад", + "type": "CatalogRef.Склады" + } + ] + } + ] + }, + "args": { + "-JsonPath": "{inputFile}", + "-OutputPath": "{workDir}/CommonForms/Подбор/Ext/Form.xml" + } + }, + { + "script": "cfe-init/scripts/cfe-init", + "args": { + "-Name": "Тест", + "-OutputDir": "{workDir}/cfe", + "-ConfigPath": "{workDir}" + } + } + ], + "params": { + "extensionPath": "cfe", + "object": "CommonForm.Подбор" + }, + "expect": { + "files": [ + "cfe/CommonForms/Подбор.xml", + "cfe/CommonForms/Подбор/Ext/Form.xml", + "cfe/CommonForms/Подбор/Ext/Form/Module.bsl" + ], + "fileContains": [ + { + "file": "cfe/CommonForms/Подбор.xml", + "text": [ + "Adopted", + "Managed" + ] + }, + { + "file": "cfe/CommonForms/Подбор/Ext/Form.xml", + "text": [ + "Подбор" + } + ] + } +} diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/Catalogs/Пользователи.xml b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/Catalogs/Пользователи.xml new file mode 100644 index 000000000..7d1ee6b76 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/Catalogs/Пользователи.xml @@ -0,0 +1,91 @@ + + + + + + UUID-002 + UUID-003 + + + UUID-004 + UUID-005 + + + UUID-006 + UUID-007 + + + UUID-008 + UUID-009 + + + UUID-010 + UUID-011 + + + + Пользователи + + + ru + Пользователи + + + + false + HierarchyFoldersAndItems + false + 2 + true + true + + ToItems + 9 + 25 + String + Variable + WholeCatalog + false + true + AsDescription + + Auto + InDialog + false + BothWays + + Catalog.Пользователи.StandardAttribute.Description + Catalog.Пользователи.StandardAttribute.Code + + Begin + DontUse + Directly + + + + + + + + + + + false + + + Managed + Use + + + + + + Use + Auto + DontUse + false + false + + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/Catalogs/Пользователи/Ext/ObjectModule.bsl b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/Catalogs/Пользователи/Ext/ObjectModule.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/Catalogs/Тома.xml b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/Catalogs/Тома.xml new file mode 100644 index 000000000..a4019d089 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/Catalogs/Тома.xml @@ -0,0 +1,91 @@ + + + + + + UUID-002 + UUID-003 + + + UUID-004 + UUID-005 + + + UUID-006 + UUID-007 + + + UUID-008 + UUID-009 + + + UUID-010 + UUID-011 + + + + Тома + + + ru + Тома + + + + false + HierarchyFoldersAndItems + false + 2 + true + true + + ToItems + 9 + 25 + String + Variable + WholeCatalog + false + true + AsDescription + + Auto + InDialog + false + BothWays + + Catalog.Тома.StandardAttribute.Description + Catalog.Тома.StandardAttribute.Code + + Begin + DontUse + Directly + + + + + + + + + + + false + + + Managed + Use + + + + + + Use + Auto + DontUse + false + false + + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/Catalogs/Тома/Ext/ObjectModule.bsl b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/Catalogs/Тома/Ext/ObjectModule.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/CommonForms/ВыборСвойства.xml b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/CommonForms/ВыборСвойства.xml new file mode 100644 index 000000000..e3114610c --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/CommonForms/ВыборСвойства.xml @@ -0,0 +1,24 @@ + + + + + ВыборСвойства + + + ru + Выбор свойства + + + + Managed + false + + PlatformApplication + MobilePlatformApplication + + false + + + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/CommonForms/ВыборСвойства/Ext/Form.xml b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/CommonForms/ВыборСвойства/Ext/Form.xml new file mode 100644 index 000000000..cfd5d3050 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/CommonForms/ВыборСвойства/Ext/Form.xml @@ -0,0 +1,23 @@ + +
+ + + + Объект + + + + + + + + xs:string + + 0 + Variable + + + true + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/CommonForms/ВыборСвойства/Ext/Form/Module.bsl b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/CommonForms/ВыборСвойства/Ext/Form/Module.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/CommonForms/НастройкаКонстант.xml b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/CommonForms/НастройкаКонстант.xml new file mode 100644 index 000000000..f9c492831 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/CommonForms/НастройкаКонстант.xml @@ -0,0 +1,24 @@ + + + + + НастройкаКонстант + + + ru + Настройка констант + + + + Managed + false + + PlatformApplication + MobilePlatformApplication + + false + + + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/CommonForms/НастройкаКонстант/Ext/Form.xml b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/CommonForms/НастройкаКонстант/Ext/Form.xml new file mode 100644 index 000000000..da27c6088 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/CommonForms/НастройкаКонстант/Ext/Form.xml @@ -0,0 +1,26 @@ + +
+ + + + НаборКонстант.Использовать + Auto + Right + + + + + НаборКонстант.Сервис + + + + + + + + cfg:ConstantsSet + + true + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/CommonForms/НастройкаКонстант/Ext/Form/Module.bsl b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/CommonForms/НастройкаКонстант/Ext/Form/Module.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/CommonForms/ФайлыВТоме.xml b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/CommonForms/ФайлыВТоме.xml new file mode 100644 index 000000000..70df37e8b --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/CommonForms/ФайлыВТоме.xml @@ -0,0 +1,24 @@ + + + + + ФайлыВТоме + + + ru + Файлы втоме + + + + Managed + false + + PlatformApplication + MobilePlatformApplication + + false + + + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/CommonForms/ФайлыВТоме/Ext/Form.xml b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/CommonForms/ФайлыВТоме/Ext/Form.xml new file mode 100644 index 000000000..b0cc2d410 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/CommonForms/ФайлыВТоме/Ext/Form.xml @@ -0,0 +1,99 @@ + +
+ + + + Список + None + Список.DefaultPicture + false + 60 + + Custom + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + Items + false + + true + false + Auto + true + + Find + + + + false + + + + + Список + SearchStringRepresentation + + + + + + + Список + ViewStatusRepresentation + + + + + + + Список + SearchControl + + + + + + + Список.Ссылка + + + + + Список.Автор + + + + +
+
+ + + + cfg:DynamicList + + true + + true + true + ВЫБРАТЬ Т.Ссылка КАК Ссылка, ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка) КАК Автор ИЗ Справочник.Тома КАК Т + Catalog.Тома + + + Normal + UUID-001 + + + Normal + UUID-002 + + + Normal + UUID-003 + + Normal + UUID-004 + + + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/CommonForms/ФайлыВТоме/Ext/Form/Module.bsl b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/CommonForms/ФайлыВТоме/Ext/Form/Module.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/CommonForms/ФормаПоиска.xml b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/CommonForms/ФормаПоиска.xml new file mode 100644 index 000000000..2c2cd35f4 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/CommonForms/ФормаПоиска.xml @@ -0,0 +1,24 @@ + + + + + ФормаПоиска + + + ru + Форма поиска + + + + Managed + false + + PlatformApplication + MobilePlatformApplication + + false + + + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/CommonForms/ФормаПоиска/Ext/Form.xml b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/CommonForms/ФормаПоиска/Ext/Form.xml new file mode 100644 index 000000000..3448c439d --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/CommonForms/ФормаПоиска/Ext/Form.xml @@ -0,0 +1,19 @@ + +
+ + + + Объект.Строка + + + + + + + + cfg:DataProcessorObject.Поиск + + true + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/CommonForms/ФормаПоиска/Ext/Form/Module.bsl b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/CommonForms/ФормаПоиска/Ext/Form/Module.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/Configuration.xml b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/Configuration.xml new file mode 100644 index 000000000..c872a093a --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/Configuration.xml @@ -0,0 +1,262 @@ + + + + + + UUID-002 + UUID-003 + + + UUID-004 + UUID-005 + + + UUID-006 + UUID-007 + + + UUID-008 + UUID-009 + + + UUID-010 + UUID-011 + + + UUID-012 + UUID-013 + + + UUID-014 + UUID-015 + + + + TestConfig + + + ru + TestConfig + + + + + Version8_3_24 + ManagedApplication + + PlatformApplication + + Russian + + + + + false + false + false + + + + + + + + + + + + + + + + + + + + + + Biometrics + true + + + Location + false + + + BackgroundLocation + false + + + BluetoothPrinters + false + + + WiFiPrinters + false + + + Contacts + false + + + Calendars + false + + + PushNotifications + false + + + LocalNotifications + false + + + InAppPurchases + false + + + PersonalComputerFileExchange + false + + + Ads + false + + + NumberDialing + false + + + CallProcessing + false + + + CallLog + false + + + AutoSendSMS + false + + + ReceiveSMS + false + + + SMSLog + false + + + Camera + false + + + Microphone + false + + + MusicLibrary + false + + + PictureAndVideoLibraries + false + + + AudioPlaybackAndVibration + false + + + BackgroundAudioPlaybackAndVibration + false + + + InstallPackages + false + + + OSBackup + true + + + ApplicationUsageStatistics + false + + + BarcodeScanning + false + + + BackgroundAudioRecording + false + + + AllFilesAccess + false + + + Videoconferences + false + + + NFC + false + + + DocumentScanning + false + + + SpeechToText + false + + + Geofences + false + + + IncomingShareRequests + false + + + AllIncomingShareRequestsTypesProcessing + false + + + + + + Normal + + + Language.Русский + + + + + + Managed + NotAutoFree + DontUse + DontUse + TaxiEnableVersion8_2 + DontUse + Version8_3_24 + + + + Русский + Использовать + Сервис + НеНаФорме + ФормаПоиска + ФайлыВТоме + НастройкаКонстант + ВыборСвойства + Тома + Пользователи + Сервисы + Поиск + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/Constants/Использовать.xml b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/Constants/Использовать.xml new file mode 100644 index 000000000..aea5b1246 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/Constants/Использовать.xml @@ -0,0 +1,58 @@ + + + + + + UUID-002 + UUID-003 + + + UUID-004 + UUID-005 + + + UUID-006 + UUID-007 + + + + Использовать + + + ru + Использовать + + + + + xs:boolean + + true + + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + + + Auto + Managed + DontUse + false + false + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/Constants/Использовать/Ext/ManagerModule.bsl b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/Constants/Использовать/Ext/ManagerModule.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/Constants/Использовать/Ext/ValueManagerModule.bsl b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/Constants/Использовать/Ext/ValueManagerModule.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/Constants/НеНаФорме.xml b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/Constants/НеНаФорме.xml new file mode 100644 index 000000000..d035d6e6f --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/Constants/НеНаФорме.xml @@ -0,0 +1,62 @@ + + + + + + UUID-002 + UUID-003 + + + UUID-004 + UUID-005 + + + UUID-006 + UUID-007 + + + + НеНаФорме + + + ru + Не на форме + + + + + xs:string + + 10 + Variable + + + true + + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + + + Auto + Managed + DontUse + false + false + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/Constants/НеНаФорме/Ext/ManagerModule.bsl b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/Constants/НеНаФорме/Ext/ManagerModule.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/Constants/НеНаФорме/Ext/ValueManagerModule.bsl b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/Constants/НеНаФорме/Ext/ValueManagerModule.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/Constants/Сервис.xml b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/Constants/Сервис.xml new file mode 100644 index 000000000..6f75adeea --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/Constants/Сервис.xml @@ -0,0 +1,58 @@ + + + + + + UUID-002 + UUID-003 + + + UUID-004 + UUID-005 + + + UUID-006 + UUID-007 + + + + Сервис + + + ru + Сервис + + + + + cfg:EnumRef.Сервисы + + true + + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + + + Auto + Managed + DontUse + false + false + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/Constants/Сервис/Ext/ManagerModule.bsl b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/Constants/Сервис/Ext/ManagerModule.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/Constants/Сервис/Ext/ValueManagerModule.bsl b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/Constants/Сервис/Ext/ValueManagerModule.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/DataProcessors/Поиск.xml b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/DataProcessors/Поиск.xml new file mode 100644 index 000000000..4ef8c3e32 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/DataProcessors/Поиск.xml @@ -0,0 +1,109 @@ + + + + + + UUID-002 + UUID-003 + + + UUID-004 + UUID-005 + + + + Поиск + + + ru + Поиск + + + + true + + + false + + + + + + + Строка + + + ru + Строка + + + + + xs:string + + 100 + Variable + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + + + + Лишний + + + ru + Лишний + + + + + xs:string + + 10 + Variable + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/DataProcessors/Поиск/Ext/ManagerModule.bsl b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/DataProcessors/Поиск/Ext/ManagerModule.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/DataProcessors/Поиск/Ext/ObjectModule.bsl b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/DataProcessors/Поиск/Ext/ObjectModule.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/Enums/Сервисы.xml b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/Enums/Сервисы.xml new file mode 100644 index 000000000..797a6c2dd --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/Enums/Сервисы.xml @@ -0,0 +1,121 @@ + + + + + + UUID-002 + UUID-003 + + + UUID-004 + UUID-005 + + + UUID-006 + UUID-007 + + + + Сервисы + + + ru + Сервисы + + + + false + + + + DontCheck + false + false + Auto + + + false + + + Auto + Auto + + false + Use + false + + + + Use + + + + + + + + DontCheck + false + false + Auto + + + false + + + Auto + Auto + + false + Use + false + + + + Use + + + + + + + + true + BothWays + + + + + + + + Auto + + + + + Первый + + + ru + Первый + + + + + + + + Второй + + + ru + Второй + + + + + + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/Enums/Сервисы/Ext/ManagerModule.bsl b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/Enums/Сервисы/Ext/ManagerModule.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/Ext/ClientApplicationInterface.xml b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/Ext/ClientApplicationInterface.xml new file mode 100644 index 000000000..3c1161b2d --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/Ext/ClientApplicationInterface.xml @@ -0,0 +1,18 @@ + + + + + UUID-002 + + + + + UUID-004 + + + + + + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/Languages/Русский.xml b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/Languages/Русский.xml new file mode 100644 index 000000000..37c60d786 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/Languages/Русский.xml @@ -0,0 +1,16 @@ + + + + + Русский + + + ru + Русский + + + + ru + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/Catalogs/Тома.xml b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/Catalogs/Тома.xml new file mode 100644 index 000000000..067bab4a6 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/Catalogs/Тома.xml @@ -0,0 +1,39 @@ + + + + + + UUID-002 + UUID-003 + + + UUID-004 + UUID-005 + + + UUID-006 + UUID-007 + + + UUID-008 + UUID-009 + + + UUID-010 + UUID-011 + + + + Adopted + Тома + + UUID-012 + false + 9 + 25 + String + Variable + + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/CommonForms/ВыборСвойства.xml b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/CommonForms/ВыборСвойства.xml new file mode 100644 index 000000000..2f60ed7f0 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/CommonForms/ВыборСвойства.xml @@ -0,0 +1,13 @@ + + + + + + Adopted + ВыборСвойства + + UUID-002 + Managed + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/CommonForms/ВыборСвойства/Ext/Form.xml b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/CommonForms/ВыборСвойства/Ext/Form.xml new file mode 100644 index 000000000..d6af949bc --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/CommonForms/ВыборСвойства/Ext/Form.xml @@ -0,0 +1,45 @@ + +
+ + + + Объект + + + + + + + + xs:string + + 0 + Variable + + + true + + + + + + + Объект + + + + + + + + xs:string + + 0 + Variable + + + true + + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/CommonForms/ВыборСвойства/Ext/Form/Module.bsl b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/CommonForms/ВыборСвойства/Ext/Form/Module.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/CommonForms/НастройкаКонстант.xml b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/CommonForms/НастройкаКонстант.xml new file mode 100644 index 000000000..6018866cd --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/CommonForms/НастройкаКонстант.xml @@ -0,0 +1,13 @@ + + + + + + Adopted + НастройкаКонстант + + UUID-002 + Managed + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/CommonForms/НастройкаКонстант/Ext/Form.xml b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/CommonForms/НастройкаКонстант/Ext/Form.xml new file mode 100644 index 000000000..b35172c25 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/CommonForms/НастройкаКонстант/Ext/Form.xml @@ -0,0 +1,51 @@ + +
+ + + + НаборКонстант.Использовать + Auto + Right + + + + + НаборКонстант.Сервис + + + + + + + + cfg:ConstantsSet + + true + + + + + + + НаборКонстант.Использовать + Auto + Right + + + + + НаборКонстант.Сервис + + + + + + + + cfg:ConstantsSet + + true + + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/CommonForms/НастройкаКонстант/Ext/Form/Module.bsl b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/CommonForms/НастройкаКонстант/Ext/Form/Module.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/CommonForms/ФайлыВТоме.xml b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/CommonForms/ФайлыВТоме.xml new file mode 100644 index 000000000..f1632d254 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/CommonForms/ФайлыВТоме.xml @@ -0,0 +1,13 @@ + + + + + + Adopted + ФайлыВТоме + + UUID-002 + Managed + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/CommonForms/ФайлыВТоме/Ext/Form.xml b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/CommonForms/ФайлыВТоме/Ext/Form.xml new file mode 100644 index 000000000..eb6c9ea24 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/CommonForms/ФайлыВТоме/Ext/Form.xml @@ -0,0 +1,197 @@ + +
+ + + + Список + None + Список.DefaultPicture + false + 60 + + Custom + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + Items + false + + true + false + Auto + true + + Find + + + + false + + + + + Список + SearchStringRepresentation + + + + + + + Список + ViewStatusRepresentation + + + + + + + Список + SearchControl + + + + + + + Список.Ссылка + + + + + Список.Автор + + + + +
+
+ + + + cfg:DynamicList + + true + + true + true + ВЫБРАТЬ Т.Ссылка КАК Ссылка, ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка) КАК Автор ИЗ Справочник.Тома КАК Т + Catalog.Тома + + + Normal + UUID-001 + + + Normal + UUID-002 + + + Normal + UUID-003 + + Normal + UUID-004 + + + + + + + + + Список + None + Список.DefaultPicture + false + 60 + + Custom + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + Items + false + + true + false + Auto + true + + Find + + + + false + + + + + Список + SearchStringRepresentation + + + + + + + Список + ViewStatusRepresentation + + + + + + + Список + SearchControl + + + + + + + Список.Ссылка + + + + + Список.Автор + + + + +
+
+ + + + cfg:DynamicList + + true + + true + true + ВЫБРАТЬ Т.Ссылка КАК Ссылка, ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка) КАК Автор ИЗ Справочник.Тома КАК Т + Catalog.Тома + + + Normal + UUID-001 + + + Normal + UUID-002 + + + Normal + UUID-003 + + Normal + UUID-004 + + + + +
+ \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/CommonForms/ФайлыВТоме/Ext/Form/Module.bsl b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/CommonForms/ФайлыВТоме/Ext/Form/Module.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/CommonForms/ФормаПоиска.xml b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/CommonForms/ФормаПоиска.xml new file mode 100644 index 000000000..f98b56693 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/CommonForms/ФормаПоиска.xml @@ -0,0 +1,13 @@ + + + + + + Adopted + ФормаПоиска + + UUID-002 + Managed + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/CommonForms/ФормаПоиска/Ext/Form.xml b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/CommonForms/ФормаПоиска/Ext/Form.xml new file mode 100644 index 000000000..93d938004 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/CommonForms/ФормаПоиска/Ext/Form.xml @@ -0,0 +1,37 @@ + +
+ + + + Объект.Строка + + + + + + + + cfg:DataProcessorObject.Поиск + + true + + + + + + + Объект.Строка + + + + + + + + cfg:DataProcessorObject.Поиск + + true + + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/CommonForms/ФормаПоиска/Ext/Form/Module.bsl b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/CommonForms/ФормаПоиска/Ext/Form/Module.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/Configuration.xml b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/Configuration.xml new file mode 100644 index 000000000..2ac9f0ffb --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/Configuration.xml @@ -0,0 +1,80 @@ + + + + + + UUID-002 + UUID-003 + + + UUID-004 + UUID-005 + + + UUID-006 + UUID-007 + + + UUID-008 + UUID-009 + + + UUID-010 + UUID-011 + + + UUID-012 + UUID-013 + + + UUID-014 + UUID-015 + + + + Adopted + Тест + + + ru + Тест + + + + Customization + true + Тест_ + Version8_3_24 + ManagedApplication + + PlatformApplication + + Russian + + Role.Тест_ОсновнаяРоль + + + + Language.Русский + + + + + + TaxiEnableVersion8_2 + + + Русский + Тест_ОсновнаяРоль + Использовать + Сервис + ФормаПоиска + ФайлыВТоме + НастройкаКонстант + ВыборСвойства + Тома + Сервисы + Поиск + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/Constants/Использовать.xml b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/Constants/Использовать.xml new file mode 100644 index 000000000..0650c9b83 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/Constants/Использовать.xml @@ -0,0 +1,28 @@ + + + + + + UUID-002 + UUID-003 + + + UUID-004 + UUID-005 + + + UUID-006 + UUID-007 + + + + Adopted + Использовать + + UUID-008 + + xs:boolean + + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/Constants/Сервис.xml b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/Constants/Сервис.xml new file mode 100644 index 000000000..1568b0ea9 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/Constants/Сервис.xml @@ -0,0 +1,28 @@ + + + + + + UUID-002 + UUID-003 + + + UUID-004 + UUID-005 + + + UUID-006 + UUID-007 + + + + Adopted + Сервис + + UUID-008 + + cfg:EnumRef.Сервисы + + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/DataProcessors/Поиск.xml b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/DataProcessors/Поиск.xml new file mode 100644 index 000000000..1228b446e --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/DataProcessors/Поиск.xml @@ -0,0 +1,33 @@ + + + + + + UUID-002 + UUID-003 + + + UUID-004 + UUID-005 + + + + Adopted + Поиск + + UUID-006 + + + + + + Adopted + Строка + + UUID-008 + xs:string100Variable + + + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/Enums/Сервисы.xml b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/Enums/Сервисы.xml new file mode 100644 index 000000000..e8a107c90 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/Enums/Сервисы.xml @@ -0,0 +1,26 @@ + + + + + + UUID-002 + UUID-003 + + + UUID-004 + UUID-005 + + + UUID-006 + UUID-007 + + + + Adopted + Сервисы + + UUID-008 + + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/Languages/Русский.xml b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/Languages/Русский.xml new file mode 100644 index 000000000..c21624f52 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/Languages/Русский.xml @@ -0,0 +1,13 @@ + + + + + + Adopted + Русский + + UUID-002 + ru + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/Roles/Тест_ОсновнаяРоль.xml b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/Roles/Тест_ОсновнаяРоль.xml new file mode 100644 index 000000000..ec9dfbaf6 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/common-form-main/cfe/Roles/Тест_ОсновнаяРоль.xml @@ -0,0 +1,10 @@ + + + + + Тест_ОсновнаяРоль + + + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form/Catalogs/Склады.xml b/tests/skills/cases/cfe-borrow/snapshots/common-form/Catalogs/Склады.xml new file mode 100644 index 000000000..407ed9812 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/common-form/Catalogs/Склады.xml @@ -0,0 +1,91 @@ + + + + + + UUID-002 + UUID-003 + + + UUID-004 + UUID-005 + + + UUID-006 + UUID-007 + + + UUID-008 + UUID-009 + + + UUID-010 + UUID-011 + + + + Склады + + + ru + Склады + + + + false + HierarchyFoldersAndItems + false + 2 + true + true + + ToItems + 9 + 25 + String + Variable + WholeCatalog + false + true + AsDescription + + Auto + InDialog + false + BothWays + + Catalog.Склады.StandardAttribute.Description + Catalog.Склады.StandardAttribute.Code + + Begin + DontUse + Directly + + + + + + + + + + + false + + + Managed + Use + + + + + + Use + Auto + DontUse + false + false + + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form/Catalogs/Склады/Ext/ObjectModule.bsl b/tests/skills/cases/cfe-borrow/snapshots/common-form/Catalogs/Склады/Ext/ObjectModule.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form/CommonForms/Подбор.xml b/tests/skills/cases/cfe-borrow/snapshots/common-form/CommonForms/Подбор.xml new file mode 100644 index 000000000..528d51d56 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/common-form/CommonForms/Подбор.xml @@ -0,0 +1,24 @@ + + + + + Подбор + + + ru + Подбор + + + + Managed + false + + PlatformApplication + MobilePlatformApplication + + false + + + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form/CommonForms/Подбор/Ext/Form.xml b/tests/skills/cases/cfe-borrow/snapshots/common-form/CommonForms/Подбор/Ext/Form.xml new file mode 100644 index 000000000..362861bc9 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/common-form/CommonForms/Подбор/Ext/Form.xml @@ -0,0 +1,95 @@ + +
+ + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Подбор</v8:content> + </v8:item> + + false + + + + Режим + Auto + Right + + + + + Таблица + + + + + + Таблица + SearchStringRepresentation + + + + + + + Таблица + ViewStatusRepresentation + + + + + + + Таблица + SearchControl + + + + + + + Таблица.Склад + + + Отбор.Ссылка + Items.Таблица.CurrentData.Склад + Clear + + + + + + +
+
+ + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Режим</v8:content> + </v8:item> + + + xs:boolean + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Таблица</v8:content> + </v8:item> + + + v8:ValueTable + + + + + cfg:CatalogRef.Склады + + + + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form/CommonForms/Подбор/Ext/Form/Module.bsl b/tests/skills/cases/cfe-borrow/snapshots/common-form/CommonForms/Подбор/Ext/Form/Module.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form/Configuration.xml b/tests/skills/cases/cfe-borrow/snapshots/common-form/Configuration.xml new file mode 100644 index 000000000..dacfa4706 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/common-form/Configuration.xml @@ -0,0 +1,253 @@ + + + + + + UUID-002 + UUID-003 + + + UUID-004 + UUID-005 + + + UUID-006 + UUID-007 + + + UUID-008 + UUID-009 + + + UUID-010 + UUID-011 + + + UUID-012 + UUID-013 + + + UUID-014 + UUID-015 + + + + TestConfig + + + ru + TestConfig + + + + + Version8_3_24 + ManagedApplication + + PlatformApplication + + Russian + + + + + false + false + false + + + + + + + + + + + + + + + + + + + + + + Biometrics + true + + + Location + false + + + BackgroundLocation + false + + + BluetoothPrinters + false + + + WiFiPrinters + false + + + Contacts + false + + + Calendars + false + + + PushNotifications + false + + + LocalNotifications + false + + + InAppPurchases + false + + + PersonalComputerFileExchange + false + + + Ads + false + + + NumberDialing + false + + + CallProcessing + false + + + CallLog + false + + + AutoSendSMS + false + + + ReceiveSMS + false + + + SMSLog + false + + + Camera + false + + + Microphone + false + + + MusicLibrary + false + + + PictureAndVideoLibraries + false + + + AudioPlaybackAndVibration + false + + + BackgroundAudioPlaybackAndVibration + false + + + InstallPackages + false + + + OSBackup + true + + + ApplicationUsageStatistics + false + + + BarcodeScanning + false + + + BackgroundAudioRecording + false + + + AllFilesAccess + false + + + Videoconferences + false + + + NFC + false + + + DocumentScanning + false + + + SpeechToText + false + + + Geofences + false + + + IncomingShareRequests + false + + + AllIncomingShareRequestsTypesProcessing + false + + + + + + Normal + + + Language.Русский + + + + + + Managed + NotAutoFree + DontUse + DontUse + TaxiEnableVersion8_2 + DontUse + Version8_3_24 + + + + Русский + Подбор + Склады + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form/Ext/ClientApplicationInterface.xml b/tests/skills/cases/cfe-borrow/snapshots/common-form/Ext/ClientApplicationInterface.xml new file mode 100644 index 000000000..3c1161b2d --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/common-form/Ext/ClientApplicationInterface.xml @@ -0,0 +1,18 @@ + + + + + UUID-002 + + + + + UUID-004 + + + + + + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form/Languages/Русский.xml b/tests/skills/cases/cfe-borrow/snapshots/common-form/Languages/Русский.xml new file mode 100644 index 000000000..37c60d786 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/common-form/Languages/Русский.xml @@ -0,0 +1,16 @@ + + + + + Русский + + + ru + Русский + + + + ru + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form/cfe/CommonForms/Подбор.xml b/tests/skills/cases/cfe-borrow/snapshots/common-form/cfe/CommonForms/Подбор.xml new file mode 100644 index 000000000..6e49f3efe --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/common-form/cfe/CommonForms/Подбор.xml @@ -0,0 +1,13 @@ + + + + + + Adopted + Подбор + + UUID-002 + Managed + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form/cfe/CommonForms/Подбор/Ext/Form.xml b/tests/skills/cases/cfe-borrow/snapshots/common-form/cfe/CommonForms/Подбор/Ext/Form.xml new file mode 100644 index 000000000..95334ce37 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/common-form/cfe/CommonForms/Подбор/Ext/Form.xml @@ -0,0 +1,123 @@ + +
+ + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Подбор</v8:content> + </v8:item> + + false + + + + Auto + Right + + + + + + + + + + Таблица + SearchStringRepresentation + + + + + + + Таблица + ViewStatusRepresentation + + + + + + + Таблица + SearchControl + + + + + + + + + Отбор.Ссылка + 4:UUID-001/22 + Clear + + + + + + +
+
+ + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Подбор</v8:content> + </v8:item> + + false + + + + Auto + Right + + + + + + + + + + Таблица + SearchStringRepresentation + + + + + + + Таблица + ViewStatusRepresentation + + + + + + + Таблица + SearchControl + + + + + + + + + Отбор.Ссылка + 4:UUID-001/22 + Clear + + + + + + +
+
+ +
+ \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form/cfe/CommonForms/Подбор/Ext/Form/Module.bsl b/tests/skills/cases/cfe-borrow/snapshots/common-form/cfe/CommonForms/Подбор/Ext/Form/Module.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form/cfe/Configuration.xml b/tests/skills/cases/cfe-borrow/snapshots/common-form/cfe/Configuration.xml new file mode 100644 index 000000000..10b30f378 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/common-form/cfe/Configuration.xml @@ -0,0 +1,72 @@ + + + + + + UUID-002 + UUID-003 + + + UUID-004 + UUID-005 + + + UUID-006 + UUID-007 + + + UUID-008 + UUID-009 + + + UUID-010 + UUID-011 + + + UUID-012 + UUID-013 + + + UUID-014 + UUID-015 + + + + Adopted + Тест + + + ru + Тест + + + + Customization + true + Тест_ + Version8_3_24 + ManagedApplication + + PlatformApplication + + Russian + + Role.Тест_ОсновнаяРоль + + + + Language.Русский + + + + + + TaxiEnableVersion8_2 + + + Русский + Тест_ОсновнаяРоль + Подбор + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form/cfe/Languages/Русский.xml b/tests/skills/cases/cfe-borrow/snapshots/common-form/cfe/Languages/Русский.xml new file mode 100644 index 000000000..c21624f52 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/common-form/cfe/Languages/Русский.xml @@ -0,0 +1,13 @@ + + + + + + Adopted + Русский + + UUID-002 + ru + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-form/cfe/Roles/Тест_ОсновнаяРоль.xml b/tests/skills/cases/cfe-borrow/snapshots/common-form/cfe/Roles/Тест_ОсновнаяРоль.xml new file mode 100644 index 000000000..ec9dfbaf6 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/common-form/cfe/Roles/Тест_ОсновнаяРоль.xml @@ -0,0 +1,10 @@ + + + + + Тест_ОсновнаяРоль + + + + + \ No newline at end of file