diff --git a/.claude/skills/cfe-borrow/SKILL.md b/.claude/skills/cfe-borrow/SKILL.md index 369e30a9..c7b5de73 100644 --- a/.claude/skills/cfe-borrow/SKILL.md +++ b/.claude/skills/cfe-borrow/SKILL.md @@ -31,6 +31,7 @@ allowed-tools: | `ExtensionPath` | Путь к каталогу расширения (обязат.) | | `ConfigPath` | Путь к конфигурации-источнику (обязат.) | | `Object` | Что заимствовать (обязат.), batch через `;;` | +| `Module` | Создать пустые модули объекта: `ObjectModule`, `ManagerModule`, `RecordSetModule`, `ValueManagerModule` (через запятую) или `None`. У типов с единственным модулем (`CommonModule`, `HTTPService`, `WebService`) он создаётся и без параметра | | `BorrowMainAttribute` | Заимствовать основной реквизит формы. Без параметра — не заимствует. `Form` — реквизиты, используемые на форме. `All` — все реквизиты объекта. Требует форму в -Object | ## Формат -Object @@ -65,7 +66,7 @@ allowed-tools: 2. `/meta-edit` — добавить новый реквизит в объект расширения 3. `/form-edit` — вывести реквизит на заимствованную форму -**Защита существующих данных**: если зависимый объект уже заимствован с содержимым (реквизитами, формами) — скрипт не перезаписывает его, а добавляет только недостающее. +**Защита существующих данных**: уже заимствованный объект не перезаписывается — добавляется только недостающее. Повторный вызов безопасен: собственные реквизиты расширения, заимствованные подобъекты и код в модулях сохраняются. ## Команда @@ -79,6 +80,12 @@ powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/cfe-borrow.ps1" -Ex # Заимствовать один объект ... -ExtensionPath src\cfe\extname -ConfigPath src\cf -Object "Catalog.Контрагенты" +# Заимствовать справочник вместе с модулями объекта и менеджера +... -ExtensionPath src\cfe\extname -ConfigPath src\cf -Object "Catalog.Контрагенты" -Module ObjectModule,ManagerModule + +# Общий модуль без файла модуля +... -ExtensionPath src\cfe\extname -ConfigPath src\cf -Object "CommonModule.РаботаСФайлами" -Module None + # Заимствовать форму (автоматически заимствует родительский объект) ... -ExtensionPath src\cfe\extname -ConfigPath src\cf -Object "Catalog.Контрагенты.Form.ФормаЭлемента" diff --git a/.claude/skills/cfe-borrow/scripts/cfe-borrow.ps1 b/.claude/skills/cfe-borrow/scripts/cfe-borrow.ps1 index 7778b8dc..5c3d8a57 100644 --- a/.claude/skills/cfe-borrow/scripts/cfe-borrow.ps1 +++ b/.claude/skills/cfe-borrow/scripts/cfe-borrow.ps1 @@ -1,10 +1,11 @@ -# cfe-borrow v1.31 — Borrow objects from configuration into extension (CFE) +# cfe-borrow v1.32 — Borrow objects from configuration into extension (CFE) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory)][string]$ExtensionPath, [Parameter(Mandatory)][string]$ConfigPath, [Parameter(Mandatory)][string]$Object, - [string]$BorrowMainAttribute + [string]$BorrowMainAttribute, + [string]$Module ) $ErrorActionPreference = "Stop" @@ -261,6 +262,32 @@ $childTypeDirMap = @{ "CommonAttribute"="CommonAttributes"; "Style"="Styles"; "Bot"="Bots"; "Language"="Languages" } +# --- 4a. Модули заимствованных объектов --- +# Порядок внутри значения — порядок выгрузки Конфигуратора: сначала «объектный» модуль +# (ObjectModule / RecordSetModule / ValueManagerModule), затем ManagerModule. +$script:moduleKindsByType = @{ + "CommonModule"=@("Module"); "HTTPService"=@("Module"); "WebService"=@("Module") + "Catalog"=@("ObjectModule","ManagerModule"); "Document"=@("ObjectModule","ManagerModule") + "Report"=@("ObjectModule","ManagerModule"); "DataProcessor"=@("ObjectModule","ManagerModule") + "ExchangePlan"=@("ObjectModule","ManagerModule") + "ChartOfCharacteristicTypes"=@("ObjectModule","ManagerModule") + "ChartOfAccounts"=@("ObjectModule","ManagerModule") + "ChartOfCalculationTypes"=@("ObjectModule","ManagerModule") + "BusinessProcess"=@("ObjectModule","ManagerModule"); "Task"=@("ObjectModule","ManagerModule") + "InformationRegister"=@("RecordSetModule","ManagerModule") + "AccumulationRegister"=@("RecordSetModule","ManagerModule") + "AccountingRegister"=@("RecordSetModule","ManagerModule") + "CalculationRegister"=@("RecordSetModule","ManagerModule") + "Sequence"=@("RecordSetModule","ManagerModule") + "Constant"=@("ValueManagerModule","ManagerModule") + "Enum"=@("ManagerModule"); "DocumentJournal"=@("ManagerModule") + "FilterCriterion"=@("ManagerModule") +} +# Типы с ЕДИНСТВЕННЫМ модулем: ради него объект и заимствуют, поэтому файл создаётся молча. +# Отказ — `-Module None`. +$script:autoModuleTypes = @("CommonModule", "HTTPService", "WebService") +$script:moduleKindNames = @("Module", "ObjectModule", "ManagerModule", "RecordSetModule", "ValueManagerModule") + # --- 4b. Russian synonym → English type --- $synonymMap = @{ "Справочник"="Catalog"; "Документ"="Document"; "Перечисление"="Enum" @@ -591,6 +618,50 @@ if ($BorrowMainAttribute) { } } +# --- 9c. Validate -Module --- +$script:requestedModules = @() +$script:noModule = $false +if ($Module) { + foreach ($raw in ($Module -split '[,;]')) { + $kind = $raw.Trim() + if (-not $kind) { continue } + # Сравнение РЕГИСТРОНЕЗАВИСИМОЕ явно (-ieq): в py-порте это отдельная ветка, и молчаливое + # расхождение портов на «none» ловится только глазами. + if ($kind -ieq "None") { $script:noModule = $true; continue } + $canon = @($script:moduleKindNames | Where-Object { $_ -ieq $kind }) + if ($canon.Count -eq 0) { + Write-Error "Неизвестный вид модуля '$kind'. Допустимо: $($script:moduleKindNames -join ', '), None" + exit 1 + } + $script:requestedModules += $canon[0] + } + if ($script:noModule -and $script:requestedModules.Count -gt 0) { + Write-Error "-Module None нельзя сочетать с видами модулей" + exit 1 + } +} + +# Какие модули создать для объекта. Тип с единственным модулем получает его всегда — уточнять +# там нечего; -Module разбирает только неоднозначные типы. Иначе батч смешанных типов +# (`CommonModule.X ;; Catalog.Y`) не выражался бы одним вызовом. +function Resolve-ModuleKinds { + param([string]$typeName) + + if ($script:noModule) { return @() } + $allowed = @($script:moduleKindsByType[$typeName]) + if ($allowed.Count -eq 0) { return @() } + + if ($script:autoModuleTypes -contains $typeName) { return @($allowed[0]) } + if ($script:requestedModules.Count -eq 0) { return @() } + + # Порядок берём из таблицы типа, а не из порядка ключей в -Module. + $selected = @($allowed | Where-Object { $script:requestedModules -contains $_ }) + if ($selected.Count -eq 0) { + Warn " Тип $typeName не имеет запрошенных модулей — пропущено. Допустимо: $($allowed -join ', ')" + } + return $selected +} + # --- 10. Helper: read source object XML --- # Имена реквизитов исходного объекта → uuid. Нужны для непрозрачной формы пути в ссылках # параметров выбора (см. Rewrite-ChoiceParameterLinks). @@ -1313,6 +1384,81 @@ function Test-ObjectBorrowed { return (Test-Path $objFile) } +# --- 10f. Helper: пометка расширенного свойства () --- +# Свойство появилось в формате 2.19 (8.3.26): на 2.18 и ниже платформа молча выбрасывает элемент +# при загрузке. С 2.19 Конфигуратор ставит его сам при выгрузке — эмитим, чтобы исходники навыка +# совпадали с эталоном. Имя свойства = базовое имя файла модуля (Module / ObjectModule / …), +# у заимствованной формы — Form. Ставит тот, кто создал файл модуля (или форму). +function Build-PropertyStateXml { + param([string]$propertyName, [string]$indent) + + $sb = New-Object System.Text.StringBuilder + $sb.AppendLine("${indent}") | Out-Null + $sb.AppendLine("${indent}`t${propertyName}") | Out-Null + $sb.AppendLine("${indent}`tExtended") | Out-Null + $sb.Append("${indent}") | Out-Null + return $sb.ToString() +} + +function Set-PropertyStateFlag { + param([string]$objFile, [string]$propertyName, [string]$formatVersion) + + if ((Get-FormatRank $formatVersion) -lt 219) { return } + if (-not (Test-Path $objFile)) { return } + + $enc = New-Object System.Text.UTF8Encoding($true) + $text = [System.IO.File]::ReadAllText($objFile, $enc) + $nl = if ($text -match "`r`n") { "`r`n" } else { "`n" } + + # ПЕРВЫЙ в файле — собственный у объекта: у реквизитов и подобъектов свои, + # но они лежат ниже, внутри . + $empty = [regex]::Match($text, '([ \t]*)') + $open = [regex]::Match($text, '(?s)([ \t]*)(.*?)') + + if ($empty.Success -and (-not $open.Success -or $empty.Index -lt $open.Index)) { + $ind = $empty.Groups[1].Value + $block = Build-PropertyStateXml $propertyName ($ind + "`t") + $replacement = "${ind}${nl}${block}${nl}${ind}" + $text = $text.Remove($empty.Index, $empty.Length).Insert($empty.Index, $replacement) + } elseif ($open.Success) { + if ($open.Groups[2].Value -match "$([regex]::Escape($propertyName))") { return } + $ind = $open.Groups[1].Value + $block = Build-PropertyStateXml $propertyName ($ind + "`t") + # Дописываем в КОНЕЦ InternalInfo: у Конфигуратора PropertyState идёт после GeneratedType. + $closeAt = $open.Index + $open.Length - "".Length - $ind.Length + $text = $text.Insert($closeAt, "${block}${nl}") + } else { + return + } + + [System.IO.File]::WriteAllText($objFile, $text, $enc) +} + +# --- 10g. Helper: пустой модуль заимствованного объекта --- +function New-BorrowedModuleFile { + param([string]$typeName, [string]$objName, [string]$moduleKind) + + $dirName = $childTypeDirMap[$typeName] + $objDir = Join-Path (Join-Path $extDir $dirName) $objName + $moduleDir = Join-Path $objDir "Ext" + if (-not (Test-Path $moduleDir)) { New-Item -ItemType Directory -Path $moduleDir -Force | Out-Null } + + # NEVER overwrite an existing one: повторное заимствование не должно затирать дописанный код + # (то же правило, что у модуля формы). + $moduleFile = Join-Path $moduleDir "${moduleKind}.bsl" + if (Test-Path $moduleFile) { + Info " Preserved existing ${moduleKind}.bsl" + } else { + $enc = New-Object System.Text.UTF8Encoding($true) + [System.IO.File]::WriteAllText($moduleFile, "", $enc) + Info " Created: $moduleFile" + } + + # Флаг ставим и для уже существовавшего файла: состояние объекта должно отражать факт модуля. + Set-PropertyStateFlag (Join-Path (Join-Path $extDir $dirName) "${objName}.xml") $moduleKind $script:formatVersion + return $moduleFile +} + # --- 11. Helper: generate InternalInfo XML --- function Build-InternalInfoXml { param([string]$typeName, [string]$objName, [string]$indent) @@ -2204,6 +2350,9 @@ foreach ($item in $items) { $hasBMA = [bool]$BorrowMainAttribute $formFiles = Borrow-Form $typeName $objName $formName -BorrowMainAttr:$hasBMA $script:borrowedFiles += $formFiles + # Замер на 8.3.26: платформа помечает форму расширенной сразу при заимствовании, + # даже если элементы не менялись. Флаг живёт в метаданных формы, не у владельца. + Set-PropertyStateFlag $formFiles[0] "Form" $script:formatVersion $borrowedCount++ # Borrow main attribute if requested @@ -2212,26 +2361,37 @@ foreach ($item in $items) { } } else { # --- Object borrowing (existing logic) --- - Info "Borrowing ${typeName}.${objName}..." - - $src = Read-SourceObject $typeName $objName - Info " Source UUID: $($src.Uuid)" - - $borrowedXml = Build-BorrowedObjectXml $typeName $objName $src.Uuid $src.Properties - $targetDir = Join-Path $extDir $dirName - if (-not (Test-Path $targetDir)) { - New-Item -ItemType Directory -Path $targetDir -Force | Out-Null - } - $targetFile = Join-Path $targetDir "${objName}.xml" - $enc = New-Object System.Text.UTF8Encoding($true) - [System.IO.File]::WriteAllText($targetFile, $borrowedXml, $enc) - Info " Created: $targetFile" + + # Уже заимствованный объект НЕ переписываем: в его XML лежат собственные реквизиты + # расширения, заимствованные подобъекты и состояния, которые из источника не выводятся. + # Повторный вызов — законный способ доделать модуль (-Module), а не переиздать заготовку. + if (Test-ObjectBorrowed $typeName $objName) { + Info "Already borrowed: ${typeName}.${objName} — XML сохранён без изменений" + } else { + Info "Borrowing ${typeName}.${objName}..." + + $src = Read-SourceObject $typeName $objName + Info " Source UUID: $($src.Uuid)" + + $borrowedXml = Build-BorrowedObjectXml $typeName $objName $src.Uuid $src.Properties + + if (-not (Test-Path $targetDir)) { + New-Item -ItemType Directory -Path $targetDir -Force | Out-Null + } + + $enc = New-Object System.Text.UTF8Encoding($true) + [System.IO.File]::WriteAllText($targetFile, $borrowedXml, $enc) + Info " Created: $targetFile" + } Add-ToChildObjects $typeName $objName $script:borrowedFiles += $targetFile + foreach ($kind in (Resolve-ModuleKinds $typeName)) { + $script:borrowedFiles += (New-BorrowedModuleFile $typeName $objName $kind) + } $borrowedCount++ } } diff --git a/.claude/skills/cfe-borrow/scripts/cfe-borrow.py b/.claude/skills/cfe-borrow/scripts/cfe-borrow.py index ee3fafe8..bd51cb61 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.31 — Borrow objects from configuration into extension (CFE) +# cfe-borrow v1.32 — Borrow objects from configuration into extension (CFE) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse @@ -240,6 +240,32 @@ CHILD_TYPE_DIR_MAP = { "Bot": "Bots", "Language": "Languages", } +# --- Модули заимствованных объектов --- +# Порядок внутри значения — порядок выгрузки Конфигуратора: сначала «объектный» модуль +# (ObjectModule / RecordSetModule / ValueManagerModule), затем ManagerModule. +MODULE_KINDS_BY_TYPE = { + "CommonModule": ["Module"], "HTTPService": ["Module"], "WebService": ["Module"], + "Catalog": ["ObjectModule", "ManagerModule"], "Document": ["ObjectModule", "ManagerModule"], + "Report": ["ObjectModule", "ManagerModule"], "DataProcessor": ["ObjectModule", "ManagerModule"], + "ExchangePlan": ["ObjectModule", "ManagerModule"], + "ChartOfCharacteristicTypes": ["ObjectModule", "ManagerModule"], + "ChartOfAccounts": ["ObjectModule", "ManagerModule"], + "ChartOfCalculationTypes": ["ObjectModule", "ManagerModule"], + "BusinessProcess": ["ObjectModule", "ManagerModule"], "Task": ["ObjectModule", "ManagerModule"], + "InformationRegister": ["RecordSetModule", "ManagerModule"], + "AccumulationRegister": ["RecordSetModule", "ManagerModule"], + "AccountingRegister": ["RecordSetModule", "ManagerModule"], + "CalculationRegister": ["RecordSetModule", "ManagerModule"], + "Sequence": ["RecordSetModule", "ManagerModule"], + "Constant": ["ValueManagerModule", "ManagerModule"], + "Enum": ["ManagerModule"], "DocumentJournal": ["ManagerModule"], + "FilterCriterion": ["ManagerModule"], +} +# Типы с ЕДИНСТВЕННЫМ модулем: ради него объект и заимствуют, поэтому файл создаётся молча. +# Отказ — `-Module None`. +AUTO_MODULE_TYPES = ["CommonModule", "HTTPService", "WebService"] +MODULE_KIND_NAMES = ["Module", "ObjectModule", "ManagerModule", "RecordSetModule", "ValueManagerModule"] + SYNONYM_MAP = { "\u0421\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a": "Catalog", "\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442": "Document", @@ -516,6 +542,55 @@ def format_rank(ver): return int(m.group(1)) * 100 + int(m.group(2)) if m else 0 +# --- Пометка расширенного свойства () --- +# Свойство появилось в формате 2.19 (8.3.26): на 2.18 и ниже платформа молча выбрасывает элемент +# при загрузке. С 2.19 Конфигуратор ставит его сам при выгрузке. Правило: флаг ставит тот, кто +# создал файл модуля, — здесь это мы. Имя свойства = базовое имя файла модуля. +# Копии этих функций есть в cfe-patch-method (навыки автономны); держать их одинаковыми — сознательно. +def build_property_state_xml(property_name, indent): + return "\n".join([ + f"{indent}", + f"{indent}\t{property_name}", + f"{indent}\tExtended", + f"{indent}", + ]) + + +def set_property_state_flag(obj_file, property_name, format_version): + if format_rank(format_version) < 219: + return + if not os.path.isfile(obj_file): + return + + with open(obj_file, "r", encoding="utf-8-sig", newline="") as fh: + text = fh.read() + nl = "\r\n" if "\r\n" in text else "\n" + + # ПЕРВЫЙ в файле — собственный у объекта: у реквизитов и подобъектов свои, + # но они лежат ниже, внутри . + empty = re.search(r"([ \t]*)", text) + opened = re.search(r"([ \t]*)(.*?)", text, re.S) + + if empty and (not opened or empty.start() < opened.start()): + ind = empty.group(1) + block = build_property_state_xml(property_name, ind + "\t") + replacement = f"{ind}{nl}{block}{nl}{ind}" + text = text[:empty.start()] + replacement + text[empty.end():] + elif opened: + if re.search(rf"{re.escape(property_name)}", opened.group(2)): + return + ind = opened.group(1) + block = build_property_state_xml(property_name, ind + "\t") + # Дописываем в КОНЕЦ InternalInfo: у Конфигуратора PropertyState идёт после GeneratedType. + close_at = opened.end() - len("") - len(ind) + text = text[:close_at] + block + nl + text[close_at:] + else: + return + + with open(obj_file, "w", encoding="utf-8-sig", newline="") as fh: + fh.write(text) + + def apply_pal_ns(format_version): """2.21 (8.5) добавила в шапку пространство палитры — ради у значений перечисления. Вставляем НА МЕСТО (после lf, перед style): платформа держит объявления по алфавиту, @@ -655,6 +730,7 @@ def main(): parser.add_argument("-ConfigPath", required=True) parser.add_argument("-Object", required=True) parser.add_argument("-BorrowMainAttribute", nargs="?", const="Form", default=None) + parser.add_argument("-Module", default=None) args = ci_parse_args(parser) # --- 1. Resolve paths --- @@ -860,6 +936,25 @@ def main(): sys.exit(1) return src_uuid + # --- Пустой модуль заимствованного объекта --- + def new_borrowed_module_file(type_name, obj_name, module_kind): + dir_name = CHILD_TYPE_DIR_MAP[type_name] + module_dir = os.path.join(ext_dir, dir_name, obj_name, "Ext") + os.makedirs(module_dir, exist_ok=True) + + # NEVER overwrite an existing one: повторное заимствование не должно затирать дописанный + # код (то же правило, что у модуля формы). + module_file = os.path.join(module_dir, f"{module_kind}.bsl") + if os.path.isfile(module_file): + info(f" Preserved existing {module_kind}.bsl") + else: + write_utf8_bom(module_file, "") + info(f" Created: {module_file}") + + # Флаг ставим и для уже существовавшего файла: состояние объекта должно отражать факт модуля. + set_property_state_flag(os.path.join(ext_dir, dir_name, f"{obj_name}.xml"), module_kind, format_version) + return module_file + def build_internal_info_xml(type_name, obj_name, indent): types = GENERATED_TYPES.get(type_name) if not types: @@ -2019,6 +2114,47 @@ def main(): print("-BorrowMainAttribute requires a form in -Object (e.g. 'Catalog.X.Form.Y')", file=sys.stderr) sys.exit(1) + # --- 9c. Validate -Module --- + requested_modules = [] + no_module = False + if args.Module: + for raw in re.split(r"[,;]", args.Module): + kind = raw.strip() + if not kind: + continue + # Сравнение РЕГИСТРОНЕЗАВИСИМОЕ явно: в ps1-порте `-ieq`, и молчаливое расхождение + # портов на «none» ловится только глазами. + if kind.lower() == "none": + no_module = True + continue + canon = [k for k in MODULE_KIND_NAMES if k.lower() == kind.lower()] + if not canon: + print(f"Неизвестный вид модуля '{kind}'. Допустимо: {', '.join(MODULE_KIND_NAMES)}, None", file=sys.stderr) + sys.exit(1) + requested_modules.append(canon[0]) + if no_module and requested_modules: + print("-Module None нельзя сочетать с видами модулей", file=sys.stderr) + sys.exit(1) + + # Какие модули создать для объекта. Тип с единственным модулем получает его всегда — уточнять + # там нечего; -Module разбирает только неоднозначные типы. Иначе батч смешанных типов + # (`CommonModule.X ;; Catalog.Y`) не выражался бы одним вызовом. + def resolve_module_kinds(type_name): + if no_module: + return [] + allowed = MODULE_KINDS_BY_TYPE.get(type_name, []) + if not allowed: + return [] + if type_name in AUTO_MODULE_TYPES: + return [allowed[0]] + if not requested_modules: + return [] + # Порядок берём из таблицы типа, а не из порядка ключей в -Module. + selected = [k for k in allowed if k in requested_modules] + if not selected: + warn(f" Тип {type_name} не имеет запрошенных модулей — пропущено. Допустимо: {', '.join(allowed)}") + return selected + # --- 10. Process each item --- borrowed_count = 0 @@ -2070,6 +2206,9 @@ def main(): has_bma = borrow_main_attribute_mode is not None form_files = borrow_form(type_name, obj_name, form_name, borrow_main_attr=has_bma) borrowed_files.extend(form_files) + # Замер на 8.3.26: платформа помечает форму расширенной сразу при заимствовании, + # даже если элементы не менялись. Флаг живёт в метаданных формы, не у владельца. + set_property_state_flag(form_files[0], "Form", format_version) borrowed_count += 1 # Borrow main attribute if requested @@ -2077,23 +2216,32 @@ def main(): borrow_main_attribute(type_name, obj_name, form_name, borrow_main_attribute_mode) else: # --- Object borrowing --- - info(f"Borrowing {type_name}.{obj_name}...") - - src = read_source_object(type_name, obj_name) - info(f" Source UUID: {src['Uuid']}") - - borrowed_xml = build_borrowed_object_xml(type_name, obj_name, src["Uuid"], src["Properties"]) - target_dir = os.path.join(ext_dir, dir_name) - os.makedirs(target_dir, exist_ok=True) - target_file = os.path.join(target_dir, f"{obj_name}.xml") - write_xml_file(target_file, borrowed_xml) - info(f" Created: {target_file}") + + # Уже заимствованный объект НЕ переписываем: в его XML лежат собственные реквизиты + # расширения, заимствованные подобъекты и состояния, которые из источника не + # выводятся. Повторный вызов — законный способ доделать модуль (-Module), а не + # переиздать заготовку. + if test_object_borrowed(type_name, obj_name): + info(f"Already borrowed: {type_name}.{obj_name} — XML сохранён без изменений") + else: + info(f"Borrowing {type_name}.{obj_name}...") + + src = read_source_object(type_name, obj_name) + info(f" Source UUID: {src['Uuid']}") + + borrowed_xml = build_borrowed_object_xml(type_name, obj_name, src["Uuid"], src["Properties"]) + + os.makedirs(target_dir, exist_ok=True) + write_xml_file(target_file, borrowed_xml) + info(f" Created: {target_file}") add_to_child_objects(type_name, obj_name) borrowed_files.append(target_file) + for kind in resolve_module_kinds(type_name): + borrowed_files.append(new_borrowed_module_file(type_name, obj_name, kind)) borrowed_count += 1 # --- Владельцы заимствованных справочников --- diff --git a/.claude/skills/cfe-patch-method/scripts/cfe-patch-method.ps1 b/.claude/skills/cfe-patch-method/scripts/cfe-patch-method.ps1 index 1876ef7a..3a886a72 100644 --- a/.claude/skills/cfe-patch-method/scripts/cfe-patch-method.ps1 +++ b/.claude/skills/cfe-patch-method/scripts/cfe-patch-method.ps1 @@ -1,4 +1,4 @@ -# cfe-patch-method v2.7 — Source-aware method interceptor for 1C extension (CFE) (+прощающий ввод: имя каталога наравне с именем типа) +# cfe-patch-method v2.8 — Source-aware method interceptor for 1C extension (CFE) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory)] @@ -788,6 +788,100 @@ if (Test-Path $ExtensionPath -PathType Leaf) { $ExtensionPath = Split-Path $Exte $cfgFile = Join-Path $ExtensionPath "Configuration.xml" if (-not (Test-Path $cfgFile)) { Write-Error "Configuration.xml не найден в расширении: $ExtensionPath"; exit 1 } +# --- Пометка расширенного свойства () --- +# Свойство появилось в формате 2.19 (8.3.26): на 2.18 и ниже платформа молча выбрасывает элемент +# при загрузке. С 2.19 Конфигуратор ставит его сам при выгрузке. Правило: флаг ставит тот, кто +# создал файл модуля, — здесь это мы. Имя свойства = базовое имя файла модуля. +# Копии этих функций есть в cfe-borrow (навыки автономны); держать их одинаковыми — сознательно. +function Get-FormatRank([string]$ver) { + if ($ver -match '^(\d+)\.(\d+)$') { return [int]$Matches[1] * 100 + [int]$Matches[2] } + return 0 +} + +function Detect-FormatVersion([string]$dir) { + $d = $dir + while ($d) { + # Автономная внешняя обработка/отчёт: своего Configuration.xml у неё нет, версию несёт + # корень самой обработки. Без этого форма и макет внутри обработки 2.21 писались бы 2.17. + $extPath = "$d.xml" + if (Test-Path $extPath) { + $extText = [System.IO.File]::ReadAllText($extPath, [System.Text.Encoding]::UTF8) + $extHead = $extText.Substring(0, [Math]::Min(2000, $extText.Length)) + if ($extHead -match '<(ExternalDataProcessor|ExternalReport)[ >]' -and $extHead -match ']+version="(\d+\.\d+)"') { return $Matches[1] } + } + $cfgPath = Join-Path $d "Configuration.xml" + if (Test-Path $cfgPath) { + $cfgText = [System.IO.File]::ReadAllText($cfgPath, [System.Text.Encoding]::UTF8) + # Длину среза берём по СТРОКЕ, а не по размеру файла: размер в БАЙТАХ, Substring считает + # СИМВОЛЫ, и на кириллице байт больше — короткий Configuration.xml ронял навык исключением. + $head = $cfgText.Substring(0, [Math]::Min(2000, $cfgText.Length)) + if ($head -match ']+version="(\d+\.\d+)"') { return $Matches[1] } + } + $parent = Split-Path $d -Parent + if ($parent -eq $d) { break } + $d = $parent + } + return "2.17" +} + +function Build-PropertyStateXml { + param([string]$propertyName, [string]$indent) + + $sb = New-Object System.Text.StringBuilder + $sb.AppendLine("${indent}") | Out-Null + $sb.AppendLine("${indent}`t${propertyName}") | Out-Null + $sb.AppendLine("${indent}`tExtended") | Out-Null + $sb.Append("${indent}") | Out-Null + return $sb.ToString() +} + +function Set-PropertyStateFlag { + param([string]$objFile, [string]$propertyName, [string]$formatVersion) + + if ((Get-FormatRank $formatVersion) -lt 219) { return } + if (-not (Test-Path $objFile)) { return } + + $enc = New-Object System.Text.UTF8Encoding($true) + $text = [System.IO.File]::ReadAllText($objFile, $enc) + $nl = if ($text -match "`r`n") { "`r`n" } else { "`n" } + + # ПЕРВЫЙ в файле — собственный у объекта: у реквизитов и подобъектов свои, + # но они лежат ниже, внутри . + $empty = [regex]::Match($text, '([ \t]*)') + $open = [regex]::Match($text, '(?s)([ \t]*)(.*?)') + + if ($empty.Success -and (-not $open.Success -or $empty.Index -lt $open.Index)) { + $ind = $empty.Groups[1].Value + $block = Build-PropertyStateXml $propertyName ($ind + "`t") + $replacement = "${ind}${nl}${block}${nl}${ind}" + $text = $text.Remove($empty.Index, $empty.Length).Insert($empty.Index, $replacement) + } elseif ($open.Success) { + if ($open.Groups[2].Value -match "$([regex]::Escape($propertyName))") { return } + $ind = $open.Groups[1].Value + $block = Build-PropertyStateXml $propertyName ($ind + "`t") + # Дописываем в КОНЕЦ InternalInfo: у Конфигуратора PropertyState идёт после GeneratedType. + $closeAt = $open.Index + $open.Length - "".Length - $ind.Length + $text = $text.Insert($closeAt, "${block}${nl}") + } else { + return + } + + [System.IO.File]::WriteAllText($objFile, $text, $enc) +} + +# Модуль формы сюда не попадает: у формы флаг называется Form и ставится при заимствовании, +# а не при появлении модуля (замер на 8.3.26 — пустой модуль формы платформа не выгружает). +function Get-ModuleFlagTarget { + param([string[]]$relParts, [string]$extRoot) + + if ($relParts.Count -ne 4 -or $relParts[2] -ne "Ext") { return $null } + $prop = [System.IO.Path]::GetFileNameWithoutExtension($relParts[3]) + return @{ + File = (Join-Path (Join-Path $extRoot $relParts[0]) "$($relParts[1]).xml") + Property = $prop + } +} + # --- Read NamePrefix --- $cfgDoc = New-Object System.Xml.XmlDocument $cfgDoc.PreserveWhitespace = $false @@ -1084,6 +1178,12 @@ if ($reuseRegionIdx -ge 0) { } } +# Модуль в расширении есть — отражаем это в метаданных объекта (формат ≥ 2.19). +$flagTarget = Get-ModuleFlagTarget $relParts $ExtensionPath +if ($flagTarget) { + Set-PropertyStateFlag $flagTarget.File $flagTarget.Property (Detect-FormatVersion $ExtensionPath) +} + Write-Host "[OK] Перехватчик &$decoratorRu(`"$MethodName`") — $placement" Write-Host " Файл: $extBsl" Write-Host " Процедура: $interceptorName($($method.ParamsText -replace '\s+', ' '))" diff --git a/.claude/skills/cfe-patch-method/scripts/cfe-patch-method.py b/.claude/skills/cfe-patch-method/scripts/cfe-patch-method.py index fb38814b..49c3fa2e 100644 --- a/.claude/skills/cfe-patch-method/scripts/cfe-patch-method.py +++ b/.claude/skills/cfe-patch-method/scripts/cfe-patch-method.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# cfe-patch-method v2.7 — Source-aware method interceptor for 1C extension (CFE) (+прощающий ввод: имя каталога наравне с именем типа) +# cfe-patch-method v2.8 — Source-aware method interceptor for 1C extension (CFE) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse @@ -75,6 +75,99 @@ CONTEXT_RE = re.compile( ) +# --- Пометка расширенного свойства () --- +# Свойство появилось в формате 2.19 (8.3.26): на 2.18 и ниже платформа молча выбрасывает элемент +# при загрузке. С 2.19 Конфигуратор ставит его сам при выгрузке. Правило: флаг ставит тот, кто +# создал файл модуля, — здесь это мы. Имя свойства = базовое имя файла модуля. +# Копии этих функций есть в cfe-borrow (навыки автономны); держать их одинаковыми — сознательно. +def detect_format_version(d): + while d: + # Автономная внешняя обработка/отчёт: своего Configuration.xml у неё нет, версию несёт + # корень самой обработки. Без этого форма и макет внутри обработки 2.21 писались бы 2.17. + ext_path = d + ".xml" + if os.path.isfile(ext_path): + with open(ext_path, "r", encoding="utf-8-sig") as f: + ext_head = f.read(2000) + if re.search(r'<(ExternalDataProcessor|ExternalReport)[ >]', ext_head): + m = re.search(r']+version="(\d+\.\d+)"', ext_head) + if m: + return m.group(1) + cfg_path = os.path.join(d, "Configuration.xml") + if os.path.isfile(cfg_path): + with open(cfg_path, "r", encoding="utf-8-sig") as f: + head = f.read(2000) + m = re.search(r']+version="(\d+\.\d+)"', head) + if m: + return m.group(1) + parent = os.path.dirname(d) + if parent == d: + break + d = parent + return "2.17" + + +def format_rank(ver): + """"2.20" → 220, "2.9" → 209. Строковое сравнение неверно ("2.9" > "2.17").""" + m = re.match(r'^(\d+)\.(\d+)$', ver or '') + return int(m.group(1)) * 100 + int(m.group(2)) if m else 0 + + +def build_property_state_xml(property_name, indent): + return "\n".join([ + f"{indent}", + f"{indent}\t{property_name}", + f"{indent}\tExtended", + f"{indent}", + ]) + + +def set_property_state_flag(obj_file, property_name, format_version): + if format_rank(format_version) < 219: + return + if not os.path.isfile(obj_file): + return + + with open(obj_file, "r", encoding="utf-8-sig", newline="") as fh: + text = fh.read() + nl = "\r\n" if "\r\n" in text else "\n" + + # ПЕРВЫЙ в файле — собственный у объекта: у реквизитов и подобъектов свои, + # но они лежат ниже, внутри . + empty = re.search(r"([ \t]*)", text) + opened = re.search(r"([ \t]*)(.*?)", text, re.S) + + if empty and (not opened or empty.start() < opened.start()): + ind = empty.group(1) + block = build_property_state_xml(property_name, ind + "\t") + replacement = f"{ind}{nl}{block}{nl}{ind}" + text = text[:empty.start()] + replacement + text[empty.end():] + elif opened: + if re.search(rf"{re.escape(property_name)}", opened.group(2)): + return + ind = opened.group(1) + block = build_property_state_xml(property_name, ind + "\t") + # Дописываем в КОНЕЦ InternalInfo: у Конфигуратора PropertyState идёт после GeneratedType. + close_at = opened.end() - len("") - len(ind) + text = text[:close_at] + block + nl + text[close_at:] + else: + return + + with open(obj_file, "w", encoding="utf-8-sig", newline="") as fh: + fh.write(text) + + +# Модуль формы сюда не попадает: у формы флаг называется Form и ставится при заимствовании, +# а не при появлении модуля (замер на 8.3.26 — пустой модуль формы платформа не выгружает). +def get_module_flag_target(rel_parts, ext_root): + if len(rel_parts) != 4 or rel_parts[2] != "Ext": + return None + prop = os.path.splitext(rel_parts[3])[0] + return { + "file": os.path.join(ext_root, rel_parts[0], f"{rel_parts[1]}.xml"), + "property": prop, + } + + def get_module_rel_path(module_path): parts = module_path.split(".") if len(parts) < 2: @@ -841,6 +934,12 @@ def main(): place_new(ext_bsl, ext_lines, ext_exists, method["chain"], core) + # Модуль в расширении есть — отражаем это в метаданных объекта (формат ≥ 2.19). + flag_target = get_module_flag_target(rel_parts, extension_path) + if flag_target: + set_property_state_flag(flag_target["file"], flag_target["property"], + detect_format_version(extension_path)) + # emit summary placement = place_new.placement print('[OK] Перехватчик &%s("%s") — %s' % (decorator_ru, method_name, placement)) diff --git a/.claude/skills/cfe-validate/scripts/cfe-validate.ps1 b/.claude/skills/cfe-validate/scripts/cfe-validate.ps1 index 03320a7c..bdffc167 100644 --- a/.claude/skills/cfe-validate/scripts/cfe-validate.ps1 +++ b/.claude/skills/cfe-validate/scripts/cfe-validate.ps1 @@ -1,4 +1,4 @@ -# cfe-validate v1.11 — Validate 1C configuration extension structure (CFE) +# cfe-validate v1.12 — Validate 1C configuration extension structure (CFE) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory)] @@ -107,7 +107,28 @@ function Get-FormatRank([string]$ver) { } # --- Reference tables --- -$guidPattern = '^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$' +# Модули заимствованных объектов: тип → виды модулей. Имя свойства в +# совпадает с базовым именем файла модуля. Копия таблицы есть в cfe-borrow (навыки автономны). +$moduleKindsByType = @{ + "CommonModule"=@("Module"); "HTTPService"=@("Module"); "WebService"=@("Module") + "Catalog"=@("ObjectModule","ManagerModule"); "Document"=@("ObjectModule","ManagerModule") + "Report"=@("ObjectModule","ManagerModule"); "DataProcessor"=@("ObjectModule","ManagerModule") + "ExchangePlan"=@("ObjectModule","ManagerModule") + "ChartOfCharacteristicTypes"=@("ObjectModule","ManagerModule") + "ChartOfAccounts"=@("ObjectModule","ManagerModule") + "ChartOfCalculationTypes"=@("ObjectModule","ManagerModule") + "BusinessProcess"=@("ObjectModule","ManagerModule"); "Task"=@("ObjectModule","ManagerModule") + "InformationRegister"=@("RecordSetModule","ManagerModule") + "AccumulationRegister"=@("RecordSetModule","ManagerModule") + "AccountingRegister"=@("RecordSetModule","ManagerModule") + "CalculationRegister"=@("RecordSetModule","ManagerModule") + "Sequence"=@("RecordSetModule","ManagerModule") + "Constant"=@("ValueManagerModule","ManagerModule") + "Enum"=@("ManagerModule"); "DocumentJournal"=@("ManagerModule") + "FilterCriterion"=@("ManagerModule") +} + +$guidPattern ='^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$' $identPattern = '^[A-Za-z\u0410-\u042F\u0401\u0430-\u044F\u0451_][A-Za-z0-9\u0410-\u042F\u0401\u0430-\u044F\u0451_]*$' # 7 fixed ClassIds for Configuration @@ -1234,6 +1255,48 @@ if ($defaultRoleNodes.Count -gt 0) { if ($script:stopped) { & $finalize; exit 1 } +# --- Check 16: модуль заимствованного объекта и пометка расширенного свойства --- +# Свойство появилось в формате 2.19 (8.3.26); ниже платформа его молча +# выбрасывает, поэтому там проверять нечего. С 2.19 состояние обязано соответствовать факту: +# есть файл модуля — есть пометка, и наоборот. Перекос платформа принимает (проверено на стенде), +# но выгрузка Конфигуратора так не выглядит — отсюда предупреждение, а не ошибка. +if ($versionRank -ge 219 -and $childObjNode) { + $stateIssues = @() + $stateChecked = 0 + foreach ($child in $childObjNode.ChildNodes) { + if ($child.NodeType -ne 'Element') { continue } + $typeName = $child.LocalName + if (-not $moduleKindsByType.ContainsKey($typeName)) { continue } + if (-not $childTypeDirMap.ContainsKey($typeName)) { continue } + $objName = $child.InnerText.Trim() + if (-not $objName) { continue } + $typeDir = Join-Path $configDir $childTypeDirMap[$typeName] + $objFile = Join-Path $typeDir "$objName.xml" + if (-not (Test-Path $objFile)) { continue } + $objText = [System.IO.File]::ReadAllText($objFile, [System.Text.Encoding]::UTF8) + if ($objText -notmatch 'Adopted') { continue } + + foreach ($kind in $moduleKindsByType[$typeName]) { + $stateChecked++ + $hasFile = Test-Path (Join-Path (Join-Path (Join-Path $typeDir $objName) "Ext") "$kind.bsl") + $hasFlag = $objText -match "$kind" + if ($hasFile -and -not $hasFlag) { + $stateIssues += "$typeName.$objName — есть $kind.bsl, но нет для $kind" + } elseif ($hasFlag -and -not $hasFile) { + $stateIssues += "$typeName.$objName — есть для $kind, но нет $kind.bsl" + } + } + } + + if ($stateChecked -gt 0) { + if ($stateIssues.Count -eq 0) { + Report-OK "16. Модули заимствованных объектов: пометки расширенных свойств согласованы ($stateChecked)" + } else { + foreach ($issue in $stateIssues) { Report-Warn "16. $issue" } + } + } +} + # --- Breadcrumb: controlled methods (&ИзменениеИКонтроль) drift is not checked here --- $extRootDir = Split-Path $resolvedPath -Parent $ctrlCount = 0 diff --git a/.claude/skills/cfe-validate/scripts/cfe-validate.py b/.claude/skills/cfe-validate/scripts/cfe-validate.py index bce5ee85..35f747c2 100644 --- a/.claude/skills/cfe-validate/scripts/cfe-validate.py +++ b/.claude/skills/cfe-validate/scripts/cfe-validate.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# cfe-validate v1.11 — Validate 1C configuration extension XML structure (CFE) +# cfe-validate v1.12 — Validate 1C configuration extension XML structure (CFE) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills """Validates extension Configuration.xml: root, InternalInfo, extension properties, ChildObjects, borrowed objects.""" import sys, os, argparse, re @@ -71,6 +71,27 @@ CHILD_OBJECT_TYPES = [ 'BusinessProcess', 'Task', 'IntegrationService', ] +# Модули заимствованных объектов: тип → виды модулей. Имя свойства в +# совпадает с базовым именем файла модуля. Копия таблицы есть в cfe-borrow (навыки автономны). +MODULE_KINDS_BY_TYPE = { + "CommonModule": ["Module"], "HTTPService": ["Module"], "WebService": ["Module"], + "Catalog": ["ObjectModule", "ManagerModule"], "Document": ["ObjectModule", "ManagerModule"], + "Report": ["ObjectModule", "ManagerModule"], "DataProcessor": ["ObjectModule", "ManagerModule"], + "ExchangePlan": ["ObjectModule", "ManagerModule"], + "ChartOfCharacteristicTypes": ["ObjectModule", "ManagerModule"], + "ChartOfAccounts": ["ObjectModule", "ManagerModule"], + "ChartOfCalculationTypes": ["ObjectModule", "ManagerModule"], + "BusinessProcess": ["ObjectModule", "ManagerModule"], "Task": ["ObjectModule", "ManagerModule"], + "InformationRegister": ["RecordSetModule", "ManagerModule"], + "AccumulationRegister": ["RecordSetModule", "ManagerModule"], + "AccountingRegister": ["RecordSetModule", "ManagerModule"], + "CalculationRegister": ["RecordSetModule", "ManagerModule"], + "Sequence": ["RecordSetModule", "ManagerModule"], + "Constant": ["ValueManagerModule", "ManagerModule"], + "Enum": ["ManagerModule"], "DocumentJournal": ["ManagerModule"], + "FilterCriterion": ["ManagerModule"], +} + # Type -> directory mapping CHILD_TYPE_DIR_MAP = { 'Language': 'Languages', 'Subsystem': 'Subsystems', 'StyleItem': 'StyleItems', 'Style': 'Styles', @@ -1201,6 +1222,48 @@ def main(): r.finalize(out_file) sys.exit(1) + # --- Check 16: модуль заимствованного объекта и пометка расширенного свойства --- + # Свойство появилось в формате 2.19 (8.3.26); ниже платформа его молча + # выбрасывает, поэтому там проверять нечего. С 2.19 состояние обязано соответствовать факту: + # есть файл модуля — есть пометка, и наоборот. Перекос платформа принимает (проверено на + # стенде), но выгрузка Конфигуратора так не выглядит — отсюда предупреждение, а не ошибка. + if version_rank >= 219 and child_obj_node is not None: + state_issues = [] + state_checked = 0 + for child in child_obj_node: + if not isinstance(child.tag, str): + continue + type_name = etree.QName(child.tag).localname + if type_name not in MODULE_KINDS_BY_TYPE or type_name not in CHILD_TYPE_DIR_MAP: + continue + obj_name_val = (child.text or '').strip() + if not obj_name_val: + continue + type_dir = os.path.join(config_dir, CHILD_TYPE_DIR_MAP[type_name]) + obj_file = os.path.join(type_dir, f'{obj_name_val}.xml') + if not os.path.isfile(obj_file): + continue + with open(obj_file, 'r', encoding='utf-8-sig') as f: + obj_text = f.read() + if 'Adopted' not in obj_text: + continue + + for kind in MODULE_KINDS_BY_TYPE[type_name]: + state_checked += 1 + has_file = os.path.isfile(os.path.join(type_dir, obj_name_val, 'Ext', f'{kind}.bsl')) + has_flag = f'{kind}' in obj_text + if has_file and not has_flag: + state_issues.append(f'{type_name}.{obj_name_val} — есть {kind}.bsl, но нет для {kind}') + elif has_flag and not has_file: + state_issues.append(f'{type_name}.{obj_name_val} — есть для {kind}, но нет {kind}.bsl') + + if state_checked > 0: + if not state_issues: + r.ok(f'16. Модули заимствованных объектов: пометки расширенных свойств согласованы ({state_checked})') + else: + for issue in state_issues: + r.warn(f'16. {issue}') + # --- Breadcrumb: controlled methods (&ИзменениеИКонтроль) drift is not checked here --- ctrl_count = 0 for dp, _dn, files in os.walk(config_dir): diff --git a/docs/1c-extension-spec.md b/docs/1c-extension-spec.md index a1ccfe3a..44ba6587 100644 --- a/docs/1c-extension-spec.md +++ b/docs/1c-extension-spec.md @@ -662,6 +662,31 @@ Form.xml заимствованной формы — **двухчастный ф |----------|----------| | `Notify` | Свойство изменено расширением, платформа выводит предупреждение | | `MultiState` | Свойство расширено (тип отличается от основной конфигурации) | +| `Extended` | Свойство расширено: у объекта появился модуль или изменена форма | + +#### Extended — модули и формы заимствованных объектов + +`Extended` стоит на самом заимствованном объекте (а не на реквизите) и означает, что расширение +принесло содержимое свойства. Имя свойства совпадает с **базовым именем файла модуля**: + +| Файл в расширении | `xr:Property` | +|-------------------|---------------| +| `Ext/Module.bsl` (общий модуль, HTTP- и web-сервис) | `Module` | +| `Ext/ObjectModule.bsl` | `ObjectModule` | +| `Ext/ManagerModule.bsl` | `ManagerModule` | +| `Ext/RecordSetModule.bsl` | `RecordSetModule` | +| `Ext/ValueManagerModule.bsl` | `ValueManagerModule` | +| `Commands/<Имя>/Ext/CommandModule.bsl` | `CommandModule` — на вложенном ``, не у владельца | +| заимствованная форма | `Form` — в метаданных формы | + +Порядок внутри `InternalInfo`: после всех `xr:GeneratedType`, сначала «объектный» модуль +(`ObjectModule` / `RecordSetModule` / `ValueManagerModule`), затем `ManagerModule`. + +**Версионность.** Элемент появился в версии формата **2.19 (8.3.26)**. На 2.18 и ниже платформа +молча выбрасывает его при загрузке. Начиная с 2.19 Конфигуратор проставляет пометку сам при +выгрузке — триггером служит наличие файла модуля, даже пустого; заимствованный объект без модуля +её не получает. Расхождение (файл без пометки или пометка без файла) платформа принимает без +ошибок, но выгрузка Конфигуратора так не выглядит. ### 6.2. ExtendedProperty — расширение типа diff --git a/tests/skills/cases/cfe-borrow/module-auto-and-none.json b/tests/skills/cases/cfe-borrow/module-auto-and-none.json new file mode 100644 index 00000000..d1d8caac --- /dev/null +++ b/tests/skills/cases/cfe-borrow/module-auto-and-none.json @@ -0,0 +1,43 @@ +{ + "name": "Общий модуль: файл создаётся сам, -Module None отменяет", + "setup": "empty-config-220", + "preRun": [ + { + "script": "meta-compile/scripts/meta-compile", + "input": { "type": "CommonModule", "name": "ОбщийМодуль1", "context": "server" }, + "args": { "-JsonPath": "{inputFile}", "-OutputDir": "{workDir}" } + }, + { + "script": "cfe-init/scripts/cfe-init", + "args": { "-Name": "Тест", "-OutputDir": "{workDir}/cfe", "-ConfigPath": "{workDir}" } + }, + { + "script": "cfe-borrow/scripts/cfe-borrow", + "args": { + "-ExtensionPath": "{workDir}/cfe", + "-ConfigPath": "{workDir}", + "-Object": "CommonModule.ОбщийМодуль1", + "-Module": "None" + } + }, + { + "script": "meta-compile/scripts/meta-compile", + "input": { "type": "CommonModule", "name": "ОбщийМодуль2", "context": "server" }, + "args": { "-JsonPath": "{inputFile}", "-OutputDir": "{workDir}" } + } + ], + "params": { "extensionPath": "cfe" }, + "object": "CommonModule.ОбщийМодуль2", + "expect": { + "fileContains": [ + { + "file": "cfe/CommonModules/ОбщийМодуль2.xml", + "text": ["Module", "Extended"] + }, + { + "file": "cfe/CommonModules/ОбщийМодуль1.xml", + "text": "" + } + ] + } +} diff --git a/tests/skills/cases/cfe-borrow/module-explicit-kinds.json b/tests/skills/cases/cfe-borrow/module-explicit-kinds.json new file mode 100644 index 00000000..6a4dd699 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/module-explicit-kinds.json @@ -0,0 +1,30 @@ +{ + "name": "Модули справочника по -Module: файлы и пометки расширенных свойств (2.20)", + "setup": "empty-config-220", + "preRun": [ + { + "script": "meta-compile/scripts/meta-compile", + "input": { "type": "Catalog", "name": "Товары" }, + "args": { "-JsonPath": "{inputFile}", "-OutputDir": "{workDir}" } + }, + { + "script": "cfe-init/scripts/cfe-init", + "args": { "-Name": "Тест", "-OutputDir": "{workDir}/cfe", "-ConfigPath": "{workDir}" } + } + ], + "params": { "extensionPath": "cfe" }, + "object": "Catalog.Товары", + "args_extra": ["-Module", "ObjectModule,ManagerModule"], + "expect": { + "fileContains": [ + { + "file": "cfe/Catalogs/Товары.xml", + "text": [ + "ObjectModule", + "ManagerModule", + "Extended" + ] + } + ] + } +} diff --git a/tests/skills/cases/cfe-borrow/module-flag-gate-218.json b/tests/skills/cases/cfe-borrow/module-flag-gate-218.json new file mode 100644 index 00000000..60a89e08 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/module-flag-gate-218.json @@ -0,0 +1,22 @@ +{ + "name": "Формат 2.18: модуль создаётся, пометки расширенного свойства нет", + "setup": "empty-config-218", + "preRun": [ + { + "script": "meta-compile/scripts/meta-compile", + "input": { "type": "CommonModule", "name": "ОбщийМодуль1", "context": "server" }, + "args": { "-JsonPath": "{inputFile}", "-OutputDir": "{workDir}" } + }, + { + "script": "cfe-init/scripts/cfe-init", + "args": { "-Name": "Тест", "-OutputDir": "{workDir}/cfe", "-ConfigPath": "{workDir}" } + } + ], + "params": { "extensionPath": "cfe" }, + "object": "CommonModule.ОбщийМодуль1", + "expect": { + "fileContains": [ + { "file": "cfe/CommonModules/ОбщийМодуль1.xml", "text": "" } + ] + } +} diff --git a/tests/skills/cases/cfe-borrow/reborrow-keeps-object-content.json b/tests/skills/cases/cfe-borrow/reborrow-keeps-object-content.json new file mode 100644 index 00000000..b077031f --- /dev/null +++ b/tests/skills/cases/cfe-borrow/reborrow-keeps-object-content.json @@ -0,0 +1,35 @@ +{ + "name": "Повторное заимствование с -Module сохраняет содержимое объекта", + "setup": "fixture:main-attr-kinds", + "preRun": [ + { + "script": "cfe-init/scripts/cfe-init", + "args": { "-Name": "Тест", "-OutputDir": "{workDir}/cfe", "-ConfigPath": "{workDir}" } + }, + { + "script": "cfe-borrow/scripts/cfe-borrow", + "args": { + "-ExtensionPath": "{workDir}/cfe", + "-ConfigPath": "{workDir}", + "-Object": "Document.Расход.Form.ФормаДокумента", + "-BorrowMainAttribute": "All" + } + } + ], + "params": { "extensionPath": "cfe" }, + "object": "Document.Расход", + "args_extra": ["-Module", "ObjectModule"], + "expect": { + "fileContains": [ + { + "file": "cfe/Documents/Расход.xml", + "text": [ + "
ФормаДокумента
", + "Товары", + "Комментарий" + ] + } + ] + } +} diff --git a/tests/skills/cases/cfe-borrow/snapshots/common-module/ext/CommonModules/ОбщийМодуль1/Ext/Module.bsl b/tests/skills/cases/cfe-borrow/snapshots/common-module/ext/CommonModules/ОбщийМодуль1/Ext/Module.bsl new file mode 100644 index 00000000..e69de29b diff --git a/tests/skills/cases/cfe-borrow/snapshots/container-types/Ext/HTTPServices/ОбменДанными/Ext/Module.bsl b/tests/skills/cases/cfe-borrow/snapshots/container-types/Ext/HTTPServices/ОбменДанными/Ext/Module.bsl new file mode 100644 index 00000000..e69de29b diff --git a/tests/skills/cases/cfe-borrow/snapshots/container-types/Ext/WebServices/СервисОбмена/Ext/Module.bsl b/tests/skills/cases/cfe-borrow/snapshots/container-types/Ext/WebServices/СервисОбмена/Ext/Module.bsl new file mode 100644 index 00000000..e69de29b diff --git a/tests/skills/cases/cfe-borrow/snapshots/format-221/Ext/Catalogs/Товары/Forms/ФормаЭлемента.xml b/tests/skills/cases/cfe-borrow/snapshots/format-221/Ext/Catalogs/Товары/Forms/ФормаЭлемента.xml index 069e9e40..1bcd1779 100644 --- a/tests/skills/cases/cfe-borrow/snapshots/format-221/Ext/Catalogs/Товары/Forms/ФормаЭлемента.xml +++ b/tests/skills/cases/cfe-borrow/snapshots/format-221/Ext/Catalogs/Товары/Forms/ФормаЭлемента.xml @@ -1,7 +1,12 @@
- + + + Form + Extended + + Adopted ФормаЭлемента diff --git a/tests/skills/cases/cfe-borrow/snapshots/module-auto-and-none/CommonModules/ОбщийМодуль1.xml b/tests/skills/cases/cfe-borrow/snapshots/module-auto-and-none/CommonModules/ОбщийМодуль1.xml new file mode 100644 index 00000000..6ea46dd3 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/module-auto-and-none/CommonModules/ОбщийМодуль1.xml @@ -0,0 +1,23 @@ + + + + + ОбщийМодуль1 + + + ru + Общий модуль1 + + + + false + false + true + false + false + true + false + DontUse + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/module-auto-and-none/CommonModules/ОбщийМодуль1/Ext/Module.bsl b/tests/skills/cases/cfe-borrow/snapshots/module-auto-and-none/CommonModules/ОбщийМодуль1/Ext/Module.bsl new file mode 100644 index 00000000..e69de29b diff --git a/tests/skills/cases/cfe-borrow/snapshots/module-auto-and-none/CommonModules/ОбщийМодуль2.xml b/tests/skills/cases/cfe-borrow/snapshots/module-auto-and-none/CommonModules/ОбщийМодуль2.xml new file mode 100644 index 00000000..09c46789 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/module-auto-and-none/CommonModules/ОбщийМодуль2.xml @@ -0,0 +1,23 @@ + + + + + ОбщийМодуль2 + + + ru + Общий модуль2 + + + + false + false + true + false + false + true + false + DontUse + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/module-auto-and-none/CommonModules/ОбщийМодуль2/Ext/Module.bsl b/tests/skills/cases/cfe-borrow/snapshots/module-auto-and-none/CommonModules/ОбщийМодуль2/Ext/Module.bsl new file mode 100644 index 00000000..e69de29b diff --git a/tests/skills/cases/cfe-borrow/snapshots/module-auto-and-none/Configuration.xml b/tests/skills/cases/cfe-borrow/snapshots/module-auto-and-none/Configuration.xml new file mode 100644 index 00000000..b67bfbec --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/module-auto-and-none/Configuration.xml @@ -0,0 +1,257 @@ + + + + + + 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_27 + 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 + + + TextToSpeech + false + + + + + + Normal + + + Language.Русский + + + + + + Managed + NotAutoFree + DontUse + DontUse + TaxiEnableVersion8_2 + DontUse + Version8_3_27 + + + + Русский + ОбщийМодуль1 + ОбщийМодуль2 + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/module-auto-and-none/Ext/ClientApplicationInterface.xml b/tests/skills/cases/cfe-borrow/snapshots/module-auto-and-none/Ext/ClientApplicationInterface.xml new file mode 100644 index 00000000..3c1161b2 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/module-auto-and-none/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/module-auto-and-none/Languages/Русский.xml b/tests/skills/cases/cfe-borrow/snapshots/module-auto-and-none/Languages/Русский.xml new file mode 100644 index 00000000..fe1c5336 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/module-auto-and-none/Languages/Русский.xml @@ -0,0 +1,16 @@ + + + + + Русский + + + ru + Русский + + + + ru + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/module-auto-and-none/cfe/CommonModules/ОбщийМодуль1.xml b/tests/skills/cases/cfe-borrow/snapshots/module-auto-and-none/cfe/CommonModules/ОбщийМодуль1.xml new file mode 100644 index 00000000..c0bf38f4 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/module-auto-and-none/cfe/CommonModules/ОбщийМодуль1.xml @@ -0,0 +1,18 @@ + + + + + + Adopted + ОбщийМодуль1 + + UUID-002 + false + false + true + false + false + true + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/module-auto-and-none/cfe/CommonModules/ОбщийМодуль2.xml b/tests/skills/cases/cfe-borrow/snapshots/module-auto-and-none/cfe/CommonModules/ОбщийМодуль2.xml new file mode 100644 index 00000000..30a08498 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/module-auto-and-none/cfe/CommonModules/ОбщийМодуль2.xml @@ -0,0 +1,23 @@ + + + + + + Module + Extended + + + + Adopted + ОбщийМодуль2 + + UUID-002 + false + false + true + false + false + true + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/module-auto-and-none/cfe/CommonModules/ОбщийМодуль2/Ext/Module.bsl b/tests/skills/cases/cfe-borrow/snapshots/module-auto-and-none/cfe/CommonModules/ОбщийМодуль2/Ext/Module.bsl new file mode 100644 index 00000000..e69de29b diff --git a/tests/skills/cases/cfe-borrow/snapshots/module-auto-and-none/cfe/Configuration.xml b/tests/skills/cases/cfe-borrow/snapshots/module-auto-and-none/cfe/Configuration.xml new file mode 100644 index 00000000..ce943038 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/module-auto-and-none/cfe/Configuration.xml @@ -0,0 +1,73 @@ + + + + + + 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_27 + ManagedApplication + + PlatformApplication + + Russian + + Role.Тест_ОсновнаяРоль + + + + Language.Русский + + + + + + TaxiEnableVersion8_2 + + + Русский + Тест_ОсновнаяРоль + ОбщийМодуль1 + ОбщийМодуль2 + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/module-auto-and-none/cfe/Languages/Русский.xml b/tests/skills/cases/cfe-borrow/snapshots/module-auto-and-none/cfe/Languages/Русский.xml new file mode 100644 index 00000000..87112c20 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/module-auto-and-none/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/module-auto-and-none/cfe/Roles/Тест_ОсновнаяРоль.xml b/tests/skills/cases/cfe-borrow/snapshots/module-auto-and-none/cfe/Roles/Тест_ОсновнаяРоль.xml new file mode 100644 index 00000000..c865bcc2 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/module-auto-and-none/cfe/Roles/Тест_ОсновнаяРоль.xml @@ -0,0 +1,10 @@ + + + + + Тест_ОсновнаяРоль + + + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/module-explicit-kinds/Catalogs/Товары.xml b/tests/skills/cases/cfe-borrow/snapshots/module-explicit-kinds/Catalogs/Товары.xml new file mode 100644 index 00000000..5a218095 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/module-explicit-kinds/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/module-explicit-kinds/Catalogs/Товары/Ext/ObjectModule.bsl b/tests/skills/cases/cfe-borrow/snapshots/module-explicit-kinds/Catalogs/Товары/Ext/ObjectModule.bsl new file mode 100644 index 00000000..e69de29b diff --git a/tests/skills/cases/cfe-borrow/snapshots/module-explicit-kinds/Configuration.xml b/tests/skills/cases/cfe-borrow/snapshots/module-explicit-kinds/Configuration.xml new file mode 100644 index 00000000..19fbb442 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/module-explicit-kinds/Configuration.xml @@ -0,0 +1,256 @@ + + + + + + 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_27 + 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 + + + TextToSpeech + false + + + + + + Normal + + + Language.Русский + + + + + + Managed + NotAutoFree + DontUse + DontUse + TaxiEnableVersion8_2 + DontUse + Version8_3_27 + + + + Русский + Товары + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/module-explicit-kinds/Ext/ClientApplicationInterface.xml b/tests/skills/cases/cfe-borrow/snapshots/module-explicit-kinds/Ext/ClientApplicationInterface.xml new file mode 100644 index 00000000..3c1161b2 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/module-explicit-kinds/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/module-explicit-kinds/Languages/Русский.xml b/tests/skills/cases/cfe-borrow/snapshots/module-explicit-kinds/Languages/Русский.xml new file mode 100644 index 00000000..fe1c5336 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/module-explicit-kinds/Languages/Русский.xml @@ -0,0 +1,16 @@ + + + + + Русский + + + ru + Русский + + + + ru + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/module-explicit-kinds/cfe/Catalogs/Товары.xml b/tests/skills/cases/cfe-borrow/snapshots/module-explicit-kinds/cfe/Catalogs/Товары.xml new file mode 100644 index 00000000..38af0312 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/module-explicit-kinds/cfe/Catalogs/Товары.xml @@ -0,0 +1,42 @@ + + + + + + UUID-002 + UUID-003 + + + UUID-004 + UUID-005 + + + UUID-006 + UUID-007 + + + UUID-008 + UUID-009 + + + UUID-010 + UUID-011 + + + ObjectModule + Extended + + + ManagerModule + Extended + + + + Adopted + Товары + + UUID-012 + + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/module-explicit-kinds/cfe/Catalogs/Товары/Ext/ManagerModule.bsl b/tests/skills/cases/cfe-borrow/snapshots/module-explicit-kinds/cfe/Catalogs/Товары/Ext/ManagerModule.bsl new file mode 100644 index 00000000..e69de29b diff --git a/tests/skills/cases/cfe-borrow/snapshots/module-explicit-kinds/cfe/Catalogs/Товары/Ext/ObjectModule.bsl b/tests/skills/cases/cfe-borrow/snapshots/module-explicit-kinds/cfe/Catalogs/Товары/Ext/ObjectModule.bsl new file mode 100644 index 00000000..e69de29b diff --git a/tests/skills/cases/cfe-borrow/snapshots/module-explicit-kinds/cfe/Configuration.xml b/tests/skills/cases/cfe-borrow/snapshots/module-explicit-kinds/cfe/Configuration.xml new file mode 100644 index 00000000..38b8eacb --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/module-explicit-kinds/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_27 + ManagedApplication + + PlatformApplication + + Russian + + Role.Тест_ОсновнаяРоль + + + + Language.Русский + + + + + + TaxiEnableVersion8_2 + + + Русский + Тест_ОсновнаяРоль + Товары + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/module-explicit-kinds/cfe/Languages/Русский.xml b/tests/skills/cases/cfe-borrow/snapshots/module-explicit-kinds/cfe/Languages/Русский.xml new file mode 100644 index 00000000..87112c20 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/module-explicit-kinds/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/module-explicit-kinds/cfe/Roles/Тест_ОсновнаяРоль.xml b/tests/skills/cases/cfe-borrow/snapshots/module-explicit-kinds/cfe/Roles/Тест_ОсновнаяРоль.xml new file mode 100644 index 00000000..c865bcc2 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/module-explicit-kinds/cfe/Roles/Тест_ОсновнаяРоль.xml @@ -0,0 +1,10 @@ + + + + + Тест_ОсновнаяРоль + + + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/module-flag-gate-218/CommonModules/ОбщийМодуль1.xml b/tests/skills/cases/cfe-borrow/snapshots/module-flag-gate-218/CommonModules/ОбщийМодуль1.xml new file mode 100644 index 00000000..08d3c3ca --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/module-flag-gate-218/CommonModules/ОбщийМодуль1.xml @@ -0,0 +1,23 @@ + + + + + ОбщийМодуль1 + + + ru + Общий модуль1 + + + + false + false + true + false + false + true + false + DontUse + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/module-flag-gate-218/CommonModules/ОбщийМодуль1/Ext/Module.bsl b/tests/skills/cases/cfe-borrow/snapshots/module-flag-gate-218/CommonModules/ОбщийМодуль1/Ext/Module.bsl new file mode 100644 index 00000000..e69de29b diff --git a/tests/skills/cases/cfe-borrow/snapshots/module-flag-gate-218/Configuration.xml b/tests/skills/cases/cfe-borrow/snapshots/module-flag-gate-218/Configuration.xml new file mode 100644 index 00000000..14eb5588 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/module-flag-gate-218/Configuration.xml @@ -0,0 +1,256 @@ + + + + + + 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 + + + TextToSpeech + false + + + + + + Normal + + + Language.Русский + + + + + + Managed + NotAutoFree + DontUse + DontUse + TaxiEnableVersion8_2 + DontUse + Version8_3_24 + + + + Русский + ОбщийМодуль1 + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/module-flag-gate-218/Ext/ClientApplicationInterface.xml b/tests/skills/cases/cfe-borrow/snapshots/module-flag-gate-218/Ext/ClientApplicationInterface.xml new file mode 100644 index 00000000..3c1161b2 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/module-flag-gate-218/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/module-flag-gate-218/Languages/Русский.xml b/tests/skills/cases/cfe-borrow/snapshots/module-flag-gate-218/Languages/Русский.xml new file mode 100644 index 00000000..28d781ed --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/module-flag-gate-218/Languages/Русский.xml @@ -0,0 +1,16 @@ + + + + + Русский + + + ru + Русский + + + + ru + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/module-flag-gate-218/cfe/CommonModules/ОбщийМодуль1.xml b/tests/skills/cases/cfe-borrow/snapshots/module-flag-gate-218/cfe/CommonModules/ОбщийМодуль1.xml new file mode 100644 index 00000000..4984db3b --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/module-flag-gate-218/cfe/CommonModules/ОбщийМодуль1.xml @@ -0,0 +1,18 @@ + + + + + + Adopted + ОбщийМодуль1 + + UUID-002 + false + false + true + false + false + true + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/module-flag-gate-218/cfe/CommonModules/ОбщийМодуль1/Ext/Module.bsl b/tests/skills/cases/cfe-borrow/snapshots/module-flag-gate-218/cfe/CommonModules/ОбщийМодуль1/Ext/Module.bsl new file mode 100644 index 00000000..e69de29b diff --git a/tests/skills/cases/cfe-borrow/snapshots/module-flag-gate-218/cfe/Configuration.xml b/tests/skills/cases/cfe-borrow/snapshots/module-flag-gate-218/cfe/Configuration.xml new file mode 100644 index 00000000..12d4dfab --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/module-flag-gate-218/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 + + + Русский + Тест_ОсновнаяРоль + ОбщийМодуль1 + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/module-flag-gate-218/cfe/Languages/Русский.xml b/tests/skills/cases/cfe-borrow/snapshots/module-flag-gate-218/cfe/Languages/Русский.xml new file mode 100644 index 00000000..adad5938 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/module-flag-gate-218/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/module-flag-gate-218/cfe/Roles/Тест_ОсновнаяРоль.xml b/tests/skills/cases/cfe-borrow/snapshots/module-flag-gate-218/cfe/Roles/Тест_ОсновнаяРоль.xml new file mode 100644 index 00000000..ce0dc4f6 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/module-flag-gate-218/cfe/Roles/Тест_ОсновнаяРоль.xml @@ -0,0 +1,10 @@ + + + + + Тест_ОсновнаяРоль + + + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/Configuration.xml b/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/Configuration.xml new file mode 100644 index 00000000..3b942f66 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/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/reborrow-keeps-object-content/Documents/Расход.xml b/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/Documents/Расход.xml new file mode 100644 index 00000000..06def637 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/Documents/Расход.xml @@ -0,0 +1,268 @@ + + + + + + UUID-002 + UUID-003 + + + UUID-004 + UUID-005 + + + UUID-006 + UUID-007 + + + UUID-008 + UUID-009 + + + UUID-010 + UUID-011 + + + + Расход + + + ru + Расход + + + + true + + String + 11 + Variable + Year + true + true + + + + Document.Расход.StandardAttribute.Number + + Use + Begin + DontUse + Directly + Document.Расход.Form.ФормаСписка + + + + + + Allow + Deny + AutoDelete + WriteSelected + AutoFill + + true + true + false + + Managed + Use + + + + + + Auto + DontUse + false + false + + + + + Комментарий + + + ru + Комментарий + + + + + xs:string + + 100 + Variable + + + false + + + + false + + false + false + + + false + + DontCheck + Items + + + Auto + Auto + + + Auto + DontIndex + Use + Use + + + + + Склад + + + ru + Склад + + + + + xs:string + + 50 + Variable + + + false + + + + false + + false + false + + + false + + DontCheck + Items + + + Auto + Auto + + + Auto + DontIndex + Use + Use + + + ФормаСписка +
ФормаДокумента
+
ФормаСпискаЗапрос
+ + + + UUID-015 + UUID-016 + + + UUID-017 + UUID-018 + + + + Товары + + + ru + Товары + + + + + DontCheck + + + + DontCheck + false + false + Auto + + + false + + + Auto + Auto + + false + Use + false + + + + Use + + + + + + + + + + + Количество + + + ru + Количество + + + + + xs:decimal + + 10 + 3 + Any + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + DontIndex + Use + Use + + + + +
+
+
\ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/Documents/Расход/Ext/ObjectModule.bsl b/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/Documents/Расход/Ext/ObjectModule.bsl new file mode 100644 index 00000000..e69de29b diff --git a/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/Documents/Расход/Forms/ФормаДокумента.xml b/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/Documents/Расход/Forms/ФормаДокумента.xml new file mode 100644 index 00000000..21cbf33a --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/Documents/Расход/Forms/ФормаДокумента.xml @@ -0,0 +1,21 @@ + + +
+ + ФормаДокумента + + + ru + ФормаДокумента + + + + Managed + false + + PlatformApplication + MobilePlatformApplication + + +
+
\ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/Documents/Расход/Forms/ФормаДокумента/Ext/Form.xml b/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/Documents/Расход/Forms/ФормаДокумента/Ext/Form.xml new file mode 100644 index 00000000..22a588ad --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/Documents/Расход/Forms/ФормаДокумента/Ext/Form.xml @@ -0,0 +1,30 @@ + +
+ false + + + + Объект.Комментарий + + + + Объект.Товары + + + Объект.Товары.Количество + + + + +
+
+ + + + cfg:DocumentObject.Расход + + true + true + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/Documents/Расход/Forms/ФормаДокумента/Ext/Form/Module.bsl b/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/Documents/Расход/Forms/ФормаДокумента/Ext/Form/Module.bsl new file mode 100644 index 00000000..8ead4cec --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/Documents/Расход/Forms/ФормаДокумента/Ext/Form/Module.bsl @@ -0,0 +1,19 @@ +#Область ОбработчикиСобытийФормы + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовФормы + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +#КонецОбласти + +#Область ОбработчикиОповещений + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#КонецОбласти \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/Documents/Расход/Forms/ФормаСписка.xml b/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/Documents/Расход/Forms/ФормаСписка.xml new file mode 100644 index 00000000..79ff6a75 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/Documents/Расход/Forms/ФормаСписка.xml @@ -0,0 +1,21 @@ + + +
+ + ФормаСписка + + + ru + ФормаСписка + + + + Managed + false + + PlatformApplication + MobilePlatformApplication + + +
+
\ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/Documents/Расход/Forms/ФормаСписка/Ext/Form.xml b/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/Documents/Расход/Forms/ФормаСписка/Ext/Form.xml new file mode 100644 index 00000000..c9429a61 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/Documents/Расход/Forms/ФормаСписка/Ext/Form.xml @@ -0,0 +1,39 @@ + +
+ false + + + + Список + + + Список.Склад + + + + Список.Комментарий + + + + +
+
+ + + + cfg:DynamicList + + true + + Список.Ссылка + + + false + Document.Расход + true + true + + + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/Documents/Расход/Forms/ФормаСписка/Ext/Form/Module.bsl b/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/Documents/Расход/Forms/ФормаСписка/Ext/Form/Module.bsl new file mode 100644 index 00000000..8ead4cec --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/Documents/Расход/Forms/ФормаСписка/Ext/Form/Module.bsl @@ -0,0 +1,19 @@ +#Область ОбработчикиСобытийФормы + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовФормы + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +#КонецОбласти + +#Область ОбработчикиОповещений + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#КонецОбласти \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/Documents/Расход/Forms/ФормаСпискаЗапрос.xml b/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/Documents/Расход/Forms/ФормаСпискаЗапрос.xml new file mode 100644 index 00000000..dbc101f7 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/Documents/Расход/Forms/ФормаСпискаЗапрос.xml @@ -0,0 +1,21 @@ + + +
+ + ФормаСпискаЗапрос + + + ru + ФормаСпискаЗапрос + + + + Managed + false + + PlatformApplication + MobilePlatformApplication + + +
+
\ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/Documents/Расход/Forms/ФормаСпискаЗапрос/Ext/Form.xml b/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/Documents/Расход/Forms/ФормаСпискаЗапрос/Ext/Form.xml new file mode 100644 index 00000000..67da1244 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/Documents/Расход/Forms/ФормаСпискаЗапрос/Ext/Form.xml @@ -0,0 +1,36 @@ + +
+ false + + + + Список + + + Список.Комментарий + + + + +
+
+ + + + cfg:DynamicList + + true + + Список.Ссылка + + + true + Document.Расход + true + true + ВЫБРАТЬ ДокументРасход.Ссылка, ДокументРасход.Комментарий, ДокументРасход.Склад ИЗ Документ.Расход КАК ДокументРасход + ВЫБРАТЬ ДокументРасход.Ссылка, ДокументРасход.Комментарий, ДокументРасход.Склад ИЗ Документ.Расход КАК ДокументРасход + + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/Documents/Расход/Forms/ФормаСпискаЗапрос/Ext/Form/Module.bsl b/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/Documents/Расход/Forms/ФормаСпискаЗапрос/Ext/Form/Module.bsl new file mode 100644 index 00000000..8ead4cec --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/Documents/Расход/Forms/ФормаСпискаЗапрос/Ext/Form/Module.bsl @@ -0,0 +1,19 @@ +#Область ОбработчикиСобытийФормы + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовФормы + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +#КонецОбласти + +#Область ОбработчикиОповещений + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#КонецОбласти \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/Ext/ClientApplicationInterface.xml b/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/Ext/ClientApplicationInterface.xml new file mode 100644 index 00000000..3c1161b2 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/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/reborrow-keeps-object-content/InformationRegisters/Настройка.xml b/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/InformationRegisters/Настройка.xml new file mode 100644 index 00000000..cf7758eb --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/InformationRegisters/Настройка.xml @@ -0,0 +1,266 @@ + + + + + + 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 + + + + Настройка + + + ru + Настройка + + + + true + InDialog + + + + + + + + DontCheck + false + false + Auto + + + false + + + Auto + Auto + + false + Use + false + + + + Use + + + + + + + + DontCheck + false + false + Auto + + + false + + + Auto + Auto + + false + Use + false + + + + Use + + + + + + + + DontCheck + false + false + Auto + + + false + + + Auto + Auto + + false + Use + false + + + + Use + + + + + + + + DontCheck + false + false + Auto + + + false + + + Auto + Auto + + false + Use + false + + + + Use + + + + + + + Nonperiodical + Independent + false + false + Managed + Use + false + false + + + + + + DontUse + false + false + + + + + Лимит + + + ru + Лимит + + + + + xs:decimal + + 15 + 2 + Any + + + false + + + + false + + false + false + + + false + 0 + DontCheck + Items + + + Auto + Auto + + + Auto + DontIndex + Use + Use + + + + + Организация + + + ru + Организация + + + + + xs:string + + 50 + Variable + + + false + + + + false + + false + false + + + true + + DontCheck + Items + + + Auto + Auto + + + Auto + true + false + false + DontIndex + Use + Use + + +
ФормаЗаписи
+
+
+
\ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/InformationRegisters/Настройка/Ext/RecordSetModule.bsl b/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/InformationRegisters/Настройка/Ext/RecordSetModule.bsl new file mode 100644 index 00000000..e69de29b diff --git a/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/InformationRegisters/Настройка/Forms/ФормаЗаписи.xml b/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/InformationRegisters/Настройка/Forms/ФормаЗаписи.xml new file mode 100644 index 00000000..94bc565e --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/InformationRegisters/Настройка/Forms/ФормаЗаписи.xml @@ -0,0 +1,21 @@ + + +
+ + ФормаЗаписи + + + ru + ФормаЗаписи + + + + Managed + false + + PlatformApplication + MobilePlatformApplication + + +
+
\ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/InformationRegisters/Настройка/Forms/ФормаЗаписи/Ext/Form.xml b/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/InformationRegisters/Настройка/Forms/ФормаЗаписи/Ext/Form.xml new file mode 100644 index 00000000..bf9be6b3 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/InformationRegisters/Настройка/Forms/ФормаЗаписи/Ext/Form.xml @@ -0,0 +1,24 @@ + +
+ false + + + + Запись.Организация + + + + Запись.Лимит + + + + + + + cfg:InformationRegisterRecordManager.Настройка + + true + true + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/InformationRegisters/Настройка/Forms/ФормаЗаписи/Ext/Form/Module.bsl b/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/InformationRegisters/Настройка/Forms/ФормаЗаписи/Ext/Form/Module.bsl new file mode 100644 index 00000000..8ead4cec --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/InformationRegisters/Настройка/Forms/ФормаЗаписи/Ext/Form/Module.bsl @@ -0,0 +1,19 @@ +#Область ОбработчикиСобытийФормы + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовФормы + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +#КонецОбласти + +#Область ОбработчикиОповещений + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#КонецОбласти \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/Languages/Русский.xml b/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/Languages/Русский.xml new file mode 100644 index 00000000..37c60d78 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/Languages/Русский.xml @@ -0,0 +1,16 @@ + + + + + Русский + + + ru + Русский + + + + ru + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/cfe/Configuration.xml b/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/cfe/Configuration.xml new file mode 100644 index 00000000..250ee8d0 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/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/reborrow-keeps-object-content/cfe/Documents/Расход.xml b/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/cfe/Documents/Расход.xml new file mode 100644 index 00000000..d2aa5a30 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/cfe/Documents/Расход.xml @@ -0,0 +1,90 @@ + + + + + + UUID-002 + UUID-003 + + + UUID-004 + UUID-005 + + + UUID-006 + UUID-007 + + + UUID-008 + UUID-009 + + + UUID-010 + UUID-011 + + + + Adopted + Расход + + UUID-012 + String + 11 + Variable + + +
ФормаДокумента
+ + + + + Adopted + Комментарий + + UUID-014 + xs:string100Variable + + + + + + Adopted + Склад + + UUID-016 + xs:string50Variable + + + + + + UUID-018 + UUID-019 + + + UUID-020 + UUID-021 + + + + Adopted + Товары + + UUID-022 + + + + + + Adopted + Количество + + UUID-024 + xs:decimal103Any + + + + +
+
+
\ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/cfe/Documents/Расход/Ext/ObjectModule.bsl b/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/cfe/Documents/Расход/Ext/ObjectModule.bsl new file mode 100644 index 00000000..e69de29b diff --git a/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/cfe/Documents/Расход/Forms/ФормаДокумента.xml b/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/cfe/Documents/Расход/Forms/ФормаДокумента.xml new file mode 100644 index 00000000..1c49cbb8 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/cfe/Documents/Расход/Forms/ФормаДокумента.xml @@ -0,0 +1,13 @@ + + +
+ + + Adopted + ФормаДокумента + + UUID-002 + Managed + + +
\ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/cfe/Documents/Расход/Forms/ФормаДокумента/Ext/Form.xml b/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/cfe/Documents/Расход/Forms/ФормаДокумента/Ext/Form.xml new file mode 100644 index 00000000..42140680 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/cfe/Documents/Расход/Forms/ФормаДокумента/Ext/Form.xml @@ -0,0 +1,59 @@ + +
+ false + + + + Объект.Комментарий + + + + Объект.Товары + + + Объект.Товары.Количество + + + + +
+
+ + + + cfg:DocumentObject.Расход + + true + true + + + + false + + + + Объект.Комментарий + + + + Объект.Товары + + + Объект.Товары.Количество + + + + +
+
+ + + + cfg:DocumentObject.Расход + + true + true + + +
+ \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/cfe/Documents/Расход/Forms/ФормаДокумента/Ext/Form/Module.bsl b/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/cfe/Documents/Расход/Forms/ФормаДокумента/Ext/Form/Module.bsl new file mode 100644 index 00000000..e69de29b diff --git a/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/cfe/Languages/Русский.xml b/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/cfe/Languages/Русский.xml new file mode 100644 index 00000000..c21624f5 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/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/reborrow-keeps-object-content/cfe/Roles/Тест_ОсновнаяРоль.xml b/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/cfe/Roles/Тест_ОсновнаяРоль.xml new file mode 100644 index 00000000..ec9dfbaf --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/reborrow-keeps-object-content/cfe/Roles/Тест_ОсновнаяРоль.xml @@ -0,0 +1,10 @@ + + + + + Тест_ОсновнаяРоль + + + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-diff/snapshots/with-common-module/ext/CommonModules/ОбщийМодуль1/Ext/Module.bsl b/tests/skills/cases/cfe-diff/snapshots/with-common-module/ext/CommonModules/ОбщийМодуль1/Ext/Module.bsl new file mode 100644 index 00000000..e69de29b diff --git a/tests/skills/cases/cfe-patch-method/module-created-flag.json b/tests/skills/cases/cfe-patch-method/module-created-flag.json new file mode 100644 index 00000000..a87ee670 --- /dev/null +++ b/tests/skills/cases/cfe-patch-method/module-created-flag.json @@ -0,0 +1,45 @@ +{ + "name": "Модуль создан перехватчиком — свойство помечено расширенным (2.20)", + "setup": "empty-config-220", + "preRun": [ + { + "script": "meta-compile/scripts/meta-compile", + "input": { "type": "CommonModule", "name": "ОбщийМодуль3", "properties": { "Server": true } }, + "args": { "-JsonPath": "{inputFile}", "-OutputDir": "{workDir}" } + }, + { + "writeFile": { + "path": "CommonModules/ОбщийМодуль3/Ext/Module.bsl", + "content": "Процедура ОбновитьДанные(Отбор) Экспорт\n\tВозврат;\nКонецПроцедуры\n" + } + }, + { + "script": "cfe-init/scripts/cfe-init", + "args": { "-Name": "Тест", "-OutputDir": "{workDir}/cfe", "-ConfigPath": "{workDir}" } + }, + { + "script": "cfe-borrow/scripts/cfe-borrow", + "args": { + "-ExtensionPath": "{workDir}/cfe", + "-ConfigPath": "{workDir}", + "-Object": "CommonModule.ОбщийМодуль3", + "-Module": "None" + } + } + ], + "params": { + "extensionPath": "cfe", + "modulePath": "CommonModule.ОбщийМодуль3", + "methodName": "ОбновитьДанные", + "interceptorType": "After" + }, + "expect": { + "stdoutContains": "&После(\"ОбновитьДанные\")", + "fileContains": [ + { + "file": "cfe/CommonModules/ОбщийМодуль3.xml", + "text": ["Module", "Extended"] + } + ] + } +} diff --git a/tests/skills/cases/cfe-patch-method/snapshots/module-created-flag/CommonModules/ОбщийМодуль3.xml b/tests/skills/cases/cfe-patch-method/snapshots/module-created-flag/CommonModules/ОбщийМодуль3.xml new file mode 100644 index 00000000..08144184 --- /dev/null +++ b/tests/skills/cases/cfe-patch-method/snapshots/module-created-flag/CommonModules/ОбщийМодуль3.xml @@ -0,0 +1,23 @@ + + + + + ОбщийМодуль3 + + + ru + Общий модуль3 + + + + false + false + false + false + false + false + false + DontUse + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-patch-method/snapshots/module-created-flag/CommonModules/ОбщийМодуль3/Ext/Module.bsl b/tests/skills/cases/cfe-patch-method/snapshots/module-created-flag/CommonModules/ОбщийМодуль3/Ext/Module.bsl new file mode 100644 index 00000000..423f1ab6 --- /dev/null +++ b/tests/skills/cases/cfe-patch-method/snapshots/module-created-flag/CommonModules/ОбщийМодуль3/Ext/Module.bsl @@ -0,0 +1,3 @@ +Процедура ОбновитьДанные(Отбор) Экспорт + Возврат; +КонецПроцедуры diff --git a/tests/skills/cases/cfe-patch-method/snapshots/module-created-flag/Configuration.xml b/tests/skills/cases/cfe-patch-method/snapshots/module-created-flag/Configuration.xml new file mode 100644 index 00000000..522e66cd --- /dev/null +++ b/tests/skills/cases/cfe-patch-method/snapshots/module-created-flag/Configuration.xml @@ -0,0 +1,256 @@ + + + + + + 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_27 + 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 + + + TextToSpeech + false + + + + + + Normal + + + Language.Русский + + + + + + Managed + NotAutoFree + DontUse + DontUse + TaxiEnableVersion8_2 + DontUse + Version8_3_27 + + + + Русский + ОбщийМодуль3 + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-patch-method/snapshots/module-created-flag/Ext/ClientApplicationInterface.xml b/tests/skills/cases/cfe-patch-method/snapshots/module-created-flag/Ext/ClientApplicationInterface.xml new file mode 100644 index 00000000..3c1161b2 --- /dev/null +++ b/tests/skills/cases/cfe-patch-method/snapshots/module-created-flag/Ext/ClientApplicationInterface.xml @@ -0,0 +1,18 @@ + + + + + UUID-002 + + + + + UUID-004 + + + + + + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-patch-method/snapshots/module-created-flag/Languages/Русский.xml b/tests/skills/cases/cfe-patch-method/snapshots/module-created-flag/Languages/Русский.xml new file mode 100644 index 00000000..fe1c5336 --- /dev/null +++ b/tests/skills/cases/cfe-patch-method/snapshots/module-created-flag/Languages/Русский.xml @@ -0,0 +1,16 @@ + + + + + Русский + + + ru + Русский + + + + ru + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-patch-method/snapshots/module-created-flag/cfe/CommonModules/ОбщийМодуль3.xml b/tests/skills/cases/cfe-patch-method/snapshots/module-created-flag/cfe/CommonModules/ОбщийМодуль3.xml new file mode 100644 index 00000000..79d041aa --- /dev/null +++ b/tests/skills/cases/cfe-patch-method/snapshots/module-created-flag/cfe/CommonModules/ОбщийМодуль3.xml @@ -0,0 +1,23 @@ + + + + + + Module + Extended + + + + Adopted + ОбщийМодуль3 + + UUID-002 + false + false + false + false + false + false + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-patch-method/snapshots/module-created-flag/cfe/CommonModules/ОбщийМодуль3/Ext/Module.bsl b/tests/skills/cases/cfe-patch-method/snapshots/module-created-flag/cfe/CommonModules/ОбщийМодуль3/Ext/Module.bsl new file mode 100644 index 00000000..f0f7d2dd --- /dev/null +++ b/tests/skills/cases/cfe-patch-method/snapshots/module-created-flag/cfe/CommonModules/ОбщийМодуль3/Ext/Module.bsl @@ -0,0 +1,4 @@ +&После("ОбновитьДанные") +Процедура Тест_ОбновитьДанные(Отбор) + // TODO: код после вызова оригинального метода +КонецПроцедуры diff --git a/tests/skills/cases/cfe-patch-method/snapshots/module-created-flag/cfe/Configuration.xml b/tests/skills/cases/cfe-patch-method/snapshots/module-created-flag/cfe/Configuration.xml new file mode 100644 index 00000000..93079bd5 --- /dev/null +++ b/tests/skills/cases/cfe-patch-method/snapshots/module-created-flag/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_27 + ManagedApplication + + PlatformApplication + + Russian + + Role.Тест_ОсновнаяРоль + + + + Language.Русский + + + + + + TaxiEnableVersion8_2 + + + Русский + Тест_ОсновнаяРоль + ОбщийМодуль3 + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-patch-method/snapshots/module-created-flag/cfe/Languages/Русский.xml b/tests/skills/cases/cfe-patch-method/snapshots/module-created-flag/cfe/Languages/Русский.xml new file mode 100644 index 00000000..87112c20 --- /dev/null +++ b/tests/skills/cases/cfe-patch-method/snapshots/module-created-flag/cfe/Languages/Русский.xml @@ -0,0 +1,13 @@ + + + + + + Adopted + Русский + + UUID-002 + ru + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-patch-method/snapshots/module-created-flag/cfe/Roles/Тест_ОсновнаяРоль.xml b/tests/skills/cases/cfe-patch-method/snapshots/module-created-flag/cfe/Roles/Тест_ОсновнаяРоль.xml new file mode 100644 index 00000000..c865bcc2 --- /dev/null +++ b/tests/skills/cases/cfe-patch-method/snapshots/module-created-flag/cfe/Roles/Тест_ОсновнаяРоль.xml @@ -0,0 +1,10 @@ + + + + + Тест_ОсновнаяРоль + + + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-validate/module-state-file-without-flag.json b/tests/skills/cases/cfe-validate/module-state-file-without-flag.json new file mode 100644 index 00000000..7d832ea8 --- /dev/null +++ b/tests/skills/cases/cfe-validate/module-state-file-without-flag.json @@ -0,0 +1,32 @@ +{ + "name": "Предупреждение: модуль есть, пометки расширенного свойства нет", + "setup": "empty-config-220", + "preRun": [ + { + "script": "meta-compile/scripts/meta-compile", + "input": { "type": "CommonModule", "name": "ОбщийМодуль1", "properties": { "Server": true } }, + "args": { "-JsonPath": "{inputFile}", "-OutputDir": "{workDir}" } + }, + { + "script": "cfe-init/scripts/cfe-init", + "args": { "-Name": "Тест", "-OutputDir": "{workDir}/cfe", "-ConfigPath": "{workDir}" } + }, + { + "script": "cfe-borrow/scripts/cfe-borrow", + "args": { + "-ExtensionPath": "{workDir}/cfe", + "-ConfigPath": "{workDir}", + "-Object": "CommonModule.ОбщийМодуль1", + "-Module": "None" + } + }, + { + "writeFile": { + "path": "cfe/CommonModules/ОбщийМодуль1/Ext/Module.bsl", + "content": "// перехватчик добавлен вручную\n" + } + } + ], + "params": { "extensionPath": "cfe" }, + "expect": { "stdoutContains": "есть Module.bsl, но нет для Module" } +} diff --git a/tests/skills/cases/cfe-validate/module-state-flag-without-file.json b/tests/skills/cases/cfe-validate/module-state-flag-without-file.json new file mode 100644 index 00000000..936e5fc4 --- /dev/null +++ b/tests/skills/cases/cfe-validate/module-state-flag-without-file.json @@ -0,0 +1,26 @@ +{ + "name": "Предупреждение: пометка расширенного свойства есть, файла модуля нет", + "setup": "empty-config-220", + "preRun": [ + { + "script": "meta-compile/scripts/meta-compile", + "input": { "type": "CommonModule", "name": "ОбщийМодуль1", "properties": { "Server": true } }, + "args": { "-JsonPath": "{inputFile}", "-OutputDir": "{workDir}" } + }, + { + "script": "cfe-init/scripts/cfe-init", + "args": { "-Name": "Тест", "-OutputDir": "{workDir}/cfe", "-ConfigPath": "{workDir}" } + }, + { + "script": "cfe-borrow/scripts/cfe-borrow", + "args": { + "-ExtensionPath": "{workDir}/cfe", + "-ConfigPath": "{workDir}", + "-Object": "CommonModule.ОбщийМодуль1" + } + }, + { "deletePath": "cfe/CommonModules/ОбщийМодуль1/Ext/Module.bsl" } + ], + "params": { "extensionPath": "cfe" }, + "expect": { "stdoutContains": "есть для Module, но нет Module.bsl" } +} diff --git a/tests/skills/cases/cfe-validate/snapshots/module-state-file-without-flag/CommonModules/ОбщийМодуль1.xml b/tests/skills/cases/cfe-validate/snapshots/module-state-file-without-flag/CommonModules/ОбщийМодуль1.xml new file mode 100644 index 00000000..453da831 --- /dev/null +++ b/tests/skills/cases/cfe-validate/snapshots/module-state-file-without-flag/CommonModules/ОбщийМодуль1.xml @@ -0,0 +1,23 @@ + + + + + ОбщийМодуль1 + + + ru + Общий модуль1 + + + + false + false + false + false + false + false + false + DontUse + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-validate/snapshots/module-state-file-without-flag/CommonModules/ОбщийМодуль1/Ext/Module.bsl b/tests/skills/cases/cfe-validate/snapshots/module-state-file-without-flag/CommonModules/ОбщийМодуль1/Ext/Module.bsl new file mode 100644 index 00000000..e69de29b diff --git a/tests/skills/cases/cfe-validate/snapshots/module-state-file-without-flag/Configuration.xml b/tests/skills/cases/cfe-validate/snapshots/module-state-file-without-flag/Configuration.xml new file mode 100644 index 00000000..e1f22409 --- /dev/null +++ b/tests/skills/cases/cfe-validate/snapshots/module-state-file-without-flag/Configuration.xml @@ -0,0 +1,256 @@ + + + + + + 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_27 + 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 + + + TextToSpeech + false + + + + + + Normal + + + Language.Русский + + + + + + Managed + NotAutoFree + DontUse + DontUse + TaxiEnableVersion8_2 + DontUse + Version8_3_27 + + + + Русский + ОбщийМодуль1 + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-validate/snapshots/module-state-file-without-flag/Ext/ClientApplicationInterface.xml b/tests/skills/cases/cfe-validate/snapshots/module-state-file-without-flag/Ext/ClientApplicationInterface.xml new file mode 100644 index 00000000..3c1161b2 --- /dev/null +++ b/tests/skills/cases/cfe-validate/snapshots/module-state-file-without-flag/Ext/ClientApplicationInterface.xml @@ -0,0 +1,18 @@ + + + + + UUID-002 + + + + + UUID-004 + + + + + + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-validate/snapshots/module-state-file-without-flag/Languages/Русский.xml b/tests/skills/cases/cfe-validate/snapshots/module-state-file-without-flag/Languages/Русский.xml new file mode 100644 index 00000000..fe1c5336 --- /dev/null +++ b/tests/skills/cases/cfe-validate/snapshots/module-state-file-without-flag/Languages/Русский.xml @@ -0,0 +1,16 @@ + + + + + Русский + + + ru + Русский + + + + ru + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-validate/snapshots/module-state-file-without-flag/cfe/CommonModules/ОбщийМодуль1.xml b/tests/skills/cases/cfe-validate/snapshots/module-state-file-without-flag/cfe/CommonModules/ОбщийМодуль1.xml new file mode 100644 index 00000000..c7751756 --- /dev/null +++ b/tests/skills/cases/cfe-validate/snapshots/module-state-file-without-flag/cfe/CommonModules/ОбщийМодуль1.xml @@ -0,0 +1,18 @@ + + + + + + Adopted + ОбщийМодуль1 + + UUID-002 + false + false + false + false + false + false + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-validate/snapshots/module-state-file-without-flag/cfe/CommonModules/ОбщийМодуль1/Ext/Module.bsl b/tests/skills/cases/cfe-validate/snapshots/module-state-file-without-flag/cfe/CommonModules/ОбщийМодуль1/Ext/Module.bsl new file mode 100644 index 00000000..a791a23a --- /dev/null +++ b/tests/skills/cases/cfe-validate/snapshots/module-state-file-without-flag/cfe/CommonModules/ОбщийМодуль1/Ext/Module.bsl @@ -0,0 +1 @@ +// перехватчик добавлен вручную diff --git a/tests/skills/cases/cfe-validate/snapshots/module-state-file-without-flag/cfe/Configuration.xml b/tests/skills/cases/cfe-validate/snapshots/module-state-file-without-flag/cfe/Configuration.xml new file mode 100644 index 00000000..301ee6bf --- /dev/null +++ b/tests/skills/cases/cfe-validate/snapshots/module-state-file-without-flag/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_27 + ManagedApplication + + PlatformApplication + + Russian + + Role.Тест_ОсновнаяРоль + + + + Language.Русский + + + + + + TaxiEnableVersion8_2 + + + Русский + Тест_ОсновнаяРоль + ОбщийМодуль1 + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-validate/snapshots/module-state-file-without-flag/cfe/Languages/Русский.xml b/tests/skills/cases/cfe-validate/snapshots/module-state-file-without-flag/cfe/Languages/Русский.xml new file mode 100644 index 00000000..87112c20 --- /dev/null +++ b/tests/skills/cases/cfe-validate/snapshots/module-state-file-without-flag/cfe/Languages/Русский.xml @@ -0,0 +1,13 @@ + + + + + + Adopted + Русский + + UUID-002 + ru + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-validate/snapshots/module-state-file-without-flag/cfe/Roles/Тест_ОсновнаяРоль.xml b/tests/skills/cases/cfe-validate/snapshots/module-state-file-without-flag/cfe/Roles/Тест_ОсновнаяРоль.xml new file mode 100644 index 00000000..c865bcc2 --- /dev/null +++ b/tests/skills/cases/cfe-validate/snapshots/module-state-file-without-flag/cfe/Roles/Тест_ОсновнаяРоль.xml @@ -0,0 +1,10 @@ + + + + + Тест_ОсновнаяРоль + + + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-validate/snapshots/module-state-flag-without-file/CommonModules/ОбщийМодуль1.xml b/tests/skills/cases/cfe-validate/snapshots/module-state-flag-without-file/CommonModules/ОбщийМодуль1.xml new file mode 100644 index 00000000..453da831 --- /dev/null +++ b/tests/skills/cases/cfe-validate/snapshots/module-state-flag-without-file/CommonModules/ОбщийМодуль1.xml @@ -0,0 +1,23 @@ + + + + + ОбщийМодуль1 + + + ru + Общий модуль1 + + + + false + false + false + false + false + false + false + DontUse + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-validate/snapshots/module-state-flag-without-file/CommonModules/ОбщийМодуль1/Ext/Module.bsl b/tests/skills/cases/cfe-validate/snapshots/module-state-flag-without-file/CommonModules/ОбщийМодуль1/Ext/Module.bsl new file mode 100644 index 00000000..e69de29b diff --git a/tests/skills/cases/cfe-validate/snapshots/module-state-flag-without-file/Configuration.xml b/tests/skills/cases/cfe-validate/snapshots/module-state-flag-without-file/Configuration.xml new file mode 100644 index 00000000..e1f22409 --- /dev/null +++ b/tests/skills/cases/cfe-validate/snapshots/module-state-flag-without-file/Configuration.xml @@ -0,0 +1,256 @@ + + + + + + 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_27 + 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 + + + TextToSpeech + false + + + + + + Normal + + + Language.Русский + + + + + + Managed + NotAutoFree + DontUse + DontUse + TaxiEnableVersion8_2 + DontUse + Version8_3_27 + + + + Русский + ОбщийМодуль1 + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-validate/snapshots/module-state-flag-without-file/Ext/ClientApplicationInterface.xml b/tests/skills/cases/cfe-validate/snapshots/module-state-flag-without-file/Ext/ClientApplicationInterface.xml new file mode 100644 index 00000000..3c1161b2 --- /dev/null +++ b/tests/skills/cases/cfe-validate/snapshots/module-state-flag-without-file/Ext/ClientApplicationInterface.xml @@ -0,0 +1,18 @@ + + + + + UUID-002 + + + + + UUID-004 + + + + + + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-validate/snapshots/module-state-flag-without-file/Languages/Русский.xml b/tests/skills/cases/cfe-validate/snapshots/module-state-flag-without-file/Languages/Русский.xml new file mode 100644 index 00000000..fe1c5336 --- /dev/null +++ b/tests/skills/cases/cfe-validate/snapshots/module-state-flag-without-file/Languages/Русский.xml @@ -0,0 +1,16 @@ + + + + + Русский + + + ru + Русский + + + + ru + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-validate/snapshots/module-state-flag-without-file/cfe/CommonModules/ОбщийМодуль1.xml b/tests/skills/cases/cfe-validate/snapshots/module-state-flag-without-file/cfe/CommonModules/ОбщийМодуль1.xml new file mode 100644 index 00000000..66dea28d --- /dev/null +++ b/tests/skills/cases/cfe-validate/snapshots/module-state-flag-without-file/cfe/CommonModules/ОбщийМодуль1.xml @@ -0,0 +1,23 @@ + + + + + + Module + Extended + + + + Adopted + ОбщийМодуль1 + + UUID-002 + false + false + false + false + false + false + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-validate/snapshots/module-state-flag-without-file/cfe/Configuration.xml b/tests/skills/cases/cfe-validate/snapshots/module-state-flag-without-file/cfe/Configuration.xml new file mode 100644 index 00000000..301ee6bf --- /dev/null +++ b/tests/skills/cases/cfe-validate/snapshots/module-state-flag-without-file/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_27 + ManagedApplication + + PlatformApplication + + Russian + + Role.Тест_ОсновнаяРоль + + + + Language.Русский + + + + + + TaxiEnableVersion8_2 + + + Русский + Тест_ОсновнаяРоль + ОбщийМодуль1 + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-validate/snapshots/module-state-flag-without-file/cfe/Languages/Русский.xml b/tests/skills/cases/cfe-validate/snapshots/module-state-flag-without-file/cfe/Languages/Русский.xml new file mode 100644 index 00000000..87112c20 --- /dev/null +++ b/tests/skills/cases/cfe-validate/snapshots/module-state-flag-without-file/cfe/Languages/Русский.xml @@ -0,0 +1,13 @@ + + + + + + Adopted + Русский + + UUID-002 + ru + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-validate/snapshots/module-state-flag-without-file/cfe/Roles/Тест_ОсновнаяРоль.xml b/tests/skills/cases/cfe-validate/snapshots/module-state-flag-without-file/cfe/Roles/Тест_ОсновнаяРоль.xml new file mode 100644 index 00000000..c865bcc2 --- /dev/null +++ b/tests/skills/cases/cfe-validate/snapshots/module-state-flag-without-file/cfe/Roles/Тест_ОсновнаяРоль.xml @@ -0,0 +1,10 @@ + + + + + Тест_ОсновнаяРоль + + + + + \ No newline at end of file diff --git a/tests/skills/check-inline-drift.mjs b/tests/skills/check-inline-drift.mjs index b569de77..d883c4bd 100644 --- a/tests/skills/check-inline-drift.mjs +++ b/tests/skills/check-inline-drift.mjs @@ -94,21 +94,38 @@ const FAMILIES = [ // если <каталог>.xml — корень ExternalDataProcessor/ExternalReport, чего в дереве // конфигурации не бывает. Поэтому вариант один на всех, переключателя не нужно. { id: 'base', authority: 'form-compile', - consumers: ['cfe-borrow', 'form-add', 'form-validate', 'help-add', 'interface-edit', 'meta-compile', - 'mxl-compile', 'role-compile', 'subsystem-compile', 'template-add', 'xdto-compile'] }, + consumers: ['cfe-borrow', 'cfe-patch-method', 'form-add', 'form-validate', 'help-add', 'interface-edit', + 'meta-compile', 'mxl-compile', 'role-compile', 'subsystem-compile', 'template-add', 'xdto-compile'] }, ], }, { name: 'format_rank', py: 'format_rank', ps1: 'Get-FormatRank', variants: [ { id: 'base', authority: 'meta-compile', - consumers: ['cf-init', 'cf-validate', 'cfe-borrow', 'cfe-init', 'cfe-validate', 'epf-build', + consumers: ['cf-init', 'cf-validate', 'cfe-borrow', 'cfe-init', 'cfe-patch-method', 'cfe-validate', 'epf-build', 'epf-init', 'epf-validate', 'erf-init', 'form-add', 'form-compile', 'form-validate', 'meta-validate', 'mxl-compile', 'role-compile', 'subsystem-compile', 'subsystem-edit', 'template-add', 'xdto-compile'] }, ], }, + // ─── Пометка расширенного свойства в расширении ────────────────────────── + // Флаг ставит тот навык, который создал файл модуля: cfe-borrow — при + // заимствовании, cfe-patch-method — когда модуль появляется вместе с перехватчиком. Копии + // обязаны совпадать, иначе один навык пишет пометку, а другой — нет. + { + name: 'build_property_state_xml', py: 'build_property_state_xml', ps1: 'Build-PropertyStateXml', + variants: [ + { id: 'base', authority: 'cfe-borrow', consumers: ['cfe-patch-method'] }, + ], + }, + { + name: 'set_property_state_flag', py: 'set_property_state_flag', ps1: 'Set-PropertyStateFlag', + variants: [ + { id: 'base', authority: 'cfe-borrow', consumers: ['cfe-patch-method'] }, + ], + }, + // ─── Запись файла в каноне выгрузки ────────────────────────────────────── { name: 'write_xml_file', py: 'write_xml_file', ps1: 'Write-XmlFile', diff --git a/tests/skills/runner.mjs b/tests/skills/runner.mjs index 357dc291..8b9b3c71 100644 --- a/tests/skills/runner.mjs +++ b/tests/skills/runner.mjs @@ -752,6 +752,12 @@ async function runCaseAsync(testCase, opts) { if (step.writeFile.executable) chmodSync(wfPath, 0o755); continue; } + // deletePath step — убрать файл или каталог из workDir: так выражается состояние, + // которое навыки сами не создают (например, пометка свойства без файла модуля). + if (step.deletePath) { + rmSync(join(workDir, step.deletePath), { recursive: true, force: true }); + continue; + } const preScript = resolveScript(step.script, opts.runtime); const preArgs = []; for (const [flag, value] of Object.entries(step.args || {})) {