feat(form-decompile,form-compile): ролевой доступ колонки реквизита (View/Edit xr-флаг)

Раундтрип терял <View>/<Edit> на колонках реквизита (колонка ValueTable/ValueTree с <Type>):
ролевой доступ вида <Edit><xr:Common>false</xr:Common><xr:Value name="Role.X">true</xr:Value></Edit>
(напр. НастройкиУчетаЗарплаты/ФормаДополнительныхДанных — колонки РайонныйКоэффициент/Ссылка).
Механизм xr-флага уже был у самого реквизита (View/Edit) и userVisible — у колонок не подключён.

decompile (Decompile-AttrColumn): захват view/edit через Decompile-XrFlag (bool | {common,roles}).
compile (Emit-AttrColumn, ps1+py): эмиссия <View>/<Edit> через Emit-XrFlag после FunctionalOptions.
(Колонки идут своим путём Decompile-AttrColumn, не через GENERIC_SCALARS — коллизии ключа edit нет.)

Корпус (acc+erp 8.3.24): из 282591 колонок — 14 с <View>, 21 с <Edit> (редко, но реально).
Верификация: таргет-раундтрип 72 форм с колоночными View/Edit → категория закрыта (0 LOST;
остаток — другие категории content/right). Регресс form-compile 43/43 (ps1+py); 1С-cert кейса
table (колоночные View common-only и Edit с ролью грузятся в платформу). spec обновлён.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-06-12 14:06:19 +03:00
parent e007233c91
commit cb3dda0d53
6 changed files with 24 additions and 6 deletions
@@ -133,6 +133,9 @@
<v8:DateFractions>Date</v8:DateFractions>
</v8:DateQualifiers>
</Type>
<View>
<xr:Common>false</xr:Common>
</View>
</Column>
<Column name="Сумма" id="32">
<Type>
@@ -143,6 +146,10 @@
<v8:AllowedSign>Any</v8:AllowedSign>
</v8:NumberQualifiers>
</Type>
<Edit>
<xr:Common>false</xr:Common>
<xr:Value name="UUID-001">true</xr:Value>
</Edit>
</Column>
<Column name="Комментарий" id="33">
<Type>
+2 -2
View File
@@ -36,8 +36,8 @@
"attributes": [
{ "name": "Объект", "type": "DataProcessorObject.Таблица", "main": true },
{ "name": "Данные", "type": "ValueTable", "useAlways": ["Сумма"], "columns": [
{ "name": "Дата", "type": "date", "useAlways": true },
{ "name": "Сумма", "type": "decimal(15,2)" },
{ "name": "Дата", "type": "date", "useAlways": true, "view": false },
{ "name": "Сумма", "type": "decimal(15,2)", "edit": { "common": false, "roles": { "a1b2c3d4-1111-2222-3333-444455556666": true } } },
{ "name": "Комментарий", "type": "string(200)" },
{ "name": "Объект", "type": "AnyRef" },
{ "name": "Источник", "type": "CatalogRef" }