mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-18 09:10:21 +03:00
feat(mxl-validate): предупреждать о флажке у типа, отличного от булева и числа
Конфигуратор предлагает флажок только для Булево и Числа, но ограничение интерфейсное: макет с флажком у строки и у даты платформа принимает и возвращает GUID дословно — проверено сборкой EPF и обратной выгрузкой через базу. Поэтому предупреждение, а не ошибка компиляции: собрать такую ячейку вручную нельзя, и почти наверняка это описка автора. На корпусе ERP предупреждение не срабатывает ни разу: все семь флажков стоят у булева. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
aaeb752cf1
commit
d7c81505d8
@@ -434,6 +434,19 @@ for ($i = 0; $i -lt $formatNodes.Count; $i++) {
|
||||
if ($ctl -and ($controlGuids -notcontains $ctl.InnerText.Trim().ToLowerInvariant())) {
|
||||
Report-Warn "Format ${num}: unknown controlType $($ctl.InnerText.Trim())"
|
||||
}
|
||||
# Флажок Конфигуратор предлагает только для булева и числа. Движок принимает его на любом
|
||||
# типе (проверено сборкой EPF и обратной выгрузкой), поэтому это предупреждение, а не ошибка:
|
||||
# собрать такую ячейку в Конфигураторе нельзя, и почти наверняка это описка.
|
||||
if ($ctl -and $ctl.InnerText.Trim().ToLowerInvariant() -ceq $controlGuids[1] -and $vt) {
|
||||
$kinds = @()
|
||||
foreach ($child in $vt.ChildNodes) {
|
||||
if ($child.NodeType -ne [System.Xml.XmlNodeType]::Element) { continue }
|
||||
if ($child.get_LocalName() -ceq 'Type') { $kinds += $child.InnerText.Trim() }
|
||||
}
|
||||
if (-not (($kinds.Count -eq 1) -and ($kinds[0] -ceq 'xs:boolean' -or $kinds[0] -ceq 'xs:decimal'))) {
|
||||
Report-Warn "Format ${num}: checkbox control on a type other than Boolean or Number"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($valueFormatIdx.Count -gt 0) {
|
||||
|
||||
@@ -422,6 +422,13 @@ def main():
|
||||
ctl = fmt.find(f'{{{NS_D}}}controlType')
|
||||
if ctl is not None and (ctl.text or '').strip().lower() not in control_guids:
|
||||
r.warn(f'Format {i}: unknown controlType {(ctl.text or "").strip()}')
|
||||
# Флажок Конфигуратор предлагает только для булева и числа. Движок принимает его на
|
||||
# любом типе (проверено сборкой EPF и обратной выгрузкой), поэтому это предупреждение,
|
||||
# а не ошибка: собрать такую ячейку в Конфигураторе нельзя, и почти наверняка это описка.
|
||||
if ctl is not None and (ctl.text or '').strip().lower() == control_guids[1] and vt is not None:
|
||||
kinds = [(t.text or '').strip() for t in vt if t.tag.endswith('}Type')]
|
||||
if kinds != ['xs:boolean'] and kinds != ['xs:decimal']:
|
||||
r.warn(f'Format {i}: checkbox control on a type other than Boolean or Number')
|
||||
|
||||
if value_format_idx:
|
||||
for ri in root.findall(f'{{{NS_D}}}rowsItem'):
|
||||
|
||||
Reference in New Issue
Block a user