diff --git a/.claude/skills/role-compile/scripts/role-compile.ps1 b/.claude/skills/role-compile/scripts/role-compile.ps1 index f0978c6b6..177173533 100644 --- a/.claude/skills/role-compile/scripts/role-compile.ps1 +++ b/.claude/skills/role-compile/scripts/role-compile.ps1 @@ -1,4 +1,4 @@ -# role-compile v1.44 — Compile 1C role from JSON +# role-compile v1.45 — Compile 1C role from JSON # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills [CmdletBinding(PositionalBinding=$false)] param( @@ -780,7 +780,20 @@ function Sort-RightsCanonical { return $sorted } -# uuid объекта прав: у верхнего уровня — из файла объекта, у вложенного — из его узла. +# У стандартных реквизитов и стандартных табличных частей uuid в выгрузке нет: они системные. +# Отсутствие uuid для них — норма, а не потерянный объект. +function Test-StandardKind { + param([string]$objName) + $parts = $objName -split '\\.' + if ($parts.Count -lt 3) { return $false } + return $parts[$parts.Count-2].StartsWith("Standard") +} + +# uuid объекта прав: у верхнего уровня — из файла объекта, у вложенного — спуском по дереву. +# Искать регуляркой по всему файлу нельзя: реквизит шапки и реквизит табличной части часто +# называются одинаково, и поиск нашёл бы первый попавшийся. Дочерние подсистемы лежат +# отдельными файлами, поэтому для них спуск идёт по каталогам. +# У стандартных реквизитов uuid в выгрузке нет вовсе — для них возвращаем $null молча. function Get-RightsObjectUuid { param([string]$objName, [string]$configRoot) $parts = $objName -split '\.' @@ -793,18 +806,33 @@ function Get-RightsObjectUuid { } $dir = $script:typeDirs[$parts[0]] if (-not $dir -or $parts.Count -lt 2) { return $null } + # Подсистемы вложены каталогами: Subsystems/Родитель/Subsystems/Ребёнок.xml $ownerPath = Join-Path (Join-Path $configRoot $dir) "$($parts[1]).xml" - if (-not (Test-Path $ownerPath)) { return $null } - $text = [System.IO.File]::ReadAllText($ownerPath) - if ($parts.Count -eq 2) { - if ($text -match "<$($parts[0]) uuid=`"([0-9a-fA-F-]+)`"") { return $Matches[1] } - return $null + $i = 2 + while ($parts.Count -gt $i + 1 -and $parts[$i] -eq 'Subsystem') { + $ownerDir = [System.IO.Path]::Combine($configRoot, $dir, ($parts[1..($i-1)] -join [System.IO.Path]::DirectorySeparatorChar + 'Subsystems' + [System.IO.Path]::DirectorySeparatorChar)) + $ownerPath = Join-Path (Join-Path ([System.IO.Path]::GetDirectoryName($ownerPath)) ([System.IO.Path]::GetFileNameWithoutExtension($ownerPath))) (Join-Path "Subsystems" "$($parts[$i+1]).xml") + $i += 2 } - # Вложенный: вид — предпоследний сегмент, имя — последний. - $kind = [regex]::Escape($parts[$parts.Count-2]) - $name = [regex]::Escape($parts[$parts.Count-1]) - $rx = "<$kind uuid=`"([0-9a-fA-F-]+)`"[^>]*>\s*\s*$name" - if ($text -match $rx) { return $Matches[1] } + if (-not (Test-Path $ownerPath)) { return $null } + $doc = New-Object System.Xml.XmlDocument + $doc.PreserveWhitespace = $true + try { $doc.Load($ownerPath) } catch { return $null } + $nsm = New-Object System.Xml.XmlNamespaceManager($doc.NameTable) + $nsm.AddNamespace("md", "http://v8.1c.ru/8.3/MDClasses") + $node = $doc.DocumentElement.FirstChild + while ($node -and $node.NodeType -ne 'Element') { $node = $node.NextSibling } + if (-not $node) { return $null } + # Оставшиеся пары «вид, имя» ищем строго внутри текущего узла. + while ($i + 1 -lt $parts.Count) { + $kind = $parts[$i] + $name = $parts[$i+1] + $child = $node.SelectSingleNode("md:ChildObjects/md:$kind[md:Properties/md:Name='$name']", $nsm) + if (-not $child) { return $null } + $node = $child + $i += 2 + } + if ($node.HasAttribute("uuid")) { return $node.GetAttribute("uuid") } return $null } @@ -817,7 +845,9 @@ function Sort-ObjectsByUuid { $uuid = Get-RightsObjectUuid -objName $o.Name -configRoot $configRoot if ($uuid) { $known += ,[pscustomobject]@{ Uuid = $uuid; Obj = $o } } else { - [Console]::Error.WriteLine("[role-compile] $($o.Name): объект не найден в выгрузке, uuid неизвестен — узел записан в конец (платформа переставит его при первой выгрузке)") + if (-not (Test-StandardKind $o.Name)) { + [Console]::Error.WriteLine("[role-compile] $($o.Name): объект не найден в выгрузке, uuid неизвестен — узел записан в конец (платформа переставит его при первой выгрузке)") + } $unknown += ,$o } } @@ -1526,7 +1556,9 @@ foreach ($obj in $parsedObjects) { $defaultValue = Get-DefaultRightValue $obj.Name $sfno $sfab $kept = @() foreach ($right in $obj.Rights) { - if ($right.Value -eq $defaultValue) { $droppedByDefault += "$($obj.Name).$($right.Name)"; continue } + # Право с ограничением отличается от умолчания самим ограничением — его платформа хранит, + # и выбросить его значило бы молча потерять написанное условие. + if ($right.Value -eq $defaultValue -and -not $right.Condition) { $droppedByDefault += "$($obj.Name).$($right.Name)"; continue } $kept += ,$right } $obj.Rights = $kept diff --git a/.claude/skills/role-compile/scripts/role-compile.py b/.claude/skills/role-compile/scripts/role-compile.py index 231058edc..291ec69f1 100644 --- a/.claude/skills/role-compile/scripts/role-compile.py +++ b/.claude/skills/role-compile/scripts/role-compile.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# role-compile v1.44 — Compile 1C role from JSON +# role-compile v1.45 — Compile 1C role from JSON # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse import json @@ -1086,8 +1086,21 @@ def sort_rights_canonical(object_name, rights): return sorted_rights +# У стандартных реквизитов и стандартных табличных частей uuid в выгрузке нет: они системные. +# Отсутствие uuid для них — норма, а не потерянный объект. +def is_standard_kind(object_name): + parts = object_name.split('.') + if len(parts) < 3: + return False + return parts[-2].startswith("Standard") + + +# uuid объекта прав: у верхнего уровня — из файла объекта, у вложенного — спуском по дереву. +# Искать регуляркой по всему файлу нельзя: реквизит шапки и реквизит табличной части часто +# называются одинаково, и поиск нашёл бы первый попавшийся. Дочерние подсистемы лежат +# отдельными файлами, поэтому для них спуск идёт по каталогам. +# У стандартных реквизитов uuid в выгрузке нет вовсе — для них возвращаем None молча. def get_rights_object_uuid(object_name, config_root): - """uuid объекта прав: у верхнего уровня — из файла объекта, у вложенного — из его узла.""" parts = object_name.split('.') if parts[0] == 'Configuration': cfg_path = os.path.join(config_root, 'Configuration.xml') @@ -1099,19 +1112,36 @@ def get_rights_object_uuid(object_name, config_root): directory = TYPE_DIRS.get(parts[0]) if not directory or len(parts) < 2: return None + # Подсистемы вложены каталогами: Subsystems/Родитель/Subsystems/Ребёнок.xml owner_path = os.path.join(config_root, directory, parts[1] + '.xml') + i = 2 + while len(parts) > i + 1 and parts[i] == 'Subsystem': + owner_path = os.path.join(os.path.splitext(owner_path)[0], 'Subsystems', parts[i + 1] + '.xml') + i += 2 if not os.path.isfile(owner_path): return None - with open(owner_path, 'r', encoding='utf-8-sig') as f: - text = f.read() - if len(parts) == 2: - m = re.search(r'<%s uuid="([0-9a-fA-F-]+)"' % re.escape(parts[0]), text) - return m.group(1) if m else None - # Вложенный: вид — предпоследний сегмент, имя — последний. - rx = r'<%s uuid="([0-9a-fA-F-]+)"[^>]*>\s*\s*%s' % ( - re.escape(parts[-2]), re.escape(parts[-1])) - m = re.search(rx, text) - return m.group(1) if m else None + try: + tree = etree.parse(owner_path) + except Exception: + return None + md = '{http://v8.1c.ru/8.3/MDClasses}' + node = tree.getroot()[0] if len(tree.getroot()) else None + if node is None: + return None + # Оставшиеся пары «вид, имя» ищем строго внутри текущего узла. + while i + 1 < len(parts): + kind, name = parts[i], parts[i + 1] + child = None + for candidate in node.findall(f'{md}ChildObjects/{md}{kind}'): + props = candidate.find(f'{md}Properties/{md}Name') + if props is not None and (props.text or '') == name: + child = candidate + break + if child is None: + return None + node = child + i += 2 + return node.get('uuid') def sort_objects_by_uuid(objects, config_root): @@ -1122,9 +1152,10 @@ def sort_objects_by_uuid(objects, config_root): if uuid_value: known.append((uuid_value, o)) else: - print(f"[role-compile] {o['Name']}: объект не найден в выгрузке, uuid неизвестен — " - f"узел записан в конец (платформа переставит его при первой выгрузке)", - file=sys.stderr) + if not is_standard_kind(o['Name']): + print(f"[role-compile] {o['Name']}: объект не найден в выгрузке, uuid неизвестен — " + f"узел записан в конец (платформа переставит его при первой выгрузке)", + file=sys.stderr) unknown.append(o) known.sort(key=lambda pair: pair[0]) return [o for _, o in known] + unknown @@ -1780,7 +1811,9 @@ def main(): default_value = get_default_right_value(obj['Name'], sfno, sfab) kept = [] for right in obj['Rights']: - if right['Value'] == default_value: + # Право с ограничением отличается от умолчания самим ограничением — его платформа хранит, + # и выбросить его значило бы молча потерять написанное условие. + if right['Value'] == default_value and not right['Condition']: dropped_by_default.append(f"{obj['Name']}.{right['Name']}") continue kept.append(right) diff --git a/.claude/skills/role-edit/scripts/role-edit.ps1 b/.claude/skills/role-edit/scripts/role-edit.ps1 index a1becdfbe..3e5d936fd 100644 --- a/.claude/skills/role-edit/scripts/role-edit.ps1 +++ b/.claude/skills/role-edit/scripts/role-edit.ps1 @@ -1,4 +1,4 @@ -# role-edit v1.6 — Edit existing 1C role rights in place +# role-edit v1.7 — Edit existing 1C role rights in place # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills [CmdletBinding(PositionalBinding=$false)] param( @@ -733,7 +733,20 @@ function Sort-RightsCanonical { return $sorted } -# uuid объекта прав: у верхнего уровня — из файла объекта, у вложенного — из его узла. +# У стандартных реквизитов и стандартных табличных частей uuid в выгрузке нет: они системные. +# Отсутствие uuid для них — норма, а не потерянный объект. +function Test-StandardKind { + param([string]$objName) + $parts = $objName -split '\\.' + if ($parts.Count -lt 3) { return $false } + return $parts[$parts.Count-2].StartsWith("Standard") +} + +# uuid объекта прав: у верхнего уровня — из файла объекта, у вложенного — спуском по дереву. +# Искать регуляркой по всему файлу нельзя: реквизит шапки и реквизит табличной части часто +# называются одинаково, и поиск нашёл бы первый попавшийся. Дочерние подсистемы лежат +# отдельными файлами, поэтому для них спуск идёт по каталогам. +# У стандартных реквизитов uuid в выгрузке нет вовсе — для них возвращаем $null молча. function Get-RightsObjectUuid { param([string]$objName, [string]$configRoot) $parts = $objName -split '\.' @@ -746,18 +759,33 @@ function Get-RightsObjectUuid { } $dir = $script:typeDirs[$parts[0]] if (-not $dir -or $parts.Count -lt 2) { return $null } + # Подсистемы вложены каталогами: Subsystems/Родитель/Subsystems/Ребёнок.xml $ownerPath = Join-Path (Join-Path $configRoot $dir) "$($parts[1]).xml" - if (-not (Test-Path $ownerPath)) { return $null } - $text = [System.IO.File]::ReadAllText($ownerPath) - if ($parts.Count -eq 2) { - if ($text -match "<$($parts[0]) uuid=`"([0-9a-fA-F-]+)`"") { return $Matches[1] } - return $null + $i = 2 + while ($parts.Count -gt $i + 1 -and $parts[$i] -eq 'Subsystem') { + $ownerDir = [System.IO.Path]::Combine($configRoot, $dir, ($parts[1..($i-1)] -join [System.IO.Path]::DirectorySeparatorChar + 'Subsystems' + [System.IO.Path]::DirectorySeparatorChar)) + $ownerPath = Join-Path (Join-Path ([System.IO.Path]::GetDirectoryName($ownerPath)) ([System.IO.Path]::GetFileNameWithoutExtension($ownerPath))) (Join-Path "Subsystems" "$($parts[$i+1]).xml") + $i += 2 } - # Вложенный: вид — предпоследний сегмент, имя — последний. - $kind = [regex]::Escape($parts[$parts.Count-2]) - $name = [regex]::Escape($parts[$parts.Count-1]) - $rx = "<$kind uuid=`"([0-9a-fA-F-]+)`"[^>]*>\s*\s*$name" - if ($text -match $rx) { return $Matches[1] } + if (-not (Test-Path $ownerPath)) { return $null } + $doc = New-Object System.Xml.XmlDocument + $doc.PreserveWhitespace = $true + try { $doc.Load($ownerPath) } catch { return $null } + $nsm = New-Object System.Xml.XmlNamespaceManager($doc.NameTable) + $nsm.AddNamespace("md", "http://v8.1c.ru/8.3/MDClasses") + $node = $doc.DocumentElement.FirstChild + while ($node -and $node.NodeType -ne 'Element') { $node = $node.NextSibling } + if (-not $node) { return $null } + # Оставшиеся пары «вид, имя» ищем строго внутри текущего узла. + while ($i + 1 -lt $parts.Count) { + $kind = $parts[$i] + $name = $parts[$i+1] + $child = $node.SelectSingleNode("md:ChildObjects/md:$kind[md:Properties/md:Name='$name']", $nsm) + if (-not $child) { return $null } + $node = $child + $i += 2 + } + if ($node.HasAttribute("uuid")) { return $node.GetAttribute("uuid") } return $null } @@ -1696,7 +1724,7 @@ function Insert-ObjectNode($newNode, [string]$objName) { $otherUuid = Get-RightsObjectUuid -objName (Get-ObjectNodeName $node) -configRoot $script:configRoot if ($otherUuid -and [string]::CompareOrdinal($otherUuid, $uuid) -gt 0) { $refNode = $node; break } } - } else { + } elseif (-not (Test-StandardKind $objName)) { Add-Note "[WARN] ${objName}: объект не найден в выгрузке, uuid неизвестен — узел записан перед шаблонами (платформа переставит его при первой выгрузке)" } if (-not $refNode) { @@ -1949,7 +1977,7 @@ function Apply-DenyRights($spec) { } if ($denied.Count -eq 0) { if ($created) { Remove-NodeWithWhitespace $objNode } - $reason = if ($script:droppedByDefault -match [regex]::Escape($spec.Name)) { "запрет совпадает с умолчанием роли и платформой не хранится" } else { "права уже запрещены" } + $reason = if (@($script:droppedByDefault | Where-Object { $_.StartsWith("$($spec.Name).") }).Count -gt 0) { "запрет совпадает с умолчанием роли и платформой не хранится" } else { "права уже запрещены" } Add-Note " $($spec.Name): $reason, изменений нет" return } @@ -2214,6 +2242,9 @@ function Apply-ModifyProperty($spec) { return } $node.InnerText = $spec.Value + # Умолчания решают, какие записи вообще пишутся, — следующие операции должны видеть новое значение. + if ($spec.Name -eq 'setForNewObjects') { $script:roleSfno = $spec.Value } + if ($spec.Name -eq 'setForAttributesByDefault') { $script:roleSfab = $spec.Value } $script:modifyCount++ $script:rightsDirty = $true Add-Note " $($spec.Name) = $($spec.Value)" @@ -2231,9 +2262,12 @@ function Edit-RoleMetadata([string]$field, [string]$text) { Add-ValidationError "Файл метаданных роли не найден: $($script:roleXmlPath)" return } - $doc = New-Object System.Xml.XmlDocument - $doc.PreserveWhitespace = $true - $doc.Load($script:roleXmlPath) + $doc = $script:metaDoc + if (-not $doc) { + $doc = New-Object System.Xml.XmlDocument + $doc.PreserveWhitespace = $true + $doc.Load($script:roleXmlPath) + } $nsm = New-Object System.Xml.XmlNamespaceManager($doc.NameTable) $nsm.AddNamespace("md", $script:mdObjectNs) $nsm.AddNamespace("v8", $script:v8Ns) diff --git a/.claude/skills/role-edit/scripts/role-edit.py b/.claude/skills/role-edit/scripts/role-edit.py index 3af839f3c..9586a2570 100644 --- a/.claude/skills/role-edit/scripts/role-edit.py +++ b/.claude/skills/role-edit/scripts/role-edit.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# role-edit v1.6 — Edit existing 1C role rights in place +# role-edit v1.7 — Edit existing 1C role rights in place # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse import json @@ -1041,8 +1041,21 @@ def sort_rights_canonical(object_name, rights): return sorted_rights +# У стандартных реквизитов и стандартных табличных частей uuid в выгрузке нет: они системные. +# Отсутствие uuid для них — норма, а не потерянный объект. +def is_standard_kind(object_name): + parts = object_name.split('.') + if len(parts) < 3: + return False + return parts[-2].startswith("Standard") + + +# uuid объекта прав: у верхнего уровня — из файла объекта, у вложенного — спуском по дереву. +# Искать регуляркой по всему файлу нельзя: реквизит шапки и реквизит табличной части часто +# называются одинаково, и поиск нашёл бы первый попавшийся. Дочерние подсистемы лежат +# отдельными файлами, поэтому для них спуск идёт по каталогам. +# У стандартных реквизитов uuid в выгрузке нет вовсе — для них возвращаем None молча. def get_rights_object_uuid(object_name, config_root): - """uuid объекта прав: у верхнего уровня — из файла объекта, у вложенного — из его узла.""" parts = object_name.split('.') if parts[0] == 'Configuration': cfg_path = os.path.join(config_root, 'Configuration.xml') @@ -1054,19 +1067,36 @@ def get_rights_object_uuid(object_name, config_root): directory = TYPE_DIRS.get(parts[0]) if not directory or len(parts) < 2: return None + # Подсистемы вложены каталогами: Subsystems/Родитель/Subsystems/Ребёнок.xml owner_path = os.path.join(config_root, directory, parts[1] + '.xml') + i = 2 + while len(parts) > i + 1 and parts[i] == 'Subsystem': + owner_path = os.path.join(os.path.splitext(owner_path)[0], 'Subsystems', parts[i + 1] + '.xml') + i += 2 if not os.path.isfile(owner_path): return None - with open(owner_path, 'r', encoding='utf-8-sig') as f: - text = f.read() - if len(parts) == 2: - m = re.search(r'<%s uuid="([0-9a-fA-F-]+)"' % re.escape(parts[0]), text) - return m.group(1) if m else None - # Вложенный: вид — предпоследний сегмент, имя — последний. - rx = r'<%s uuid="([0-9a-fA-F-]+)"[^>]*>\s*\s*%s' % ( - re.escape(parts[-2]), re.escape(parts[-1])) - m = re.search(rx, text) - return m.group(1) if m else None + try: + tree = etree.parse(owner_path) + except Exception: + return None + md = '{http://v8.1c.ru/8.3/MDClasses}' + node = tree.getroot()[0] if len(tree.getroot()) else None + if node is None: + return None + # Оставшиеся пары «вид, имя» ищем строго внутри текущего узла. + while i + 1 < len(parts): + kind, name = parts[i], parts[i + 1] + child = None + for candidate in node.findall(f'{md}ChildObjects/{md}{kind}'): + props = candidate.find(f'{md}Properties/{md}Name') + if props is not None and (props.text or '') == name: + child = candidate + break + if child is None: + return None + node = child + i += 2 + return node.get('uuid') def sort_objects_by_uuid(objects, config_root): @@ -1731,7 +1761,7 @@ class Editor: if other and other > uuid_value: ref = node break - else: + elif not is_standard_kind(obj_name): self.note(f"[WARN] {obj_name}: объект не найден в выгрузке, uuid неизвестен — " f"узел записан перед шаблонами (платформа переставит его при первой выгрузке)") if ref is None: @@ -2095,6 +2125,11 @@ class Editor: self.note(f" {spec['Name']}: уже {spec['Value']}, изменений нет") return node.text = spec["Value"] + # Умолчания решают, какие записи вообще пишутся, — следующие операции должны видеть новое значение. + if spec["Name"] == "setForNewObjects": + self.role_sfno = spec["Value"] + if spec["Name"] == "setForAttributesByDefault": + self.role_sfab = spec["Value"] self.modify_count += 1 self.rights_dirty = True self.note(f" {spec['Name']} = {spec['Value']}") diff --git a/tests/skills/cases/role-compile/default-filter-keeps-rls.json b/tests/skills/cases/role-compile/default-filter-keeps-rls.json new file mode 100644 index 000000000..ba2cfc483 --- /dev/null +++ b/tests/skills/cases/role-compile/default-filter-keeps-rls.json @@ -0,0 +1,30 @@ +{ + "name": "Фильтр умолчаний не уносит право вместе с его ограничением RLS", + "setup": "fixture:view-preset-fx", + "input": { + "name": "РЛСПриУмолчании", + "setForNewObjects": true, + "objects": [ + { + "name": "Catalog.Номенклатура", + "rights": { + "Read": true, + "View": true + }, + "rls": { + "Read": "ГДЕ ЛОЖЬ" + } + } + ] + }, + "validatePath": "Roles/РЛСПриУмолчании", + "expect": { + "fileContains": { + "file": "Roles/РЛСПриУмолчании/Ext/Rights.xml", + "text": [ + "ГДЕ ЛОЖЬ", + "Read" + ] + } + } +} diff --git a/tests/skills/cases/role-compile/snapshots/default-filter-keeps-rls/Catalogs/Номенклатура.xml b/tests/skills/cases/role-compile/snapshots/default-filter-keeps-rls/Catalogs/Номенклатура.xml new file mode 100644 index 000000000..0daed60e9 --- /dev/null +++ b/tests/skills/cases/role-compile/snapshots/default-filter-keeps-rls/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/role-compile/snapshots/default-filter-keeps-rls/Catalogs/Номенклатура/Ext/ObjectModule.bsl b/tests/skills/cases/role-compile/snapshots/default-filter-keeps-rls/Catalogs/Номенклатура/Ext/ObjectModule.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/tests/skills/cases/role-compile/snapshots/default-filter-keeps-rls/Configuration.xml b/tests/skills/cases/role-compile/snapshots/default-filter-keeps-rls/Configuration.xml new file mode 100644 index 000000000..7dcdc3fc1 --- /dev/null +++ b/tests/skills/cases/role-compile/snapshots/default-filter-keeps-rls/Configuration.xml @@ -0,0 +1,254 @@ + + + + + + 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/role-compile/snapshots/default-filter-keeps-rls/DataProcessors/Загрузка.xml b/tests/skills/cases/role-compile/snapshots/default-filter-keeps-rls/DataProcessors/Загрузка.xml new file mode 100644 index 000000000..fa5caaf26 --- /dev/null +++ b/tests/skills/cases/role-compile/snapshots/default-filter-keeps-rls/DataProcessors/Загрузка.xml @@ -0,0 +1,32 @@ + + + + + + UUID-002 + UUID-003 + + + UUID-004 + UUID-005 + + + + Загрузка + + + ru + Загрузка + + + + true + + + false + + + + + + \ No newline at end of file diff --git a/tests/skills/cases/role-compile/snapshots/default-filter-keeps-rls/DataProcessors/Загрузка/Ext/ManagerModule.bsl b/tests/skills/cases/role-compile/snapshots/default-filter-keeps-rls/DataProcessors/Загрузка/Ext/ManagerModule.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/tests/skills/cases/role-compile/snapshots/default-filter-keeps-rls/DataProcessors/Загрузка/Ext/ObjectModule.bsl b/tests/skills/cases/role-compile/snapshots/default-filter-keeps-rls/DataProcessors/Загрузка/Ext/ObjectModule.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/tests/skills/cases/role-compile/snapshots/default-filter-keeps-rls/Ext/ClientApplicationInterface.xml b/tests/skills/cases/role-compile/snapshots/default-filter-keeps-rls/Ext/ClientApplicationInterface.xml new file mode 100644 index 000000000..3c1161b2d --- /dev/null +++ b/tests/skills/cases/role-compile/snapshots/default-filter-keeps-rls/Ext/ClientApplicationInterface.xml @@ -0,0 +1,18 @@ + + + + + UUID-002 + + + + + UUID-004 + + + + + + + + \ No newline at end of file diff --git a/tests/skills/cases/role-compile/snapshots/default-filter-keeps-rls/Languages/Русский.xml b/tests/skills/cases/role-compile/snapshots/default-filter-keeps-rls/Languages/Русский.xml new file mode 100644 index 000000000..37c60d786 --- /dev/null +++ b/tests/skills/cases/role-compile/snapshots/default-filter-keeps-rls/Languages/Русский.xml @@ -0,0 +1,16 @@ + + + + + Русский + + + ru + Русский + + + + ru + + + \ No newline at end of file diff --git a/tests/skills/cases/role-compile/snapshots/default-filter-keeps-rls/Roles/РЛСПриУмолчании.xml b/tests/skills/cases/role-compile/snapshots/default-filter-keeps-rls/Roles/РЛСПриУмолчании.xml new file mode 100644 index 000000000..f94e2a173 --- /dev/null +++ b/tests/skills/cases/role-compile/snapshots/default-filter-keeps-rls/Roles/РЛСПриУмолчании.xml @@ -0,0 +1,15 @@ + + + + + РЛСПриУмолчании + + + ru + РЛСПриУмолчании + + + + + + \ No newline at end of file diff --git a/tests/skills/cases/role-compile/snapshots/default-filter-keeps-rls/Roles/РЛСПриУмолчании/Ext/Rights.xml b/tests/skills/cases/role-compile/snapshots/default-filter-keeps-rls/Roles/РЛСПриУмолчании/Ext/Rights.xml new file mode 100644 index 000000000..300d5ba2e --- /dev/null +++ b/tests/skills/cases/role-compile/snapshots/default-filter-keeps-rls/Roles/РЛСПриУмолчании/Ext/Rights.xml @@ -0,0 +1,16 @@ + + + true + true + false + + Catalog.Номенклатура + + Read + true + + ГДЕ ЛОЖЬ + + + + \ No newline at end of file diff --git a/tests/skills/cases/role-compile/snapshots/expand-adopted-service/Roles/Расш1_Роль1/Ext/Rights.xml b/tests/skills/cases/role-compile/snapshots/expand-adopted-service/Roles/Расш1_Роль1/Ext/Rights.xml index df32565dc..58f80e209 100644 --- a/tests/skills/cases/role-compile/snapshots/expand-adopted-service/Roles/Расш1_Роль1/Ext/Rights.xml +++ b/tests/skills/cases/role-compile/snapshots/expand-adopted-service/Roles/Расш1_Роль1/Ext/Rights.xml @@ -3,13 +3,6 @@ false true false - - HTTPService.Расш1_HTTPСервис1.URLTemplate.ШаблонURL1.Method.Метод1 - - Use - true - - HTTPService.ЭДО.URLTemplate.ЕстьНовыеДокументы.Method.POST @@ -17,4 +10,11 @@ true + + HTTPService.Расш1_HTTPСервис1.URLTemplate.ШаблонURL1.Method.Метод1 + + Use + true + + \ No newline at end of file diff --git a/tests/skills/cases/role-edit/metadata-batch.json b/tests/skills/cases/role-edit/metadata-batch.json new file mode 100644 index 000000000..0fa83e0fe --- /dev/null +++ b/tests/skills/cases/role-edit/metadata-batch.json @@ -0,0 +1,26 @@ +{ + "name": "Синоним и комментарий в одном вызове не затирают друг друга", + "setup": "fixture:role-base", + "params": { + "rolePath": "Roles/Менеджер" + }, + "input": [ + { + "operation": "set-synonym", + "value": "Менеджер продаж" + }, + { + "operation": "set-comment", + "value": "Комментарий роли" + } + ], + "expect": { + "fileContains": { + "file": "Roles/Менеджер.xml", + "text": [ + "Менеджер продаж", + "Комментарий роли" + ] + } + } +} diff --git a/tests/skills/cases/role-edit/modify-property-then-add.json b/tests/skills/cases/role-edit/modify-property-then-add.json new file mode 100644 index 000000000..22e26f50e --- /dev/null +++ b/tests/skills/cases/role-edit/modify-property-then-add.json @@ -0,0 +1,26 @@ +{ + "name": "Смена умолчания роли действует на следующие операции того же вызова", + "setup": "fixture:role-base", + "params": { + "rolePath": "Roles/Менеджер" + }, + "input": [ + { + "operation": "modify-property", + "value": "setForNewObjects=true" + }, + { + "operation": "add-rights", + "value": "DataProcessor.Загрузка: Use" + } + ], + "expect": { + "stderrContains": [ + "Не записаны права, совпадающие с умолчанием роли" + ], + "fileNotContains": { + "file": "Roles/Менеджер/Ext/Rights.xml", + "text": "DataProcessor.Загрузка" + } + } +} diff --git a/tests/skills/cases/role-edit/snapshots/metadata-batch/Catalogs/Товары.xml b/tests/skills/cases/role-edit/snapshots/metadata-batch/Catalogs/Товары.xml new file mode 100644 index 000000000..292de84c4 --- /dev/null +++ b/tests/skills/cases/role-edit/snapshots/metadata-batch/Catalogs/Товары.xml @@ -0,0 +1,137 @@ + + + + + + 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 + + + + + Цена + + + ru + Цена + + + + + xs:decimal + + 15 + 2 + Any + + + false + + + + false + + false + false + + + false + 0 + DontCheck + Items + + + Auto + Auto + + + Auto + ForItem + DontIndex + Use + Use + + + + + \ No newline at end of file diff --git a/tests/skills/cases/role-edit/snapshots/metadata-batch/Catalogs/Товары/Ext/ObjectModule.bsl b/tests/skills/cases/role-edit/snapshots/metadata-batch/Catalogs/Товары/Ext/ObjectModule.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/tests/skills/cases/role-edit/snapshots/metadata-batch/Configuration.xml b/tests/skills/cases/role-edit/snapshots/metadata-batch/Configuration.xml new file mode 100644 index 000000000..880e20b87 --- /dev/null +++ b/tests/skills/cases/role-edit/snapshots/metadata-batch/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 + + + + + + Normal + + + Language.Русский + + + + + + Managed + NotAutoFree + DontUse + DontUse + TaxiEnableVersion8_2 + DontUse + Version8_3_24 + + + + Русский + Менеджер + Товары + Заказ + Загрузка + Цены + + + \ No newline at end of file diff --git a/tests/skills/cases/role-edit/snapshots/metadata-batch/DataProcessors/Загрузка.xml b/tests/skills/cases/role-edit/snapshots/metadata-batch/DataProcessors/Загрузка.xml new file mode 100644 index 000000000..fa5caaf26 --- /dev/null +++ b/tests/skills/cases/role-edit/snapshots/metadata-batch/DataProcessors/Загрузка.xml @@ -0,0 +1,32 @@ + + + + + + UUID-002 + UUID-003 + + + UUID-004 + UUID-005 + + + + Загрузка + + + ru + Загрузка + + + + true + + + false + + + + + + \ No newline at end of file diff --git a/tests/skills/cases/role-edit/snapshots/metadata-batch/DataProcessors/Загрузка/Ext/ManagerModule.bsl b/tests/skills/cases/role-edit/snapshots/metadata-batch/DataProcessors/Загрузка/Ext/ManagerModule.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/tests/skills/cases/role-edit/snapshots/metadata-batch/DataProcessors/Загрузка/Ext/ObjectModule.bsl b/tests/skills/cases/role-edit/snapshots/metadata-batch/DataProcessors/Загрузка/Ext/ObjectModule.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/tests/skills/cases/role-edit/snapshots/metadata-batch/Documents/Заказ.xml b/tests/skills/cases/role-edit/snapshots/metadata-batch/Documents/Заказ.xml new file mode 100644 index 000000000..32fa05878 --- /dev/null +++ b/tests/skills/cases/role-edit/snapshots/metadata-batch/Documents/Заказ.xml @@ -0,0 +1,82 @@ + + + + + + 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 + + + + + + + Allow + Deny + AutoDelete + WriteSelected + AutoFill + + true + true + false + + Managed + Use + + + + + + Auto + DontUse + false + false + + + + \ No newline at end of file diff --git a/tests/skills/cases/role-edit/snapshots/metadata-batch/Documents/Заказ/Ext/ObjectModule.bsl b/tests/skills/cases/role-edit/snapshots/metadata-batch/Documents/Заказ/Ext/ObjectModule.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/tests/skills/cases/role-edit/snapshots/metadata-batch/Ext/ClientApplicationInterface.xml b/tests/skills/cases/role-edit/snapshots/metadata-batch/Ext/ClientApplicationInterface.xml new file mode 100644 index 000000000..3c1161b2d --- /dev/null +++ b/tests/skills/cases/role-edit/snapshots/metadata-batch/Ext/ClientApplicationInterface.xml @@ -0,0 +1,18 @@ + + + + + UUID-002 + + + + + UUID-004 + + + + + + + + \ No newline at end of file diff --git a/tests/skills/cases/role-edit/snapshots/metadata-batch/InformationRegisters/Цены.xml b/tests/skills/cases/role-edit/snapshots/metadata-batch/InformationRegisters/Цены.xml new file mode 100644 index 000000000..092bf1d11 --- /dev/null +++ b/tests/skills/cases/role-edit/snapshots/metadata-batch/InformationRegisters/Цены.xml @@ -0,0 +1,261 @@ + + + + + + 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 + Товар + + + + + cfg:CatalogRef.Товары + + false + + + + false + + false + false + + + false + + DontCheck + Items + + + Auto + Auto + + + Auto + false + false + false + DontIndex + Use + Use + + + + + \ No newline at end of file diff --git a/tests/skills/cases/role-edit/snapshots/metadata-batch/InformationRegisters/Цены/Ext/RecordSetModule.bsl b/tests/skills/cases/role-edit/snapshots/metadata-batch/InformationRegisters/Цены/Ext/RecordSetModule.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/tests/skills/cases/role-edit/snapshots/metadata-batch/Languages/Русский.xml b/tests/skills/cases/role-edit/snapshots/metadata-batch/Languages/Русский.xml new file mode 100644 index 000000000..37c60d786 --- /dev/null +++ b/tests/skills/cases/role-edit/snapshots/metadata-batch/Languages/Русский.xml @@ -0,0 +1,16 @@ + + + + + Русский + + + ru + Русский + + + + ru + + + \ No newline at end of file diff --git a/tests/skills/cases/role-edit/snapshots/metadata-batch/Roles/Менеджер.xml b/tests/skills/cases/role-edit/snapshots/metadata-batch/Roles/Менеджер.xml new file mode 100644 index 000000000..7eb8be03b --- /dev/null +++ b/tests/skills/cases/role-edit/snapshots/metadata-batch/Roles/Менеджер.xml @@ -0,0 +1,15 @@ + + + + + Менеджер + + + ru + Менеджер продаж + + + Комментарий роли + + + \ No newline at end of file diff --git a/tests/skills/cases/role-edit/snapshots/metadata-batch/Roles/Менеджер/Ext/Rights.xml b/tests/skills/cases/role-edit/snapshots/metadata-batch/Roles/Менеджер/Ext/Rights.xml new file mode 100644 index 000000000..3d7a6b6fd --- /dev/null +++ b/tests/skills/cases/role-edit/snapshots/metadata-batch/Roles/Менеджер/Ext/Rights.xml @@ -0,0 +1,92 @@ + + + false + true + false + + Catalog.Товары + + Read + true + + + View + true + + + InputByString + true + + + + Document.Заказ + + Read + true + + + Insert + true + + + Update + true + + + Delete + true + + + Posting + true + + + UndoPosting + true + + + View + true + + + InteractiveInsert + true + + + Edit + true + + + InteractiveSetDeletionMark + true + + + InteractiveClearDeletionMark + true + + + InteractivePosting + true + + + InteractivePostingRegular + true + + + InteractiveUndoPosting + true + + + InteractiveChangeOfPosted + true + + + InputByString + true + + + + ДляОбъекта(Мод) + ГДЕ Организация = &ТекОрг + + \ No newline at end of file diff --git a/tests/skills/cases/role-edit/snapshots/modify-property-then-add/Catalogs/Товары.xml b/tests/skills/cases/role-edit/snapshots/modify-property-then-add/Catalogs/Товары.xml new file mode 100644 index 000000000..292de84c4 --- /dev/null +++ b/tests/skills/cases/role-edit/snapshots/modify-property-then-add/Catalogs/Товары.xml @@ -0,0 +1,137 @@ + + + + + + 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 + + + + + Цена + + + ru + Цена + + + + + xs:decimal + + 15 + 2 + Any + + + false + + + + false + + false + false + + + false + 0 + DontCheck + Items + + + Auto + Auto + + + Auto + ForItem + DontIndex + Use + Use + + + + + \ No newline at end of file diff --git a/tests/skills/cases/role-edit/snapshots/modify-property-then-add/Catalogs/Товары/Ext/ObjectModule.bsl b/tests/skills/cases/role-edit/snapshots/modify-property-then-add/Catalogs/Товары/Ext/ObjectModule.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/tests/skills/cases/role-edit/snapshots/modify-property-then-add/Configuration.xml b/tests/skills/cases/role-edit/snapshots/modify-property-then-add/Configuration.xml new file mode 100644 index 000000000..880e20b87 --- /dev/null +++ b/tests/skills/cases/role-edit/snapshots/modify-property-then-add/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 + + + + + + Normal + + + Language.Русский + + + + + + Managed + NotAutoFree + DontUse + DontUse + TaxiEnableVersion8_2 + DontUse + Version8_3_24 + + + + Русский + Менеджер + Товары + Заказ + Загрузка + Цены + + + \ No newline at end of file diff --git a/tests/skills/cases/role-edit/snapshots/modify-property-then-add/DataProcessors/Загрузка.xml b/tests/skills/cases/role-edit/snapshots/modify-property-then-add/DataProcessors/Загрузка.xml new file mode 100644 index 000000000..fa5caaf26 --- /dev/null +++ b/tests/skills/cases/role-edit/snapshots/modify-property-then-add/DataProcessors/Загрузка.xml @@ -0,0 +1,32 @@ + + + + + + UUID-002 + UUID-003 + + + UUID-004 + UUID-005 + + + + Загрузка + + + ru + Загрузка + + + + true + + + false + + + + + + \ No newline at end of file diff --git a/tests/skills/cases/role-edit/snapshots/modify-property-then-add/DataProcessors/Загрузка/Ext/ManagerModule.bsl b/tests/skills/cases/role-edit/snapshots/modify-property-then-add/DataProcessors/Загрузка/Ext/ManagerModule.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/tests/skills/cases/role-edit/snapshots/modify-property-then-add/DataProcessors/Загрузка/Ext/ObjectModule.bsl b/tests/skills/cases/role-edit/snapshots/modify-property-then-add/DataProcessors/Загрузка/Ext/ObjectModule.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/tests/skills/cases/role-edit/snapshots/modify-property-then-add/Documents/Заказ.xml b/tests/skills/cases/role-edit/snapshots/modify-property-then-add/Documents/Заказ.xml new file mode 100644 index 000000000..32fa05878 --- /dev/null +++ b/tests/skills/cases/role-edit/snapshots/modify-property-then-add/Documents/Заказ.xml @@ -0,0 +1,82 @@ + + + + + + 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 + + + + + + + Allow + Deny + AutoDelete + WriteSelected + AutoFill + + true + true + false + + Managed + Use + + + + + + Auto + DontUse + false + false + + + + \ No newline at end of file diff --git a/tests/skills/cases/role-edit/snapshots/modify-property-then-add/Documents/Заказ/Ext/ObjectModule.bsl b/tests/skills/cases/role-edit/snapshots/modify-property-then-add/Documents/Заказ/Ext/ObjectModule.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/tests/skills/cases/role-edit/snapshots/modify-property-then-add/Ext/ClientApplicationInterface.xml b/tests/skills/cases/role-edit/snapshots/modify-property-then-add/Ext/ClientApplicationInterface.xml new file mode 100644 index 000000000..3c1161b2d --- /dev/null +++ b/tests/skills/cases/role-edit/snapshots/modify-property-then-add/Ext/ClientApplicationInterface.xml @@ -0,0 +1,18 @@ + + + + + UUID-002 + + + + + UUID-004 + + + + + + + + \ No newline at end of file diff --git a/tests/skills/cases/role-edit/snapshots/modify-property-then-add/InformationRegisters/Цены.xml b/tests/skills/cases/role-edit/snapshots/modify-property-then-add/InformationRegisters/Цены.xml new file mode 100644 index 000000000..092bf1d11 --- /dev/null +++ b/tests/skills/cases/role-edit/snapshots/modify-property-then-add/InformationRegisters/Цены.xml @@ -0,0 +1,261 @@ + + + + + + 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 + Товар + + + + + cfg:CatalogRef.Товары + + false + + + + false + + false + false + + + false + + DontCheck + Items + + + Auto + Auto + + + Auto + false + false + false + DontIndex + Use + Use + + + + + \ No newline at end of file diff --git a/tests/skills/cases/role-edit/snapshots/modify-property-then-add/InformationRegisters/Цены/Ext/RecordSetModule.bsl b/tests/skills/cases/role-edit/snapshots/modify-property-then-add/InformationRegisters/Цены/Ext/RecordSetModule.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/tests/skills/cases/role-edit/snapshots/modify-property-then-add/Languages/Русский.xml b/tests/skills/cases/role-edit/snapshots/modify-property-then-add/Languages/Русский.xml new file mode 100644 index 000000000..37c60d786 --- /dev/null +++ b/tests/skills/cases/role-edit/snapshots/modify-property-then-add/Languages/Русский.xml @@ -0,0 +1,16 @@ + + + + + Русский + + + ru + Русский + + + + ru + + + \ No newline at end of file diff --git a/tests/skills/cases/role-edit/snapshots/modify-property-then-add/Roles/Менеджер.xml b/tests/skills/cases/role-edit/snapshots/modify-property-then-add/Roles/Менеджер.xml new file mode 100644 index 000000000..001d4535b --- /dev/null +++ b/tests/skills/cases/role-edit/snapshots/modify-property-then-add/Roles/Менеджер.xml @@ -0,0 +1,15 @@ + + + + + Менеджер + + + ru + Менеджер + + + + + + \ No newline at end of file diff --git a/tests/skills/cases/role-edit/snapshots/modify-property-then-add/Roles/Менеджер/Ext/Rights.xml b/tests/skills/cases/role-edit/snapshots/modify-property-then-add/Roles/Менеджер/Ext/Rights.xml new file mode 100644 index 000000000..d29bbba31 --- /dev/null +++ b/tests/skills/cases/role-edit/snapshots/modify-property-then-add/Roles/Менеджер/Ext/Rights.xml @@ -0,0 +1,92 @@ + + + true + true + false + + Catalog.Товары + + Read + true + + + View + true + + + InputByString + true + + + + Document.Заказ + + Read + true + + + Insert + true + + + Update + true + + + Delete + true + + + Posting + true + + + UndoPosting + true + + + View + true + + + InteractiveInsert + true + + + Edit + true + + + InteractiveSetDeletionMark + true + + + InteractiveClearDeletionMark + true + + + InteractivePosting + true + + + InteractivePostingRegular + true + + + InteractiveUndoPosting + true + + + InteractiveChangeOfPosted + true + + + InputByString + true + + + + ДляОбъекта(Мод) + ГДЕ Организация = &ТекОрг + + \ No newline at end of file diff --git a/tests/skills/check-inline-drift.mjs b/tests/skills/check-inline-drift.mjs index 544d4f179..fd3ab4621 100644 --- a/tests/skills/check-inline-drift.mjs +++ b/tests/skills/check-inline-drift.mjs @@ -411,6 +411,14 @@ const FAMILIES = [ // не должно — ps1: null. // Замыкание прав и фильтр значений по умолчанию: обе роли обязаны считать одинаково, иначе // созданная и отредактированная роль разойдутся между собой и с платформой. + { + name: 'права роли: get_rights_object_uuid', py: 'get_rights_object_uuid', ps1: 'Get-RightsObjectUuid', + variants: [{ id: 'base', authority: 'role-compile', consumers: ['role-edit'] }], + }, + { + name: 'права роли: is_standard_kind', py: 'is_standard_kind', ps1: 'Test-StandardKind', + variants: [{ id: 'base', authority: 'role-compile', consumers: ['role-edit'] }], + }, { name: 'права роли: close_rights_dependencies', py: 'close_rights_dependencies', ps1: 'Close-RightsDependencies', variants: [{ id: 'base', authority: 'role-compile', consumers: ['role-edit'] }],