mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-09-18 15:45:52 +03:00
feat(role-compile): набор прав замыкается по зависимостям
Платформа при загрузке сама доводит набор до полного: выдал Edit — получил ещё Read, Update и View, выдал View у обработки — получил Use. Навык писал ровно заданное, поэтому файл роли и база расходились сразу после первой загрузки. Таблица снята с платформы: по одной роли на каждое право, 209 + 43 роли в двух прогонах, ни одного отвергнутого (debug/role-edit). Зависимости оказались общими для типов, исключений четыре — обработка и отчёт держатся на Use, план счетов не тянет Read под историю данных, регистр сведений — короче на одно звено. Права, недопустимые для типа, отсекаются, у вложенных объектов зависимостей нет. Права конфигурации версионные: до формата 2.19 платформа взводила весь блок режимов окна с любым правом, с 2.19 (8.3.26) перестала. Граница измерена на шести платформах, 8.3.20 … 8.5.1. Дописанное перечисляется в выводе — права выдаются не молча. Проверка: выход обоих портов после загрузки и выгрузки совпал байт в байт. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FGkXwoXTuafcu1SXMsauFq
This commit is contained in:
co-authored by
Claude Opus 5
parent
bbc3be55a5
commit
ce37fe6e53
@@ -60,6 +60,12 @@ powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/role-compile.ps1" -
|
|||||||
|
|
||||||
`@` обязателен в shorthand. В объектной форме — `"preset": "view"` без `@`.
|
`@` обязателен в shorthand. В объектной форме — `"preset": "view"` без `@`.
|
||||||
|
|
||||||
|
### Зависимые права
|
||||||
|
|
||||||
|
Набор прав дополняется до замыкания: `Edit` тянет `Read`, `Update`, `View`; интерактивные права —
|
||||||
|
свой базовый набор; `View` у обработки и отчёта — `Use`. Дописанное перечисляется в выводе. Так же
|
||||||
|
поступает сама платформа при загрузке, поэтому без этого файл роли и база расходятся.
|
||||||
|
|
||||||
### Сервисы
|
### Сервисы
|
||||||
|
|
||||||
Платформа проверяет право на **вложенном объекте** сервиса — методе шаблона URL, операции, канале. Права на сервис целиком не существует.
|
Платформа проверяет право на **вложенном объекте** сервиса — методе шаблона URL, операции, канале. Права на сервис целиком не существует.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# role-compile v1.38 — Compile 1C role from JSON
|
# role-compile v1.39 — Compile 1C role from JSON
|
||||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||||
[CmdletBinding(PositionalBinding=$false)]
|
[CmdletBinding(PositionalBinding=$false)]
|
||||||
param(
|
param(
|
||||||
@@ -833,6 +833,112 @@ function Sort-ObjectsByUuid {
|
|||||||
return $result
|
return $result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# --- 4b. Зависимости прав (замерено на платформе) ---
|
||||||
|
# Платформа при загрузке сама доводит набор до замыкания: выдал Edit — получил ещё
|
||||||
|
# Read, Update и View. Пишем замыкание сразу, иначе файл и база расходятся.
|
||||||
|
# Таблица общая для типов; исключения — там, где у типа своя механика (обработка и отчёт
|
||||||
|
# держатся на Use, план счетов не тянет Read под историю данных).
|
||||||
|
$script:rightDeps = @{
|
||||||
|
"Delete" = @("Read")
|
||||||
|
"Edit" = @("Read","Update","View")
|
||||||
|
"EditDataHistoryVersionComment" = @("Read","ReadDataHistory","UpdateDataHistoryVersionComment","View")
|
||||||
|
"Execute" = @("Read","Update")
|
||||||
|
"InputByString" = @("Read","View")
|
||||||
|
"Insert" = @("Read")
|
||||||
|
"InteractiveActivate" = @("Read","Update")
|
||||||
|
"InteractiveChangeOfPosted" = @("Edit","Read","Update","View")
|
||||||
|
"InteractiveClearDeletionMark" = @("Edit","Read","Update","View")
|
||||||
|
"InteractiveClearDeletionMarkPredefinedData" = @("Edit","InteractiveClearDeletionMark","Read","Update","View")
|
||||||
|
"InteractiveDelete" = @("Delete","Edit","Read","Update","View")
|
||||||
|
"InteractiveDeleteMarked" = @("Delete","Edit","Read","Update","View")
|
||||||
|
"InteractiveDeleteMarkedPredefinedData" = @("Delete","Edit","InteractiveDeleteMarked","Read","Update","View")
|
||||||
|
"InteractiveDeletePredefinedData" = @("Delete","Edit","InteractiveDelete","Read","Update","View")
|
||||||
|
"InteractiveExecute" = @("Execute","Read","Update")
|
||||||
|
"InteractiveInsert" = @("Edit","Insert","Read","Update","View")
|
||||||
|
"InteractivePosting" = @("Edit","Posting","Read","Update","View")
|
||||||
|
"InteractivePostingRegular" = @("Edit","InteractivePosting","Posting","Read","Update","View")
|
||||||
|
"InteractiveSetDeletionMark" = @("Edit","Read","Update","View")
|
||||||
|
"InteractiveSetDeletionMarkPredefinedData" = @("Edit","InteractiveSetDeletionMark","Read","Update","View")
|
||||||
|
"InteractiveStart" = @("Read","Start","Update")
|
||||||
|
"InteractiveUndoPosting" = @("Edit","Read","UndoPosting","Update","View")
|
||||||
|
"Posting" = @("Read","Update")
|
||||||
|
"ReadDataHistory" = @("Read")
|
||||||
|
"ReadDataHistoryOfMissingData" = @("Read","ReadDataHistory")
|
||||||
|
"Start" = @("Read","Update")
|
||||||
|
"SwitchToDataHistoryVersion" = @("Read","View")
|
||||||
|
"UndoPosting" = @("Read","Update")
|
||||||
|
"Update" = @("Read")
|
||||||
|
"UpdateDataHistory" = @("Read","ReadDataHistory")
|
||||||
|
"UpdateDataHistoryOfMissingData" = @("Read","ReadDataHistory","ReadDataHistoryOfMissingData","UpdateDataHistory")
|
||||||
|
"UpdateDataHistoryVersionComment" = @("Read","ReadDataHistory")
|
||||||
|
"View" = @("Read")
|
||||||
|
"ViewDataHistory" = @("Read","ReadDataHistory","View")
|
||||||
|
}
|
||||||
|
|
||||||
|
$script:rightDepsByType = @{
|
||||||
|
"ChartOfAccounts" = @{
|
||||||
|
"ReadDataHistory" = @()
|
||||||
|
"ReadDataHistoryOfMissingData" = @("ReadDataHistory")
|
||||||
|
"UpdateDataHistory" = @("ReadDataHistory")
|
||||||
|
"UpdateDataHistoryOfMissingData" = @("ReadDataHistory","ReadDataHistoryOfMissingData","UpdateDataHistory")
|
||||||
|
"UpdateDataHistoryVersionComment" = @("ReadDataHistory")
|
||||||
|
}
|
||||||
|
"DataProcessor" = @{
|
||||||
|
"View" = @("Use")
|
||||||
|
}
|
||||||
|
"InformationRegister" = @{
|
||||||
|
"UpdateDataHistoryOfMissingData" = @("Read","ReadDataHistory","UpdateDataHistory")
|
||||||
|
}
|
||||||
|
"Report" = @{
|
||||||
|
"View" = @("Use")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$script:configurationLegacyDeps = @("AnalyticsSystemClient","MainWindowModeEmbeddedWorkplace","MainWindowModeFullscreenWorkplace","MainWindowModeKiosk","MainWindowModeNormal","MainWindowModeWorkplace")
|
||||||
|
|
||||||
|
# Права конфигурации: до формата 2.19 платформа взводила весь блок режимов окна вместе с
|
||||||
|
# любым правом, с 2.19 (8.3.26) перестала. Сами права допустимы и там, и там.
|
||||||
|
$script:configurationLegacyRank = 218
|
||||||
|
|
||||||
|
# Замыкание набора прав объекта. Возвращает @{ Rights = <итог>; Added = <что дописано> }.
|
||||||
|
function Close-RightsDependencies {
|
||||||
|
param([string]$objName, $rights, [int]$formatRank)
|
||||||
|
$parts = $objName -split '\.'
|
||||||
|
# У вложенных объектов (реквизит, ТЧ, измерение) зависимостей нет — платформа их не трогает.
|
||||||
|
if ($parts.Count -ge 3) { return @{ Rights = $rights; Added = @() } }
|
||||||
|
$objectType = $parts[0]
|
||||||
|
$allowed = $script:knownRights[$objectType]
|
||||||
|
if (-not $allowed) { return @{ Rights = $rights; Added = @() } }
|
||||||
|
$have = [ordered]@{}
|
||||||
|
foreach ($r in $rights) { if (-not $have.Contains($r.Name)) { $have[$r.Name] = $r } }
|
||||||
|
$byType = $script:rightDepsByType[$objectType]
|
||||||
|
$added = @()
|
||||||
|
$queue = @($have.Keys)
|
||||||
|
while ($queue.Count -gt 0) {
|
||||||
|
$name = $queue[0]
|
||||||
|
$queue = @($queue | Select-Object -Skip 1)
|
||||||
|
$need = if ($byType -and $byType.Contains($name)) { $byType[$name] } else { $script:rightDeps[$name] }
|
||||||
|
if (-not $need) { continue }
|
||||||
|
foreach ($dep in $need) {
|
||||||
|
if ($have.Contains($dep)) { continue }
|
||||||
|
if ($allowed -notcontains $dep) { continue }
|
||||||
|
$have[$dep] = @{ Name = $dep; Value = "true"; Condition = $null }
|
||||||
|
$added += $dep
|
||||||
|
$queue += $dep
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($objectType -eq 'Configuration' -and $formatRank -le $script:configurationLegacyRank -and $have.Count -gt 0) {
|
||||||
|
foreach ($dep in $script:configurationLegacyDeps) {
|
||||||
|
if ($have.Contains($dep)) { continue }
|
||||||
|
$have[$dep] = @{ Name = $dep; Value = "true"; Condition = $null }
|
||||||
|
$added += $dep
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$result = @()
|
||||||
|
foreach ($k in $have.Keys) { $result += ,$have[$k] }
|
||||||
|
return @{ Rights = $result; Added = $added }
|
||||||
|
}
|
||||||
|
|
||||||
# --- 5. Helpers ---
|
# --- 5. Helpers ---
|
||||||
|
|
||||||
function Get-ObjectType {
|
function Get-ObjectType {
|
||||||
@@ -1332,6 +1438,15 @@ X "`t<setForNewObjects>$sfno</setForNewObjects>"
|
|||||||
X "`t<setForAttributesByDefault>$sfab</setForAttributesByDefault>"
|
X "`t<setForAttributesByDefault>$sfab</setForAttributesByDefault>"
|
||||||
X "`t<independentRightsOfChildObjects>$irco</independentRightsOfChildObjects>"
|
X "`t<independentRightsOfChildObjects>$irco</independentRightsOfChildObjects>"
|
||||||
|
|
||||||
|
# Замыкание зависимостей: платформа при загрузке всё равно доведёт набор до полного,
|
||||||
|
# и файл разошёлся бы с базой. Дописанное показываем — права выдаются не молча.
|
||||||
|
$closureNotes = @()
|
||||||
|
foreach ($o in $parsedObjects) {
|
||||||
|
$closed = Close-RightsDependencies -objName $o.Name -rights $o.Rights -formatRank (Get-FormatRank $formatVersion)
|
||||||
|
$o.Rights = @($closed.Rights)
|
||||||
|
if ($closed.Added.Count -gt 0) { $closureNotes += " $($o.Name): по зависимости добавлено — $($closed.Added -join ', ')" }
|
||||||
|
}
|
||||||
|
|
||||||
# Порядок как у платформы: узлы по uuid объекта, права — по канону типа. Иначе первая же
|
# Порядок как у платформы: узлы по uuid объекта, права — по канону типа. Иначе первая же
|
||||||
# выгрузка из Конфигуратора переставит их и даст диф, которого никто не делал.
|
# выгрузка из Конфигуратора переставит их и даст диф, которого никто не делал.
|
||||||
$parsedObjects = @(Sort-ObjectsByUuid -objects $parsedObjects -configRoot $resolvedOutputDir)
|
$parsedObjects = @(Sort-ObjectsByUuid -objects $parsedObjects -configRoot $resolvedOutputDir)
|
||||||
@@ -1606,6 +1721,7 @@ Write-Host " UUID: $uuid"
|
|||||||
Write-Host " Metadata: $metadataPath"
|
Write-Host " Metadata: $metadataPath"
|
||||||
Write-Host " Rights: $rightsPath"
|
Write-Host " Rights: $rightsPath"
|
||||||
Write-Host " Objects: $($parsedObjects.Count), Rights: $totalRights, Templates: $templateCount"
|
Write-Host " Objects: $($parsedObjects.Count), Rights: $totalRights, Templates: $templateCount"
|
||||||
|
foreach ($note in $closureNotes) { Write-Host $note }
|
||||||
switch ($regResult) {
|
switch ($regResult) {
|
||||||
"added" { Write-Host " Configuration.xml: <Role>$roleName</Role> added to ChildObjects" }
|
"added" { Write-Host " Configuration.xml: <Role>$roleName</Role> added to ChildObjects" }
|
||||||
"already" { Write-Host " Configuration.xml: <Role>$roleName</Role> already registered" }
|
"already" { Write-Host " Configuration.xml: <Role>$roleName</Role> already registered" }
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
# role-compile v1.38 — Compile 1C role from JSON
|
# role-compile v1.39 — Compile 1C role from JSON
|
||||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||||
import argparse
|
import argparse
|
||||||
import json
|
import json
|
||||||
@@ -771,6 +771,110 @@ def get_nested_rights(object_type, kind):
|
|||||||
return NESTED_KIND_RIGHTS.get(kind)
|
return NESTED_KIND_RIGHTS.get(kind)
|
||||||
|
|
||||||
|
|
||||||
|
# --- Зависимости прав (замерено на платформе) ---
|
||||||
|
# Платформа при загрузке сама доводит набор до замыкания: выдал Edit — получил ещё
|
||||||
|
# Read, Update и View. Пишем замыкание сразу, иначе файл и база расходятся.
|
||||||
|
# Таблица общая для типов; исключения — там, где у типа своя механика (обработка и отчёт
|
||||||
|
# держатся на Use, план счетов не тянет Read под историю данных).
|
||||||
|
RIGHT_DEPS = {
|
||||||
|
"Delete": ["Read"],
|
||||||
|
"Edit": ["Read", "Update", "View"],
|
||||||
|
"EditDataHistoryVersionComment": ["Read", "ReadDataHistory", "UpdateDataHistoryVersionComment", "View"],
|
||||||
|
"Execute": ["Read", "Update"],
|
||||||
|
"InputByString": ["Read", "View"],
|
||||||
|
"Insert": ["Read"],
|
||||||
|
"InteractiveActivate": ["Read", "Update"],
|
||||||
|
"InteractiveChangeOfPosted": ["Edit", "Read", "Update", "View"],
|
||||||
|
"InteractiveClearDeletionMark": ["Edit", "Read", "Update", "View"],
|
||||||
|
"InteractiveClearDeletionMarkPredefinedData": ["Edit", "InteractiveClearDeletionMark", "Read", "Update", "View"],
|
||||||
|
"InteractiveDelete": ["Delete", "Edit", "Read", "Update", "View"],
|
||||||
|
"InteractiveDeleteMarked": ["Delete", "Edit", "Read", "Update", "View"],
|
||||||
|
"InteractiveDeleteMarkedPredefinedData": ["Delete", "Edit", "InteractiveDeleteMarked", "Read", "Update", "View"],
|
||||||
|
"InteractiveDeletePredefinedData": ["Delete", "Edit", "InteractiveDelete", "Read", "Update", "View"],
|
||||||
|
"InteractiveExecute": ["Execute", "Read", "Update"],
|
||||||
|
"InteractiveInsert": ["Edit", "Insert", "Read", "Update", "View"],
|
||||||
|
"InteractivePosting": ["Edit", "Posting", "Read", "Update", "View"],
|
||||||
|
"InteractivePostingRegular": ["Edit", "InteractivePosting", "Posting", "Read", "Update", "View"],
|
||||||
|
"InteractiveSetDeletionMark": ["Edit", "Read", "Update", "View"],
|
||||||
|
"InteractiveSetDeletionMarkPredefinedData": ["Edit", "InteractiveSetDeletionMark", "Read", "Update", "View"],
|
||||||
|
"InteractiveStart": ["Read", "Start", "Update"],
|
||||||
|
"InteractiveUndoPosting": ["Edit", "Read", "UndoPosting", "Update", "View"],
|
||||||
|
"Posting": ["Read", "Update"],
|
||||||
|
"ReadDataHistory": ["Read"],
|
||||||
|
"ReadDataHistoryOfMissingData": ["Read", "ReadDataHistory"],
|
||||||
|
"Start": ["Read", "Update"],
|
||||||
|
"SwitchToDataHistoryVersion": ["Read", "View"],
|
||||||
|
"UndoPosting": ["Read", "Update"],
|
||||||
|
"Update": ["Read"],
|
||||||
|
"UpdateDataHistory": ["Read", "ReadDataHistory"],
|
||||||
|
"UpdateDataHistoryOfMissingData": ["Read", "ReadDataHistory", "ReadDataHistoryOfMissingData", "UpdateDataHistory"],
|
||||||
|
"UpdateDataHistoryVersionComment": ["Read", "ReadDataHistory"],
|
||||||
|
"View": ["Read"],
|
||||||
|
"ViewDataHistory": ["Read", "ReadDataHistory", "View"],
|
||||||
|
}
|
||||||
|
|
||||||
|
RIGHT_DEPS_BY_TYPE = {
|
||||||
|
"ChartOfAccounts": {
|
||||||
|
"ReadDataHistory": [],
|
||||||
|
"ReadDataHistoryOfMissingData": ["ReadDataHistory"],
|
||||||
|
"UpdateDataHistory": ["ReadDataHistory"],
|
||||||
|
"UpdateDataHistoryOfMissingData": ["ReadDataHistory", "ReadDataHistoryOfMissingData", "UpdateDataHistory"],
|
||||||
|
"UpdateDataHistoryVersionComment": ["ReadDataHistory"],
|
||||||
|
},
|
||||||
|
"DataProcessor": {
|
||||||
|
"View": ["Use"],
|
||||||
|
},
|
||||||
|
"InformationRegister": {
|
||||||
|
"UpdateDataHistoryOfMissingData": ["Read", "ReadDataHistory", "UpdateDataHistory"],
|
||||||
|
},
|
||||||
|
"Report": {
|
||||||
|
"View": ["Use"],
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
CONFIGURATION_LEGACY_DEPS = ["AnalyticsSystemClient", "MainWindowModeEmbeddedWorkplace", "MainWindowModeFullscreenWorkplace", "MainWindowModeKiosk", "MainWindowModeNormal", "MainWindowModeWorkplace"]
|
||||||
|
|
||||||
|
# Права конфигурации: до формата 2.19 платформа взводила весь блок режимов окна вместе с
|
||||||
|
# любым правом, с 2.19 (8.3.26) перестала. Сами права допустимы и там, и там.
|
||||||
|
CONFIGURATION_LEGACY_RANK = 218
|
||||||
|
|
||||||
|
|
||||||
|
def close_rights_dependencies(object_name, rights, format_rank):
|
||||||
|
"""Замыкание набора прав объекта. Возвращает (итоговые права, что дописано)."""
|
||||||
|
parts = object_name.split('.')
|
||||||
|
# У вложенных объектов (реквизит, ТЧ, измерение) зависимостей нет — платформа их не трогает.
|
||||||
|
if len(parts) >= 3:
|
||||||
|
return rights, []
|
||||||
|
object_type = parts[0]
|
||||||
|
allowed = KNOWN_RIGHTS.get(object_type)
|
||||||
|
if not allowed:
|
||||||
|
return rights, []
|
||||||
|
have = {}
|
||||||
|
for r in rights:
|
||||||
|
have.setdefault(r['Name'], r)
|
||||||
|
by_type = RIGHT_DEPS_BY_TYPE.get(object_type, {})
|
||||||
|
added = []
|
||||||
|
queue = list(have.keys())
|
||||||
|
while queue:
|
||||||
|
name = queue.pop(0)
|
||||||
|
need = by_type[name] if name in by_type else RIGHT_DEPS.get(name)
|
||||||
|
if not need:
|
||||||
|
continue
|
||||||
|
for dep in need:
|
||||||
|
if dep in have or dep not in allowed:
|
||||||
|
continue
|
||||||
|
have[dep] = {'Name': dep, 'Value': 'true', 'Condition': None}
|
||||||
|
added.append(dep)
|
||||||
|
queue.append(dep)
|
||||||
|
if object_type == 'Configuration' and format_rank <= CONFIGURATION_LEGACY_RANK and have:
|
||||||
|
for dep in CONFIGURATION_LEGACY_DEPS:
|
||||||
|
if dep in have:
|
||||||
|
continue
|
||||||
|
have[dep] = {'Name': dep, 'Value': 'true', 'Condition': None}
|
||||||
|
added.append(dep)
|
||||||
|
return list(have.values()), added
|
||||||
|
|
||||||
|
|
||||||
# --- Канонический порядок прав и узлов (замерено на платформе) ---
|
# --- Канонический порядок прав и узлов (замерено на платформе) ---
|
||||||
# Платформа нормализует порядок <right> внутри <object> и порядок самих <object>:
|
# Платформа нормализует порядок <right> внутри <object> и порядок самих <object>:
|
||||||
# права идут в фиксированном для типа порядке, узлы — по uuid объекта метаданных.
|
# права идут в фиксированном для типа порядке, узлы — по uuid объекта метаданных.
|
||||||
@@ -1583,6 +1687,14 @@ def main():
|
|||||||
lines.append(f'\t<setForAttributesByDefault>{sfab}</setForAttributesByDefault>')
|
lines.append(f'\t<setForAttributesByDefault>{sfab}</setForAttributesByDefault>')
|
||||||
lines.append(f'\t<independentRightsOfChildObjects>{irco}</independentRightsOfChildObjects>')
|
lines.append(f'\t<independentRightsOfChildObjects>{irco}</independentRightsOfChildObjects>')
|
||||||
|
|
||||||
|
# Замыкание зависимостей: платформа при загрузке всё равно доведёт набор до полного,
|
||||||
|
# и файл разошёлся бы с базой. Дописанное показываем — права выдаются не молча.
|
||||||
|
closure_notes = []
|
||||||
|
for o in parsed_objects:
|
||||||
|
o['Rights'], added = close_rights_dependencies(o['Name'], o['Rights'], format_rank(format_version))
|
||||||
|
if added:
|
||||||
|
closure_notes.append(f" {o['Name']}: по зависимости добавлено — {', '.join(added)}")
|
||||||
|
|
||||||
# Порядок как у платформы: узлы по uuid объекта, права — по канону типа. Иначе первая же
|
# Порядок как у платформы: узлы по uuid объекта, права — по канону типа. Иначе первая же
|
||||||
# выгрузка из Конфигуратора переставит их и даст диф, которого никто не делал.
|
# выгрузка из Конфигуратора переставит их и даст диф, которого никто не делал.
|
||||||
parsed_objects = sort_objects_by_uuid(parsed_objects, out_dir_resolved)
|
parsed_objects = sort_objects_by_uuid(parsed_objects, out_dir_resolved)
|
||||||
@@ -1658,6 +1770,8 @@ def main():
|
|||||||
print(f" Metadata: {metadata_path}")
|
print(f" Metadata: {metadata_path}")
|
||||||
print(f" Rights: {rights_path}")
|
print(f" Rights: {rights_path}")
|
||||||
print(f" Objects: {len(parsed_objects)}, Rights: {total_rights}, Templates: {template_count}")
|
print(f" Objects: {len(parsed_objects)}, Rights: {total_rights}, Templates: {template_count}")
|
||||||
|
for note in closure_notes:
|
||||||
|
print(note)
|
||||||
if reg_result == 'added':
|
if reg_result == 'added':
|
||||||
print(f" Configuration.xml: <Role>{role_name}</Role> added to ChildObjects")
|
print(f" Configuration.xml: <Role>{role_name}</Role> added to ChildObjects")
|
||||||
elif reg_result == 'already':
|
elif reg_result == 'already':
|
||||||
|
|||||||
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"name": "Набор прав замыкается по зависимостям, как это сделала бы платформа",
|
||||||
|
"setup": "fixture:view-preset-fx",
|
||||||
|
"input": {
|
||||||
|
"name": "ЗамыканиеПрав",
|
||||||
|
"synonym": "Замыкание прав",
|
||||||
|
"objects": [
|
||||||
|
"Catalog.Номенклатура: Edit",
|
||||||
|
"DataProcessor.Загрузка: View"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"validatePath": "Roles/ЗамыканиеПрав",
|
||||||
|
"expect": {
|
||||||
|
"files": [
|
||||||
|
"Roles/ЗамыканиеПрав/Ext/Rights.xml"
|
||||||
|
],
|
||||||
|
"stdoutContains": [
|
||||||
|
"Catalog.Номенклатура: по зависимости добавлено — Read, Update, View",
|
||||||
|
"DataProcessor.Загрузка: по зависимости добавлено — Use"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
+91
@@ -0,0 +1,91 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.17">
|
||||||
|
<Catalog uuid="UUID-001">
|
||||||
|
<InternalInfo>
|
||||||
|
<xr:GeneratedType name="CatalogObject.Номенклатура" category="Object">
|
||||||
|
<xr:TypeId>UUID-002</xr:TypeId>
|
||||||
|
<xr:ValueId>UUID-003</xr:ValueId>
|
||||||
|
</xr:GeneratedType>
|
||||||
|
<xr:GeneratedType name="CatalogRef.Номенклатура" category="Ref">
|
||||||
|
<xr:TypeId>UUID-004</xr:TypeId>
|
||||||
|
<xr:ValueId>UUID-005</xr:ValueId>
|
||||||
|
</xr:GeneratedType>
|
||||||
|
<xr:GeneratedType name="CatalogSelection.Номенклатура" category="Selection">
|
||||||
|
<xr:TypeId>UUID-006</xr:TypeId>
|
||||||
|
<xr:ValueId>UUID-007</xr:ValueId>
|
||||||
|
</xr:GeneratedType>
|
||||||
|
<xr:GeneratedType name="CatalogList.Номенклатура" category="List">
|
||||||
|
<xr:TypeId>UUID-008</xr:TypeId>
|
||||||
|
<xr:ValueId>UUID-009</xr:ValueId>
|
||||||
|
</xr:GeneratedType>
|
||||||
|
<xr:GeneratedType name="CatalogManager.Номенклатура" category="Manager">
|
||||||
|
<xr:TypeId>UUID-010</xr:TypeId>
|
||||||
|
<xr:ValueId>UUID-011</xr:ValueId>
|
||||||
|
</xr:GeneratedType>
|
||||||
|
</InternalInfo>
|
||||||
|
<Properties>
|
||||||
|
<Name>Номенклатура</Name>
|
||||||
|
<Synonym>
|
||||||
|
<v8:item>
|
||||||
|
<v8:lang>ru</v8:lang>
|
||||||
|
<v8:content>Номенклатура</v8:content>
|
||||||
|
</v8:item>
|
||||||
|
</Synonym>
|
||||||
|
<Comment/>
|
||||||
|
<Hierarchical>false</Hierarchical>
|
||||||
|
<HierarchyType>HierarchyFoldersAndItems</HierarchyType>
|
||||||
|
<LimitLevelCount>false</LimitLevelCount>
|
||||||
|
<LevelCount>2</LevelCount>
|
||||||
|
<FoldersOnTop>true</FoldersOnTop>
|
||||||
|
<UseStandardCommands>true</UseStandardCommands>
|
||||||
|
<Owners/>
|
||||||
|
<SubordinationUse>ToItems</SubordinationUse>
|
||||||
|
<CodeLength>9</CodeLength>
|
||||||
|
<DescriptionLength>25</DescriptionLength>
|
||||||
|
<CodeType>String</CodeType>
|
||||||
|
<CodeAllowedLength>Variable</CodeAllowedLength>
|
||||||
|
<CodeSeries>WholeCatalog</CodeSeries>
|
||||||
|
<CheckUnique>false</CheckUnique>
|
||||||
|
<Autonumbering>true</Autonumbering>
|
||||||
|
<DefaultPresentation>AsDescription</DefaultPresentation>
|
||||||
|
<Characteristics/>
|
||||||
|
<PredefinedDataUpdate>Auto</PredefinedDataUpdate>
|
||||||
|
<EditType>InDialog</EditType>
|
||||||
|
<QuickChoice>false</QuickChoice>
|
||||||
|
<ChoiceMode>BothWays</ChoiceMode>
|
||||||
|
<InputByString>
|
||||||
|
<xr:Field>Catalog.Номенклатура.StandardAttribute.Description</xr:Field>
|
||||||
|
<xr:Field>Catalog.Номенклатура.StandardAttribute.Code</xr:Field>
|
||||||
|
</InputByString>
|
||||||
|
<SearchStringModeOnInputByString>Begin</SearchStringModeOnInputByString>
|
||||||
|
<FullTextSearchOnInputByString>DontUse</FullTextSearchOnInputByString>
|
||||||
|
<ChoiceDataGetModeOnInputByString>Directly</ChoiceDataGetModeOnInputByString>
|
||||||
|
<DefaultObjectForm/>
|
||||||
|
<DefaultFolderForm/>
|
||||||
|
<DefaultListForm/>
|
||||||
|
<DefaultChoiceForm/>
|
||||||
|
<DefaultFolderChoiceForm/>
|
||||||
|
<AuxiliaryObjectForm/>
|
||||||
|
<AuxiliaryFolderForm/>
|
||||||
|
<AuxiliaryListForm/>
|
||||||
|
<AuxiliaryChoiceForm/>
|
||||||
|
<AuxiliaryFolderChoiceForm/>
|
||||||
|
<IncludeHelpInContents>false</IncludeHelpInContents>
|
||||||
|
<BasedOn/>
|
||||||
|
<DataLockFields/>
|
||||||
|
<DataLockControlMode>Managed</DataLockControlMode>
|
||||||
|
<FullTextSearch>Use</FullTextSearch>
|
||||||
|
<ObjectPresentation/>
|
||||||
|
<ExtendedObjectPresentation/>
|
||||||
|
<ListPresentation/>
|
||||||
|
<ExtendedListPresentation/>
|
||||||
|
<Explanation/>
|
||||||
|
<CreateOnInput>Use</CreateOnInput>
|
||||||
|
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||||
|
<DataHistory>DontUse</DataHistory>
|
||||||
|
<UpdateDataHistoryImmediatelyAfterWrite>false</UpdateDataHistoryImmediatelyAfterWrite>
|
||||||
|
<ExecuteAfterWriteDataHistoryVersionProcessing>false</ExecuteAfterWriteDataHistoryVersionProcessing>
|
||||||
|
</Properties>
|
||||||
|
<ChildObjects/>
|
||||||
|
</Catalog>
|
||||||
|
</MetaDataObject>
|
||||||
@@ -0,0 +1,254 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.17">
|
||||||
|
<Configuration uuid="UUID-001">
|
||||||
|
<InternalInfo>
|
||||||
|
<xr:ContainedObject>
|
||||||
|
<xr:ClassId>UUID-002</xr:ClassId>
|
||||||
|
<xr:ObjectId>UUID-003</xr:ObjectId>
|
||||||
|
</xr:ContainedObject>
|
||||||
|
<xr:ContainedObject>
|
||||||
|
<xr:ClassId>UUID-004</xr:ClassId>
|
||||||
|
<xr:ObjectId>UUID-005</xr:ObjectId>
|
||||||
|
</xr:ContainedObject>
|
||||||
|
<xr:ContainedObject>
|
||||||
|
<xr:ClassId>UUID-006</xr:ClassId>
|
||||||
|
<xr:ObjectId>UUID-007</xr:ObjectId>
|
||||||
|
</xr:ContainedObject>
|
||||||
|
<xr:ContainedObject>
|
||||||
|
<xr:ClassId>UUID-008</xr:ClassId>
|
||||||
|
<xr:ObjectId>UUID-009</xr:ObjectId>
|
||||||
|
</xr:ContainedObject>
|
||||||
|
<xr:ContainedObject>
|
||||||
|
<xr:ClassId>UUID-010</xr:ClassId>
|
||||||
|
<xr:ObjectId>UUID-011</xr:ObjectId>
|
||||||
|
</xr:ContainedObject>
|
||||||
|
<xr:ContainedObject>
|
||||||
|
<xr:ClassId>UUID-012</xr:ClassId>
|
||||||
|
<xr:ObjectId>UUID-013</xr:ObjectId>
|
||||||
|
</xr:ContainedObject>
|
||||||
|
<xr:ContainedObject>
|
||||||
|
<xr:ClassId>UUID-014</xr:ClassId>
|
||||||
|
<xr:ObjectId>UUID-015</xr:ObjectId>
|
||||||
|
</xr:ContainedObject>
|
||||||
|
</InternalInfo>
|
||||||
|
<Properties>
|
||||||
|
<Name>TestConfig</Name>
|
||||||
|
<Synonym>
|
||||||
|
<v8:item>
|
||||||
|
<v8:lang>ru</v8:lang>
|
||||||
|
<v8:content>TestConfig</v8:content>
|
||||||
|
</v8:item>
|
||||||
|
</Synonym>
|
||||||
|
<Comment/>
|
||||||
|
<NamePrefix/>
|
||||||
|
<ConfigurationExtensionCompatibilityMode>Version8_3_24</ConfigurationExtensionCompatibilityMode>
|
||||||
|
<DefaultRunMode>ManagedApplication</DefaultRunMode>
|
||||||
|
<UsePurposes>
|
||||||
|
<v8:Value xsi:type="app:ApplicationUsePurpose">PlatformApplication</v8:Value>
|
||||||
|
</UsePurposes>
|
||||||
|
<ScriptVariant>Russian</ScriptVariant>
|
||||||
|
<DefaultRoles/>
|
||||||
|
<Vendor/>
|
||||||
|
<Version/>
|
||||||
|
<UpdateCatalogAddress/>
|
||||||
|
<IncludeHelpInContents>false</IncludeHelpInContents>
|
||||||
|
<UseManagedFormInOrdinaryApplication>false</UseManagedFormInOrdinaryApplication>
|
||||||
|
<UseOrdinaryFormInManagedApplication>false</UseOrdinaryFormInManagedApplication>
|
||||||
|
<AdditionalFullTextSearchDictionaries/>
|
||||||
|
<CommonSettingsStorage/>
|
||||||
|
<ReportsUserSettingsStorage/>
|
||||||
|
<ReportsVariantsStorage/>
|
||||||
|
<FormDataSettingsStorage/>
|
||||||
|
<DynamicListsUserSettingsStorage/>
|
||||||
|
<URLExternalDataStorage/>
|
||||||
|
<Content/>
|
||||||
|
<DefaultReportForm/>
|
||||||
|
<DefaultReportVariantForm/>
|
||||||
|
<DefaultReportSettingsForm/>
|
||||||
|
<DefaultReportAppearanceTemplate/>
|
||||||
|
<DefaultDynamicListSettingsForm/>
|
||||||
|
<DefaultSearchForm/>
|
||||||
|
<DefaultDataHistoryChangeHistoryForm/>
|
||||||
|
<DefaultDataHistoryVersionDataForm/>
|
||||||
|
<DefaultDataHistoryVersionDifferencesForm/>
|
||||||
|
<DefaultCollaborationSystemUsersChoiceForm/>
|
||||||
|
<RequiredMobileApplicationPermissions/>
|
||||||
|
<UsedMobileApplicationFunctionalities>
|
||||||
|
<app:functionality>
|
||||||
|
<app:functionality>Biometrics</app:functionality>
|
||||||
|
<app:use>true</app:use>
|
||||||
|
</app:functionality>
|
||||||
|
<app:functionality>
|
||||||
|
<app:functionality>Location</app:functionality>
|
||||||
|
<app:use>false</app:use>
|
||||||
|
</app:functionality>
|
||||||
|
<app:functionality>
|
||||||
|
<app:functionality>BackgroundLocation</app:functionality>
|
||||||
|
<app:use>false</app:use>
|
||||||
|
</app:functionality>
|
||||||
|
<app:functionality>
|
||||||
|
<app:functionality>BluetoothPrinters</app:functionality>
|
||||||
|
<app:use>false</app:use>
|
||||||
|
</app:functionality>
|
||||||
|
<app:functionality>
|
||||||
|
<app:functionality>WiFiPrinters</app:functionality>
|
||||||
|
<app:use>false</app:use>
|
||||||
|
</app:functionality>
|
||||||
|
<app:functionality>
|
||||||
|
<app:functionality>Contacts</app:functionality>
|
||||||
|
<app:use>false</app:use>
|
||||||
|
</app:functionality>
|
||||||
|
<app:functionality>
|
||||||
|
<app:functionality>Calendars</app:functionality>
|
||||||
|
<app:use>false</app:use>
|
||||||
|
</app:functionality>
|
||||||
|
<app:functionality>
|
||||||
|
<app:functionality>PushNotifications</app:functionality>
|
||||||
|
<app:use>false</app:use>
|
||||||
|
</app:functionality>
|
||||||
|
<app:functionality>
|
||||||
|
<app:functionality>LocalNotifications</app:functionality>
|
||||||
|
<app:use>false</app:use>
|
||||||
|
</app:functionality>
|
||||||
|
<app:functionality>
|
||||||
|
<app:functionality>InAppPurchases</app:functionality>
|
||||||
|
<app:use>false</app:use>
|
||||||
|
</app:functionality>
|
||||||
|
<app:functionality>
|
||||||
|
<app:functionality>PersonalComputerFileExchange</app:functionality>
|
||||||
|
<app:use>false</app:use>
|
||||||
|
</app:functionality>
|
||||||
|
<app:functionality>
|
||||||
|
<app:functionality>Ads</app:functionality>
|
||||||
|
<app:use>false</app:use>
|
||||||
|
</app:functionality>
|
||||||
|
<app:functionality>
|
||||||
|
<app:functionality>NumberDialing</app:functionality>
|
||||||
|
<app:use>false</app:use>
|
||||||
|
</app:functionality>
|
||||||
|
<app:functionality>
|
||||||
|
<app:functionality>CallProcessing</app:functionality>
|
||||||
|
<app:use>false</app:use>
|
||||||
|
</app:functionality>
|
||||||
|
<app:functionality>
|
||||||
|
<app:functionality>CallLog</app:functionality>
|
||||||
|
<app:use>false</app:use>
|
||||||
|
</app:functionality>
|
||||||
|
<app:functionality>
|
||||||
|
<app:functionality>AutoSendSMS</app:functionality>
|
||||||
|
<app:use>false</app:use>
|
||||||
|
</app:functionality>
|
||||||
|
<app:functionality>
|
||||||
|
<app:functionality>ReceiveSMS</app:functionality>
|
||||||
|
<app:use>false</app:use>
|
||||||
|
</app:functionality>
|
||||||
|
<app:functionality>
|
||||||
|
<app:functionality>SMSLog</app:functionality>
|
||||||
|
<app:use>false</app:use>
|
||||||
|
</app:functionality>
|
||||||
|
<app:functionality>
|
||||||
|
<app:functionality>Camera</app:functionality>
|
||||||
|
<app:use>false</app:use>
|
||||||
|
</app:functionality>
|
||||||
|
<app:functionality>
|
||||||
|
<app:functionality>Microphone</app:functionality>
|
||||||
|
<app:use>false</app:use>
|
||||||
|
</app:functionality>
|
||||||
|
<app:functionality>
|
||||||
|
<app:functionality>MusicLibrary</app:functionality>
|
||||||
|
<app:use>false</app:use>
|
||||||
|
</app:functionality>
|
||||||
|
<app:functionality>
|
||||||
|
<app:functionality>PictureAndVideoLibraries</app:functionality>
|
||||||
|
<app:use>false</app:use>
|
||||||
|
</app:functionality>
|
||||||
|
<app:functionality>
|
||||||
|
<app:functionality>AudioPlaybackAndVibration</app:functionality>
|
||||||
|
<app:use>false</app:use>
|
||||||
|
</app:functionality>
|
||||||
|
<app:functionality>
|
||||||
|
<app:functionality>BackgroundAudioPlaybackAndVibration</app:functionality>
|
||||||
|
<app:use>false</app:use>
|
||||||
|
</app:functionality>
|
||||||
|
<app:functionality>
|
||||||
|
<app:functionality>InstallPackages</app:functionality>
|
||||||
|
<app:use>false</app:use>
|
||||||
|
</app:functionality>
|
||||||
|
<app:functionality>
|
||||||
|
<app:functionality>OSBackup</app:functionality>
|
||||||
|
<app:use>true</app:use>
|
||||||
|
</app:functionality>
|
||||||
|
<app:functionality>
|
||||||
|
<app:functionality>ApplicationUsageStatistics</app:functionality>
|
||||||
|
<app:use>false</app:use>
|
||||||
|
</app:functionality>
|
||||||
|
<app:functionality>
|
||||||
|
<app:functionality>BarcodeScanning</app:functionality>
|
||||||
|
<app:use>false</app:use>
|
||||||
|
</app:functionality>
|
||||||
|
<app:functionality>
|
||||||
|
<app:functionality>BackgroundAudioRecording</app:functionality>
|
||||||
|
<app:use>false</app:use>
|
||||||
|
</app:functionality>
|
||||||
|
<app:functionality>
|
||||||
|
<app:functionality>AllFilesAccess</app:functionality>
|
||||||
|
<app:use>false</app:use>
|
||||||
|
</app:functionality>
|
||||||
|
<app:functionality>
|
||||||
|
<app:functionality>Videoconferences</app:functionality>
|
||||||
|
<app:use>false</app:use>
|
||||||
|
</app:functionality>
|
||||||
|
<app:functionality>
|
||||||
|
<app:functionality>NFC</app:functionality>
|
||||||
|
<app:use>false</app:use>
|
||||||
|
</app:functionality>
|
||||||
|
<app:functionality>
|
||||||
|
<app:functionality>DocumentScanning</app:functionality>
|
||||||
|
<app:use>false</app:use>
|
||||||
|
</app:functionality>
|
||||||
|
<app:functionality>
|
||||||
|
<app:functionality>SpeechToText</app:functionality>
|
||||||
|
<app:use>false</app:use>
|
||||||
|
</app:functionality>
|
||||||
|
<app:functionality>
|
||||||
|
<app:functionality>Geofences</app:functionality>
|
||||||
|
<app:use>false</app:use>
|
||||||
|
</app:functionality>
|
||||||
|
<app:functionality>
|
||||||
|
<app:functionality>IncomingShareRequests</app:functionality>
|
||||||
|
<app:use>false</app:use>
|
||||||
|
</app:functionality>
|
||||||
|
<app:functionality>
|
||||||
|
<app:functionality>AllIncomingShareRequestsTypesProcessing</app:functionality>
|
||||||
|
<app:use>false</app:use>
|
||||||
|
</app:functionality>
|
||||||
|
</UsedMobileApplicationFunctionalities>
|
||||||
|
<StandaloneConfigurationRestrictionRoles/>
|
||||||
|
<MobileApplicationURLs/>
|
||||||
|
<AllowedIncomingShareRequestTypes/>
|
||||||
|
<MainClientApplicationWindowMode>Normal</MainClientApplicationWindowMode>
|
||||||
|
<DefaultInterface/>
|
||||||
|
<DefaultStyle/>
|
||||||
|
<DefaultLanguage>Language.Русский</DefaultLanguage>
|
||||||
|
<BriefInformation/>
|
||||||
|
<DetailedInformation/>
|
||||||
|
<Copyright/>
|
||||||
|
<VendorInformationAddress/>
|
||||||
|
<ConfigurationInformationAddress/>
|
||||||
|
<DataLockControlMode>Managed</DataLockControlMode>
|
||||||
|
<ObjectAutonumerationMode>NotAutoFree</ObjectAutonumerationMode>
|
||||||
|
<ModalityUseMode>DontUse</ModalityUseMode>
|
||||||
|
<SynchronousPlatformExtensionAndAddInCallUseMode>DontUse</SynchronousPlatformExtensionAndAddInCallUseMode>
|
||||||
|
<InterfaceCompatibilityMode>TaxiEnableVersion8_2</InterfaceCompatibilityMode>
|
||||||
|
<DatabaseTablespacesUseMode>DontUse</DatabaseTablespacesUseMode>
|
||||||
|
<CompatibilityMode>Version8_3_24</CompatibilityMode>
|
||||||
|
<DefaultConstantsForm/>
|
||||||
|
</Properties>
|
||||||
|
<ChildObjects>
|
||||||
|
<Language>Русский</Language>
|
||||||
|
<Role>ЗамыканиеПрав</Role>
|
||||||
|
<Catalog>Номенклатура</Catalog>
|
||||||
|
<DataProcessor>Загрузка</DataProcessor>
|
||||||
|
</ChildObjects>
|
||||||
|
</Configuration>
|
||||||
|
</MetaDataObject>
|
||||||
+32
@@ -0,0 +1,32 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.17">
|
||||||
|
<DataProcessor uuid="UUID-001">
|
||||||
|
<InternalInfo>
|
||||||
|
<xr:GeneratedType name="DataProcessorObject.Загрузка" category="Object">
|
||||||
|
<xr:TypeId>UUID-002</xr:TypeId>
|
||||||
|
<xr:ValueId>UUID-003</xr:ValueId>
|
||||||
|
</xr:GeneratedType>
|
||||||
|
<xr:GeneratedType name="DataProcessorManager.Загрузка" category="Manager">
|
||||||
|
<xr:TypeId>UUID-004</xr:TypeId>
|
||||||
|
<xr:ValueId>UUID-005</xr:ValueId>
|
||||||
|
</xr:GeneratedType>
|
||||||
|
</InternalInfo>
|
||||||
|
<Properties>
|
||||||
|
<Name>Загрузка</Name>
|
||||||
|
<Synonym>
|
||||||
|
<v8:item>
|
||||||
|
<v8:lang>ru</v8:lang>
|
||||||
|
<v8:content>Загрузка</v8:content>
|
||||||
|
</v8:item>
|
||||||
|
</Synonym>
|
||||||
|
<Comment/>
|
||||||
|
<UseStandardCommands>true</UseStandardCommands>
|
||||||
|
<DefaultForm/>
|
||||||
|
<AuxiliaryForm/>
|
||||||
|
<IncludeHelpInContents>false</IncludeHelpInContents>
|
||||||
|
<ExtendedPresentation/>
|
||||||
|
<Explanation/>
|
||||||
|
</Properties>
|
||||||
|
<ChildObjects/>
|
||||||
|
</DataProcessor>
|
||||||
|
</MetaDataObject>
|
||||||
+18
@@ -0,0 +1,18 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ClientApplicationInterface xmlns="http://v8.1c.ru/8.2/managed-application/core" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="InterfaceLayouter">
|
||||||
|
<top>
|
||||||
|
<panel id="UUID-001">
|
||||||
|
<uuid>UUID-002</uuid>
|
||||||
|
</panel>
|
||||||
|
</top>
|
||||||
|
<left>
|
||||||
|
<panel id="UUID-003">
|
||||||
|
<uuid>UUID-004</uuid>
|
||||||
|
</panel>
|
||||||
|
</left>
|
||||||
|
<panelDef id="UUID-004"/>
|
||||||
|
<panelDef id="UUID-005"/>
|
||||||
|
<panelDef id="UUID-006"/>
|
||||||
|
<panelDef id="UUID-002"/>
|
||||||
|
<panelDef id="UUID-007"/>
|
||||||
|
</ClientApplicationInterface>
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.17">
|
||||||
|
<Language uuid="UUID-001">
|
||||||
|
<Properties>
|
||||||
|
<Name>Русский</Name>
|
||||||
|
<Synonym>
|
||||||
|
<v8:item>
|
||||||
|
<v8:lang>ru</v8:lang>
|
||||||
|
<v8:content>Русский</v8:content>
|
||||||
|
</v8:item>
|
||||||
|
</Synonym>
|
||||||
|
<Comment/>
|
||||||
|
<LanguageCode>ru</LanguageCode>
|
||||||
|
</Properties>
|
||||||
|
</Language>
|
||||||
|
</MetaDataObject>
|
||||||
+15
@@ -0,0 +1,15 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.17">
|
||||||
|
<Role uuid="UUID-001">
|
||||||
|
<Properties>
|
||||||
|
<Name>ЗамыканиеПрав</Name>
|
||||||
|
<Synonym>
|
||||||
|
<v8:item>
|
||||||
|
<v8:lang>ru</v8:lang>
|
||||||
|
<v8:content>Замыкание прав</v8:content>
|
||||||
|
</v8:item>
|
||||||
|
</Synonym>
|
||||||
|
<Comment/>
|
||||||
|
</Properties>
|
||||||
|
</Role>
|
||||||
|
</MetaDataObject>
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Rights xmlns="http://v8.1c.ru/8.2/roles" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Rights" version="2.17">
|
||||||
|
<setForNewObjects>false</setForNewObjects>
|
||||||
|
<setForAttributesByDefault>true</setForAttributesByDefault>
|
||||||
|
<independentRightsOfChildObjects>false</independentRightsOfChildObjects>
|
||||||
|
<object>
|
||||||
|
<name>Catalog.Номенклатура</name>
|
||||||
|
<right>
|
||||||
|
<name>Read</name>
|
||||||
|
<value>true</value>
|
||||||
|
</right>
|
||||||
|
<right>
|
||||||
|
<name>Update</name>
|
||||||
|
<value>true</value>
|
||||||
|
</right>
|
||||||
|
<right>
|
||||||
|
<name>View</name>
|
||||||
|
<value>true</value>
|
||||||
|
</right>
|
||||||
|
<right>
|
||||||
|
<name>Edit</name>
|
||||||
|
<value>true</value>
|
||||||
|
</right>
|
||||||
|
</object>
|
||||||
|
<object>
|
||||||
|
<name>DataProcessor.Загрузка</name>
|
||||||
|
<right>
|
||||||
|
<name>Use</name>
|
||||||
|
<value>true</value>
|
||||||
|
</right>
|
||||||
|
<right>
|
||||||
|
<name>View</name>
|
||||||
|
<value>true</value>
|
||||||
|
</right>
|
||||||
|
</object>
|
||||||
|
</Rights>
|
||||||
+44
@@ -9,6 +9,10 @@
|
|||||||
<name>Read</name>
|
<name>Read</name>
|
||||||
<value>true</value>
|
<value>true</value>
|
||||||
</right>
|
</right>
|
||||||
|
<right>
|
||||||
|
<name>View</name>
|
||||||
|
<value>true</value>
|
||||||
|
</right>
|
||||||
<right>
|
<right>
|
||||||
<name>UpdateDataHistorySettings</name>
|
<name>UpdateDataHistorySettings</name>
|
||||||
<value>true</value>
|
<value>true</value>
|
||||||
@@ -24,10 +28,34 @@
|
|||||||
<name>Read</name>
|
<name>Read</name>
|
||||||
<value>true</value>
|
<value>true</value>
|
||||||
</right>
|
</right>
|
||||||
|
<right>
|
||||||
|
<name>Update</name>
|
||||||
|
<value>true</value>
|
||||||
|
</right>
|
||||||
|
<right>
|
||||||
|
<name>Delete</name>
|
||||||
|
<value>true</value>
|
||||||
|
</right>
|
||||||
|
<right>
|
||||||
|
<name>View</name>
|
||||||
|
<value>true</value>
|
||||||
|
</right>
|
||||||
|
<right>
|
||||||
|
<name>Edit</name>
|
||||||
|
<value>true</value>
|
||||||
|
</right>
|
||||||
<right>
|
<right>
|
||||||
<name>InteractiveDeleteMarked</name>
|
<name>InteractiveDeleteMarked</name>
|
||||||
<value>true</value>
|
<value>true</value>
|
||||||
</right>
|
</right>
|
||||||
|
<right>
|
||||||
|
<name>ReadDataHistory</name>
|
||||||
|
<value>true</value>
|
||||||
|
</right>
|
||||||
|
<right>
|
||||||
|
<name>UpdateDataHistoryVersionComment</name>
|
||||||
|
<value>true</value>
|
||||||
|
</right>
|
||||||
<right>
|
<right>
|
||||||
<name>EditDataHistoryVersionComment</name>
|
<name>EditDataHistoryVersionComment</name>
|
||||||
<value>true</value>
|
<value>true</value>
|
||||||
@@ -58,6 +86,22 @@
|
|||||||
<name>Read</name>
|
<name>Read</name>
|
||||||
<value>true</value>
|
<value>true</value>
|
||||||
</right>
|
</right>
|
||||||
|
<right>
|
||||||
|
<name>Update</name>
|
||||||
|
<value>true</value>
|
||||||
|
</right>
|
||||||
|
<right>
|
||||||
|
<name>Delete</name>
|
||||||
|
<value>true</value>
|
||||||
|
</right>
|
||||||
|
<right>
|
||||||
|
<name>View</name>
|
||||||
|
<value>true</value>
|
||||||
|
</right>
|
||||||
|
<right>
|
||||||
|
<name>Edit</name>
|
||||||
|
<value>true</value>
|
||||||
|
</right>
|
||||||
<right>
|
<right>
|
||||||
<name>InteractiveDeleteMarked</name>
|
<name>InteractiveDeleteMarked</name>
|
||||||
<value>true</value>
|
<value>true</value>
|
||||||
|
|||||||
+4
@@ -5,6 +5,10 @@
|
|||||||
<independentRightsOfChildObjects>false</independentRightsOfChildObjects>
|
<independentRightsOfChildObjects>false</independentRightsOfChildObjects>
|
||||||
<object>
|
<object>
|
||||||
<name>Report.Сводный</name>
|
<name>Report.Сводный</name>
|
||||||
|
<right>
|
||||||
|
<name>Use</name>
|
||||||
|
<value>true</value>
|
||||||
|
</right>
|
||||||
<right>
|
<right>
|
||||||
<name>View</name>
|
<name>View</name>
|
||||||
<value>true</value>
|
<value>true</value>
|
||||||
|
|||||||
Reference in New Issue
Block a user