mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-09-21 01:35:53 +03:00
fix(cfe-patch-method,cfe-validate): маркер возвращается той же строкой, счётчик стал регистронезависимым
Две находки ревью. Приняв хвостовой комментарий у маркера, разбор запоминал только содержимое блока, а -Actualize писал на его место голое ключевое слово: авторская пометка вроде «#Вставка // проверка прав, ТЗ-142» молча исчезала при первой же актуализации. Теперь строки открывающего и закрывающего маркера едут вместе с блоком и возвращаются как были — с комментарием, отступом и своим написанием; ключевое слово остаётся запасным вариантом. Кейс actualize-marker-tail-comment эту потерю ловит: без правки падает. Счётчик контролируемых методов в cfe-validate был единственным новым сопоставлением без учёта регистра, хотя язык регистронезависим: на &changeAndValidate он показывал ноль и расходился с cfe-patch-method -Check, на который сам же и ссылается. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
c32b82f72d
commit
9b1bf22e8f
@@ -487,18 +487,25 @@ function Parse-MarkedBody {
|
|||||||
while ($i -lt $bodyLines.Count) {
|
while ($i -lt $bodyLines.Count) {
|
||||||
$kind = Get-BslMarkerKind $bodyLines[$i]
|
$kind = Get-BslMarkerKind $bodyLines[$i]
|
||||||
if ($kind -eq 'Insert') {
|
if ($kind -eq 'Insert') {
|
||||||
|
# Marker lines are kept verbatim: they carry the author's spelling, indent and — since
|
||||||
|
# a tail comment is legal — the note explaining the edit. Re-emitting a bare keyword
|
||||||
|
# would silently drop that note on -Actualize.
|
||||||
|
$open = $bodyLines[$i]
|
||||||
$ins = @()
|
$ins = @()
|
||||||
$i++
|
$i++
|
||||||
while ($i -lt $bodyLines.Count -and (Get-BslMarkerKind $bodyLines[$i]) -ne 'EndInsert') { $ins += $bodyLines[$i]; $i++ }
|
while ($i -lt $bodyLines.Count -and (Get-BslMarkerKind $bodyLines[$i]) -ne 'EndInsert') { $ins += $bodyLines[$i]; $i++ }
|
||||||
|
$close = if ($i -lt $bodyLines.Count) { $bodyLines[$i] } else { $null }
|
||||||
$i++ # skip #КонецВставки
|
$i++ # skip #КонецВставки
|
||||||
$ops += @{ Kind = 'insert'; After = ($v1.Count - 1); Lines = $ins }
|
$ops += @{ Kind = 'insert'; After = ($v1.Count - 1); Lines = $ins; Open = $open; Close = $close }
|
||||||
} elseif ($kind -eq 'Delete') {
|
} elseif ($kind -eq 'Delete') {
|
||||||
|
$open = $bodyLines[$i]
|
||||||
$startIdx = $v1.Count
|
$startIdx = $v1.Count
|
||||||
$i++
|
$i++
|
||||||
$del = @()
|
$del = @()
|
||||||
while ($i -lt $bodyLines.Count -and (Get-BslMarkerKind $bodyLines[$i]) -ne 'EndDelete') { $del += $bodyLines[$i]; $v1 += $bodyLines[$i]; $i++ }
|
while ($i -lt $bodyLines.Count -and (Get-BslMarkerKind $bodyLines[$i]) -ne 'EndDelete') { $del += $bodyLines[$i]; $v1 += $bodyLines[$i]; $i++ }
|
||||||
|
$close = if ($i -lt $bodyLines.Count) { $bodyLines[$i] } else { $null }
|
||||||
$i++ # skip #КонецУдаления
|
$i++ # skip #КонецУдаления
|
||||||
$ops += @{ Kind = 'delete'; Start = $startIdx; End = ($v1.Count - 1); Lines = $del }
|
$ops += @{ Kind = 'delete'; Start = $startIdx; End = ($v1.Count - 1); Lines = $del; Open = $open; Close = $close }
|
||||||
} else {
|
} else {
|
||||||
$v1 += $bodyLines[$i]
|
$v1 += $bodyLines[$i]
|
||||||
$i++
|
$i++
|
||||||
@@ -715,7 +722,9 @@ function Write-ConflictFolder {
|
|||||||
$md += "### Конфликт №$cn — вставка"
|
$md += "### Конфликт №$cn — вставка"
|
||||||
$md += "Как блок стоял в вашей версии (local):"
|
$md += "Как блок стоял в вашей версии (local):"
|
||||||
if ($d.Before -and $d.Before.Count -gt 0) { foreach ($l in $d.Before) { $md += $l } }
|
if ($d.Before -and $d.Before.Count -gt 0) { foreach ($l in $d.Before) { $md += $l } }
|
||||||
$md += "#$($kw.Insert)"; foreach ($l in $d.Lines) { $md += $l }; $md += "#$($kw.EndInsert)"
|
$openLine = if ([string]::IsNullOrEmpty($d.Open)) { "#$($kw.Insert)" } else { $d.Open }
|
||||||
|
$closeLine = if ([string]::IsNullOrEmpty($d.Close)) { "#$($kw.EndInsert)" } else { $d.Close }
|
||||||
|
$md += $openLine; foreach ($l in $d.Lines) { $md += $l }; $md += $closeLine
|
||||||
if ($d.After -and $d.After.Count -gt 0) { foreach ($l in $d.After) { $md += $l } }
|
if ($d.After -and $d.After.Count -gt 0) { foreach ($l in $d.After) { $md += $l } }
|
||||||
$md += ""
|
$md += ""
|
||||||
$md += "Якорь (строки вокруг #$($kw.Insert)) изменился/исчез в новом оригинале — блок не лёг автоматически (см. дифф base→remote ниже)."
|
$md += "Якорь (строки вокруг #$($kw.Insert)) изменился/исчез в новом оригинале — блок не лёг автоматически (см. дифф base→remote ниже)."
|
||||||
@@ -809,14 +818,14 @@ function Invoke-Resync {
|
|||||||
elseif ($null -eq $k) {
|
elseif ($null -eq $k) {
|
||||||
$dbefore = @(); if ($op.After -ge 0) { $bz = [Math]::Max(0, $op.After - 2); for ($z = $bz; $z -le $op.After; $z++) { $dbefore += $v1[$z] } }
|
$dbefore = @(); if ($op.After -ge 0) { $bz = [Math]::Max(0, $op.After - 2); for ($z = $bz; $z -le $op.After; $z++) { $dbefore += $v1[$z] } }
|
||||||
$dafter = @(); $az = [Math]::Min($v1.Count - 1, $op.After + 3); for ($z = $op.After + 1; $z -le $az; $z++) { $dafter += $v1[$z] }
|
$dafter = @(); $az = [Math]::Min($v1.Count - 1, $op.After + 3); for ($z = $op.After + 1; $z -le $az; $z++) { $dafter += $v1[$z] }
|
||||||
$disputed += @{ Kind = 'insert'; Lines = $op.Lines; Before = $dbefore; After = $dafter }
|
$disputed += @{ Kind = 'insert'; Lines = $op.Lines; Open = $op.Open; Close = $op.Close; Before = $dbefore; After = $dafter }
|
||||||
}
|
}
|
||||||
elseif ($k -lt 0) { $insertTop += ,$op.Lines; $transferred += @{ Kind = 'insert' } }
|
elseif ($k -lt 0) { $insertTop += $op; $transferred += @{ Kind = 'insert' } }
|
||||||
else { if (-not $insertAfter.ContainsKey($k)) { $insertAfter[$k] = @() }; $insertAfter[$k] += ,$op.Lines; $transferred += @{ Kind = 'insert' } }
|
else { if (-not $insertAfter.ContainsKey($k)) { $insertAfter[$k] = @() }; $insertAfter[$k] += $op; $transferred += @{ Kind = 'insert' } }
|
||||||
} else {
|
} else {
|
||||||
$keys = @(); for ($m = $op.Start; $m -le $op.End; $m++) { $keys += $v1norm[$m] }
|
$keys = @(); for ($m = $op.Start; $m -le $op.End; $m++) { $keys += $v1norm[$m] }
|
||||||
$p = Find-UniqueRun $v2norm $keys
|
$p = Find-UniqueRun $v2norm $keys
|
||||||
if ($p -ge 0) { $delStart[$p] = $true; $delEnd[$p + $keys.Count - 1] = $true; $transferred += @{ Kind = 'delete' } }
|
if ($p -ge 0) { $delStart[$p] = $op.Open; $delEnd[$p + $keys.Count - 1] = $op.Close; $transferred += @{ Kind = 'delete' } }
|
||||||
else {
|
else {
|
||||||
# Nearest significant neighbours around the deleted block; adjacency in the significant
|
# Nearest significant neighbours around the deleted block; adjacency in the significant
|
||||||
# projection means the block is already cut (blanks/comments left behind don't matter).
|
# projection means the block is already cut (blanks/comments left behind don't matter).
|
||||||
@@ -836,14 +845,16 @@ function Invoke-Resync {
|
|||||||
return @{ Id = $methodId; Status = $st; ExtBsl = $extBsl; Transferred = $transferred.Count; Absorbed = $absorbed.Count; Disputed = $disputed.Count; Reason = $rsn; AbsorbedNotes = $absorbedNotes }
|
return @{ Id = $methodId; Status = $st; ExtBsl = $extBsl; Transferred = $transferred.Count; Absorbed = $absorbed.Count; Disputed = $disputed.Count; Reason = $rsn; AbsorbedNotes = $absorbedNotes }
|
||||||
}
|
}
|
||||||
|
|
||||||
# assemble new marked body
|
# assemble new marked body. Marker lines come back as they were read (Open/Close); the keyword
|
||||||
|
# form is only a fallback for a block whose closing marker the module never had.
|
||||||
|
$mk = { param($orig, [string]$key) if ([string]::IsNullOrEmpty($orig)) { "#$($kw[$key])" } else { $orig } }
|
||||||
$newBody = @()
|
$newBody = @()
|
||||||
foreach ($blk in $insertTop) { $newBody += "#$($kw.Insert)"; foreach ($l in $blk) { $newBody += $l }; $newBody += "#$($kw.EndInsert)" }
|
foreach ($blk in $insertTop) { $newBody += (& $mk $blk.Open 'Insert'); foreach ($l in $blk.Lines) { $newBody += $l }; $newBody += (& $mk $blk.Close 'EndInsert') }
|
||||||
for ($k = 0; $k -lt $v2.Count; $k++) {
|
for ($k = 0; $k -lt $v2.Count; $k++) {
|
||||||
if ($delStart.ContainsKey($k)) { $newBody += "#$($kw.Delete)" }
|
if ($delStart.ContainsKey($k)) { $newBody += (& $mk $delStart[$k] 'Delete') }
|
||||||
$newBody += $v2[$k]
|
$newBody += $v2[$k]
|
||||||
if ($delEnd.ContainsKey($k)) { $newBody += "#$($kw.EndDelete)" }
|
if ($delEnd.ContainsKey($k)) { $newBody += (& $mk $delEnd[$k] 'EndDelete') }
|
||||||
if ($insertAfter.ContainsKey($k)) { foreach ($blk in $insertAfter[$k]) { $newBody += "#$($kw.Insert)"; foreach ($l in $blk) { $newBody += $l }; $newBody += "#$($kw.EndInsert)" } }
|
if ($insertAfter.ContainsKey($k)) { foreach ($blk in $insertAfter[$k]) { $newBody += (& $mk $blk.Open 'Insert'); foreach ($l in $blk.Lines) { $newBody += $l }; $newBody += (& $mk $blk.Close 'EndInsert') } }
|
||||||
}
|
}
|
||||||
if ($disputed.Count -gt 0) {
|
if ($disputed.Count -gt 0) {
|
||||||
$newBody += "`t// [РЕСИНК-КОНФЛИКТ] блоки ниже не легли автоматически — перенесите вручную (по № см. conflict.md / index.md в merge-воркспейсе, путь в выводе)."
|
$newBody += "`t// [РЕСИНК-КОНФЛИКТ] блоки ниже не легли автоматически — перенесите вручную (по № см. conflict.md / index.md в merge-воркспейсе, путь в выводе)."
|
||||||
@@ -852,7 +863,7 @@ function Invoke-Resync {
|
|||||||
$cn++
|
$cn++
|
||||||
if ($d.Kind -eq 'insert') {
|
if ($d.Kind -eq 'insert') {
|
||||||
$newBody += "`t// [РЕСИНК-КОНФЛИКТ №$cn] вставка — исходный якорь изменён в новом оригинале."
|
$newBody += "`t// [РЕСИНК-КОНФЛИКТ №$cn] вставка — исходный якорь изменён в новом оригинале."
|
||||||
$newBody += "#$($kw.Insert)"; foreach ($l in $d.Lines) { $newBody += $l }; $newBody += "#$($kw.EndInsert)"
|
$newBody += (& $mk $d.Open 'Insert'); foreach ($l in $d.Lines) { $newBody += $l }; $newBody += (& $mk $d.Close 'EndInsert')
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$newBody += "`t// [РЕСИНК-КОНФЛИКТ №$cn] удаление — строки не найдены в новом оригинале:"
|
$newBody += "`t// [РЕСИНК-КОНФЛИКТ №$cn] удаление — строки не найдены в новом оригинале:"
|
||||||
|
|||||||
@@ -616,14 +616,21 @@ def parse_marked_body(body_lines):
|
|||||||
while i < n:
|
while i < n:
|
||||||
kind = bsl_marker_kind(body_lines[i])
|
kind = bsl_marker_kind(body_lines[i])
|
||||||
if kind == "Insert":
|
if kind == "Insert":
|
||||||
|
# Marker lines are kept verbatim: they carry the author's spelling, indent and — since
|
||||||
|
# a tail comment is legal — the note explaining the edit. Re-emitting a bare keyword
|
||||||
|
# would silently drop that note on -Actualize.
|
||||||
|
open_line = body_lines[i]
|
||||||
ins = []
|
ins = []
|
||||||
i += 1
|
i += 1
|
||||||
while i < n and bsl_marker_kind(body_lines[i]) != "EndInsert":
|
while i < n and bsl_marker_kind(body_lines[i]) != "EndInsert":
|
||||||
ins.append(body_lines[i])
|
ins.append(body_lines[i])
|
||||||
i += 1
|
i += 1
|
||||||
|
close_line = body_lines[i] if i < n else None
|
||||||
i += 1
|
i += 1
|
||||||
ops.append({"kind": "insert", "after": len(v1) - 1, "lines": ins})
|
ops.append({"kind": "insert", "after": len(v1) - 1, "lines": ins,
|
||||||
|
"open": open_line, "close": close_line})
|
||||||
elif kind == "Delete":
|
elif kind == "Delete":
|
||||||
|
open_line = body_lines[i]
|
||||||
start_idx = len(v1)
|
start_idx = len(v1)
|
||||||
i += 1
|
i += 1
|
||||||
dels = []
|
dels = []
|
||||||
@@ -631,8 +638,10 @@ def parse_marked_body(body_lines):
|
|||||||
dels.append(body_lines[i])
|
dels.append(body_lines[i])
|
||||||
v1.append(body_lines[i])
|
v1.append(body_lines[i])
|
||||||
i += 1
|
i += 1
|
||||||
|
close_line = body_lines[i] if i < n else None
|
||||||
i += 1
|
i += 1
|
||||||
ops.append({"kind": "delete", "start": start_idx, "end": len(v1) - 1, "lines": dels})
|
ops.append({"kind": "delete", "start": start_idx, "end": len(v1) - 1, "lines": dels,
|
||||||
|
"open": open_line, "close": close_line})
|
||||||
else:
|
else:
|
||||||
v1.append(body_lines[i])
|
v1.append(body_lines[i])
|
||||||
i += 1
|
i += 1
|
||||||
@@ -1207,7 +1216,8 @@ def write_conflict_folder(folder, method_id, ext_bsl, existing_name, method, v1,
|
|||||||
if d.get("before"):
|
if d.get("before"):
|
||||||
for l in d["before"]:
|
for l in d["before"]:
|
||||||
md.append(l)
|
md.append(l)
|
||||||
md.append("#" + kw["Insert"]); md.extend(d["lines"]); md.append("#" + kw["EndInsert"])
|
md.append(d.get("open") or ("#" + kw["Insert"])); md.extend(d["lines"])
|
||||||
|
md.append(d.get("close") or ("#" + kw["EndInsert"]))
|
||||||
if d.get("after"):
|
if d.get("after"):
|
||||||
for l in d["after"]:
|
for l in d["after"]:
|
||||||
md.append(l)
|
md.append(l)
|
||||||
@@ -1280,7 +1290,7 @@ def resync_one(ext_bsl, ext_lines, dup, method, logical_module, conflict_folder,
|
|||||||
if not params_drift and control_key(v1) == control_key(v2):
|
if not params_drift and control_key(v1) == control_key(v2):
|
||||||
return {"id": method_id, "status": "АКТУАЛЕН", "ext_bsl": ext_bsl}
|
return {"id": method_id, "status": "АКТУАЛЕН", "ext_bsl": ext_bsl}
|
||||||
|
|
||||||
insert_top = []; insert_after = {}; del_start = set(); del_end = set(); disputed = []; transferred = 0; absorbed = 0; absorbed_notes = []
|
insert_top = []; insert_after = {}; del_start = {}; del_end = {}; disputed = []; transferred = 0; absorbed = 0; absorbed_notes = []
|
||||||
v2sig, v2map = significant_projection(v2norm)
|
v2sig, v2map = significant_projection(v2norm)
|
||||||
for op in ops:
|
for op in ops:
|
||||||
if op["kind"] == "insert":
|
if op["kind"] == "insert":
|
||||||
@@ -1306,16 +1316,17 @@ def resync_one(ext_bsl, ext_lines, dup, method, logical_module, conflict_folder,
|
|||||||
elif k is None:
|
elif k is None:
|
||||||
dbefore = v1[max(0, after - 2):after + 1] if after >= 0 else []
|
dbefore = v1[max(0, after - 2):after + 1] if after >= 0 else []
|
||||||
dafter = v1[after + 1:after + 4]
|
dafter = v1[after + 1:after + 4]
|
||||||
disputed.append({"kind": "insert", "lines": op["lines"], "before": dbefore, "after": dafter})
|
disputed.append({"kind": "insert", "lines": op["lines"], "open": op.get("open"),
|
||||||
|
"close": op.get("close"), "before": dbefore, "after": dafter})
|
||||||
elif k < 0:
|
elif k < 0:
|
||||||
insert_top.append(op["lines"]); transferred += 1
|
insert_top.append(op); transferred += 1
|
||||||
else:
|
else:
|
||||||
insert_after.setdefault(k, []).append(op["lines"]); transferred += 1
|
insert_after.setdefault(k, []).append(op); transferred += 1
|
||||||
else:
|
else:
|
||||||
keys = v1norm[op["start"]:op["end"] + 1]
|
keys = v1norm[op["start"]:op["end"] + 1]
|
||||||
p = find_unique_run(v2norm, keys)
|
p = find_unique_run(v2norm, keys)
|
||||||
if p >= 0:
|
if p >= 0:
|
||||||
del_start.add(p); del_end.add(p + len(keys) - 1); transferred += 1
|
del_start[p] = op.get("open"); del_end[p + len(keys) - 1] = op.get("close"); transferred += 1
|
||||||
else:
|
else:
|
||||||
# Nearest significant neighbours; adjacency in the significant projection means the
|
# Nearest significant neighbours; adjacency in the significant projection means the
|
||||||
# block is already cut (blanks/comments left behind don't matter).
|
# block is already cut (blanks/comments left behind don't matter).
|
||||||
@@ -1347,18 +1358,25 @@ def resync_one(ext_bsl, ext_lines, dup, method, logical_module, conflict_folder,
|
|||||||
return {"id": method_id, "status": st, "ext_bsl": ext_bsl, "transferred": transferred,
|
return {"id": method_id, "status": st, "ext_bsl": ext_bsl, "transferred": transferred,
|
||||||
"absorbed": absorbed, "disputed": len(disputed), "reason": rsn, "absorbed_notes": absorbed_notes}
|
"absorbed": absorbed, "disputed": len(disputed), "reason": rsn, "absorbed_notes": absorbed_notes}
|
||||||
|
|
||||||
|
# Marker lines come back as they were read (open/close); the keyword form is only a fallback
|
||||||
|
# for a block whose closing marker the module never had.
|
||||||
|
def mk(orig, key):
|
||||||
|
return ("#" + kw[key]) if not orig else orig
|
||||||
|
|
||||||
new_body = []
|
new_body = []
|
||||||
for blk in insert_top:
|
for blk in insert_top:
|
||||||
new_body.append("#" + kw["Insert"]); new_body.extend(blk); new_body.append("#" + kw["EndInsert"])
|
new_body.append(mk(blk.get("open"), "Insert")); new_body.extend(blk["lines"])
|
||||||
|
new_body.append(mk(blk.get("close"), "EndInsert"))
|
||||||
for k in range(len(v2)):
|
for k in range(len(v2)):
|
||||||
if k in del_start:
|
if k in del_start:
|
||||||
new_body.append("#" + kw["Delete"])
|
new_body.append(mk(del_start[k], "Delete"))
|
||||||
new_body.append(v2[k])
|
new_body.append(v2[k])
|
||||||
if k in del_end:
|
if k in del_end:
|
||||||
new_body.append("#" + kw["EndDelete"])
|
new_body.append(mk(del_end[k], "EndDelete"))
|
||||||
if k in insert_after:
|
if k in insert_after:
|
||||||
for blk in insert_after[k]:
|
for blk in insert_after[k]:
|
||||||
new_body.append("#" + kw["Insert"]); new_body.extend(blk); new_body.append("#" + kw["EndInsert"])
|
new_body.append(mk(blk.get("open"), "Insert")); new_body.extend(blk["lines"])
|
||||||
|
new_body.append(mk(blk.get("close"), "EndInsert"))
|
||||||
if disputed:
|
if disputed:
|
||||||
new_body.append("\t// [РЕСИНК-КОНФЛИКТ] блоки ниже не легли автоматически — перенесите вручную (по № см. conflict.md / index.md в merge-воркспейсе, путь в выводе).")
|
new_body.append("\t// [РЕСИНК-КОНФЛИКТ] блоки ниже не легли автоматически — перенесите вручную (по № см. conflict.md / index.md в merge-воркспейсе, путь в выводе).")
|
||||||
cn = 0
|
cn = 0
|
||||||
@@ -1366,7 +1384,8 @@ def resync_one(ext_bsl, ext_lines, dup, method, logical_module, conflict_folder,
|
|||||||
cn += 1
|
cn += 1
|
||||||
if d["kind"] == "insert":
|
if d["kind"] == "insert":
|
||||||
new_body.append("\t// [РЕСИНК-КОНФЛИКТ №%d] вставка — исходный якорь изменён в новом оригинале." % cn)
|
new_body.append("\t// [РЕСИНК-КОНФЛИКТ №%d] вставка — исходный якорь изменён в новом оригинале." % cn)
|
||||||
new_body.append("#" + kw["Insert"]); new_body.extend(d["lines"]); new_body.append("#" + kw["EndInsert"])
|
new_body.append(mk(d.get("open"), "Insert")); new_body.extend(d["lines"])
|
||||||
|
new_body.append(mk(d.get("close"), "EndInsert"))
|
||||||
else:
|
else:
|
||||||
new_body.append("\t// [РЕСИНК-КОНФЛИКТ №%d] удаление — строки не найдены в новом оригинале:" % cn)
|
new_body.append("\t// [РЕСИНК-КОНФЛИКТ №%d] удаление — строки не найдены в новом оригинале:" % cn)
|
||||||
for l in d["lines"]:
|
for l in d["lines"]:
|
||||||
|
|||||||
@@ -1338,7 +1338,7 @@ function Get-BslKeywords {
|
|||||||
# --- Breadcrumb: controlled methods (&ИзменениеИКонтроль) drift is not checked here ---
|
# --- Breadcrumb: controlled methods (&ИзменениеИКонтроль) drift is not checked here ---
|
||||||
$extRootDir = Split-Path $resolvedPath -Parent
|
$extRootDir = Split-Path $resolvedPath -Parent
|
||||||
$ctrlKw = Get-BslKeywords
|
$ctrlKw = Get-BslKeywords
|
||||||
$ctrlRe = '(?m)^\s*&(?:' + $ctrlKw.ru.Control + '|' + $ctrlKw.en.Control + ')\('
|
$ctrlRe = '(?im)^\s*&(?:' + $ctrlKw.ru.Control + '|' + $ctrlKw.en.Control + ')\('
|
||||||
$ctrlCount = 0
|
$ctrlCount = 0
|
||||||
foreach ($bslFile in (Get-ChildItem -Path $extRootDir -Recurse -Filter *.bsl -File -ErrorAction SilentlyContinue)) {
|
foreach ($bslFile in (Get-ChildItem -Path $extRootDir -Recurse -Filter *.bsl -File -ErrorAction SilentlyContinue)) {
|
||||||
$txt = [System.IO.File]::ReadAllText($bslFile.FullName, [System.Text.Encoding]::UTF8)
|
$txt = [System.IO.File]::ReadAllText($bslFile.FullName, [System.Text.Encoding]::UTF8)
|
||||||
|
|||||||
@@ -1304,7 +1304,7 @@ def main():
|
|||||||
|
|
||||||
# --- Breadcrumb: controlled methods (&ИзменениеИКонтроль) drift is not checked here ---
|
# --- Breadcrumb: controlled methods (&ИзменениеИКонтроль) drift is not checked here ---
|
||||||
ctrl_kw = bsl_keywords()
|
ctrl_kw = bsl_keywords()
|
||||||
ctrl_re = re.compile(r'^\s*&(?:' + ctrl_kw["ru"]["Control"] + '|' + ctrl_kw["en"]["Control"] + r')\(')
|
ctrl_re = re.compile(r'^\s*&(?:' + ctrl_kw["ru"]["Control"] + '|' + ctrl_kw["en"]["Control"] + r')\(', re.IGNORECASE)
|
||||||
ctrl_count = 0
|
ctrl_count = 0
|
||||||
for dp, _dn, files in os.walk(config_dir):
|
for dp, _dn, files in os.walk(config_dir):
|
||||||
for fn in files:
|
for fn in files:
|
||||||
|
|||||||
@@ -0,0 +1,33 @@
|
|||||||
|
{
|
||||||
|
"name": "-Actualize: комментарий на строке маркера не теряется при перезаписи блока",
|
||||||
|
"preRun": [
|
||||||
|
{
|
||||||
|
"script": "meta-compile/scripts/meta-compile",
|
||||||
|
"input": { "type": "CommonModule", "name": "ХвостМод", "properties": { "Server": true } },
|
||||||
|
"args": { "-JsonPath": "{inputFile}", "-OutputDir": "{workDir}" }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"writeFile": {
|
||||||
|
"path": "CommonModules/ХвостМод/Ext/Module.bsl",
|
||||||
|
"content": "#Область ПрограммныйИнтерфейс\n\nПроцедура Записать(Спр) Экспорт\n\tНачатьТранзакцию();\n\tСпр.Записать();\n\tЗаписатьЖурнал();\n\tЗафиксироватьТранзакцию();\nКонецПроцедуры\n\n#КонецОбласти\n"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"script": "cfe-init/scripts/cfe-init",
|
||||||
|
"args": { "-Name": "Тест", "-OutputDir": "{workDir}/cfe", "-ConfigPath": "{workDir}" }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"script": "cfe-borrow/scripts/cfe-borrow",
|
||||||
|
"args": { "-ExtensionPath": "{workDir}/cfe", "-ConfigPath": "{workDir}", "-Object": "CommonModule.ХвостМод" }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"writeFile": {
|
||||||
|
"path": "cfe/CommonModules/ХвостМод/Ext/Module.bsl",
|
||||||
|
"content": "#Область ПрограммныйИнтерфейс\n&ИзменениеИКонтроль(\"Записать\")\nПроцедура Тест_Записать(Спр)\n\tНачатьТранзакцию();\n\tСпр.Записать();\n#Вставка // проверка прав, ТЗ-142\n\tПроверитьПрава(Спр);\n#КонецВставки // конец проверки прав\n\tЗафиксироватьТранзакцию();\nКонецПроцедуры\n#КонецОбласти\n"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"params": { "extensionPath": "cfe" },
|
||||||
|
"args_extra": ["-Actualize"],
|
||||||
|
"expect": { "stdoutContains": "актуализировано: 1" }
|
||||||
|
}
|
||||||
+23
@@ -0,0 +1,23 @@
|
|||||||
|
<?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">
|
||||||
|
<CommonModule uuid="UUID-001">
|
||||||
|
<Properties>
|
||||||
|
<Name>ХвостМод</Name>
|
||||||
|
<Synonym>
|
||||||
|
<v8:item>
|
||||||
|
<v8:lang>ru</v8:lang>
|
||||||
|
<v8:content>Хвост мод</v8:content>
|
||||||
|
</v8:item>
|
||||||
|
</Synonym>
|
||||||
|
<Comment/>
|
||||||
|
<Global>false</Global>
|
||||||
|
<ClientManagedApplication>false</ClientManagedApplication>
|
||||||
|
<Server>false</Server>
|
||||||
|
<ExternalConnection>false</ExternalConnection>
|
||||||
|
<ClientOrdinaryApplication>false</ClientOrdinaryApplication>
|
||||||
|
<ServerCall>false</ServerCall>
|
||||||
|
<Privileged>false</Privileged>
|
||||||
|
<ReturnValuesReuse>DontUse</ReturnValuesReuse>
|
||||||
|
</Properties>
|
||||||
|
</CommonModule>
|
||||||
|
</MetaDataObject>
|
||||||
+10
@@ -0,0 +1,10 @@
|
|||||||
|
#Область ПрограммныйИнтерфейс
|
||||||
|
|
||||||
|
Процедура Записать(Спр) Экспорт
|
||||||
|
НачатьТранзакцию();
|
||||||
|
Спр.Записать();
|
||||||
|
ЗаписатьЖурнал();
|
||||||
|
ЗафиксироватьТранзакцию();
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
#КонецОбласти
|
||||||
+252
@@ -0,0 +1,252 @@
|
|||||||
|
<?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>
|
||||||
|
<CommonModule>ХвостМод</CommonModule>
|
||||||
|
</ChildObjects>
|
||||||
|
</Configuration>
|
||||||
|
</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>
|
||||||
+16
@@ -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>
|
||||||
+18
@@ -0,0 +1,18 @@
|
|||||||
|
<?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">
|
||||||
|
<CommonModule uuid="UUID-001">
|
||||||
|
<InternalInfo/>
|
||||||
|
<Properties>
|
||||||
|
<ObjectBelonging>Adopted</ObjectBelonging>
|
||||||
|
<Name>ХвостМод</Name>
|
||||||
|
<Comment/>
|
||||||
|
<ExtendedConfigurationObject>UUID-002</ExtendedConfigurationObject>
|
||||||
|
<Global>false</Global>
|
||||||
|
<ClientManagedApplication>false</ClientManagedApplication>
|
||||||
|
<Server>false</Server>
|
||||||
|
<ExternalConnection>false</ExternalConnection>
|
||||||
|
<ClientOrdinaryApplication>false</ClientOrdinaryApplication>
|
||||||
|
<ServerCall>false</ServerCall>
|
||||||
|
</Properties>
|
||||||
|
</CommonModule>
|
||||||
|
</MetaDataObject>
|
||||||
+12
@@ -0,0 +1,12 @@
|
|||||||
|
#Область ПрограммныйИнтерфейс
|
||||||
|
&ИзменениеИКонтроль("Записать")
|
||||||
|
Процедура Тест_Записать(Спр)
|
||||||
|
НачатьТранзакцию();
|
||||||
|
Спр.Записать();
|
||||||
|
#Вставка // проверка прав, ТЗ-142
|
||||||
|
ПроверитьПрава(Спр);
|
||||||
|
#КонецВставки // конец проверки прав
|
||||||
|
ЗаписатьЖурнал();
|
||||||
|
ЗафиксироватьТранзакцию();
|
||||||
|
КонецПроцедуры
|
||||||
|
#КонецОбласти
|
||||||
+72
@@ -0,0 +1,72 @@
|
|||||||
|
<?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>
|
||||||
|
<ObjectBelonging>Adopted</ObjectBelonging>
|
||||||
|
<Name>Тест</Name>
|
||||||
|
<Synonym>
|
||||||
|
<v8:item>
|
||||||
|
<v8:lang>ru</v8:lang>
|
||||||
|
<v8:content>Тест</v8:content>
|
||||||
|
</v8:item>
|
||||||
|
</Synonym>
|
||||||
|
<Comment/>
|
||||||
|
<ConfigurationExtensionPurpose>Customization</ConfigurationExtensionPurpose>
|
||||||
|
<KeepMappingToExtendedConfigurationObjectsByIDs>true</KeepMappingToExtendedConfigurationObjectsByIDs>
|
||||||
|
<NamePrefix>Тест_</NamePrefix>
|
||||||
|
<ConfigurationExtensionCompatibilityMode>Version8_3_24</ConfigurationExtensionCompatibilityMode>
|
||||||
|
<DefaultRunMode>ManagedApplication</DefaultRunMode>
|
||||||
|
<UsePurposes>
|
||||||
|
<v8:Value xsi:type="app:ApplicationUsePurpose">PlatformApplication</v8:Value>
|
||||||
|
</UsePurposes>
|
||||||
|
<ScriptVariant>Russian</ScriptVariant>
|
||||||
|
<DefaultRoles>
|
||||||
|
<xr:Item xsi:type="xr:MDObjectRef">Role.Тест_ОсновнаяРоль</xr:Item>
|
||||||
|
</DefaultRoles>
|
||||||
|
<Vendor/>
|
||||||
|
<Version/>
|
||||||
|
<DefaultLanguage>Language.Русский</DefaultLanguage>
|
||||||
|
<BriefInformation/>
|
||||||
|
<DetailedInformation/>
|
||||||
|
<Copyright/>
|
||||||
|
<VendorInformationAddress/>
|
||||||
|
<ConfigurationInformationAddress/>
|
||||||
|
<InterfaceCompatibilityMode>TaxiEnableVersion8_2</InterfaceCompatibilityMode>
|
||||||
|
</Properties>
|
||||||
|
<ChildObjects>
|
||||||
|
<Language>Русский</Language>
|
||||||
|
<Role>Тест_ОсновнаяРоль</Role>
|
||||||
|
<CommonModule>ХвостМод</CommonModule>
|
||||||
|
</ChildObjects>
|
||||||
|
</Configuration>
|
||||||
|
</MetaDataObject>
|
||||||
+13
@@ -0,0 +1,13 @@
|
|||||||
|
<?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">
|
||||||
|
<InternalInfo/>
|
||||||
|
<Properties>
|
||||||
|
<ObjectBelonging>Adopted</ObjectBelonging>
|
||||||
|
<Name>Русский</Name>
|
||||||
|
<Comment/>
|
||||||
|
<ExtendedConfigurationObject>UUID-002</ExtendedConfigurationObject>
|
||||||
|
<LanguageCode>ru</LanguageCode>
|
||||||
|
</Properties>
|
||||||
|
</Language>
|
||||||
|
</MetaDataObject>
|
||||||
+10
@@ -0,0 +1,10 @@
|
|||||||
|
<?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/>
|
||||||
|
<Comment/>
|
||||||
|
</Properties>
|
||||||
|
</Role>
|
||||||
|
</MetaDataObject>
|
||||||
Reference in New Issue
Block a user