mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-29 16:11:01 +03:00
feat(form-decompile,form-compile): вычисляемые поля + valueType поля DataSet динсписка (кластер C)
Две части пробела DataSet динамического списка:
1. Field valueType (63 формы/54). Поле набора <Field DataSetFieldField> может нести
<dcssch:valueType> (тип значения; кастомные/вычисляемые поля). Декомпилятор ловил
field/dataPath/title/nested, теперь и valueType (переиспользует Decompile-Type);
компилятор эмитит после title через существующий emit_dl_value_type. 0 потерь на выборке.
2. CalculatedField (6 форм, редкое). Новый ключ settings.calculatedFields — зеркало skd:
shorthand "Имя [Заголовок]: тип = Выражение #noField #noFilter #noGroup #noOrder"
(порт Parse-CalcShorthand) или объект. Форм-специфика: dcssch:-теги, presentationExpression,
orderExpression* (структура {expression,orderType,autoOrder} в namespace dcscommon с
локальным xmlns), useRestriction{field,condition,group,order}. Эмиттер форм-специфичный
(skd использует dcscom:-префикс и не имеет pres/orderExpression). Позиция в DataSet —
после Field*, до Parameter*. Декомпилятор Build-CalcField (объектная форма для точного
round-trip). Выборка calc-форм: calc-теги ушли из диффов (3/6 match, остаток — отдельный
field appearance/presentationExpression).
Кейс dynamic-list-form (+grouping +calculatedFields: shorthand с флагами + объект с
presentationExpression/orderExpression/valueType) сертифицирован загрузкой в 1С (порядок
детей CalculatedField подтверждён платформой). Регресс 43/43 (ps1+py).
ps1==py байт-в-байт (сверено на кейсе). Фикс по пути: ps1 Parse-CalcShorthand — `\b` в
generator-heredoc превратился в backspace 0x08 → #-флаги не парсились (py был верен);
поймано прямой сверкой вывода ps1 vs py.
C-остаток (в BACKLOG): свойства обычного <Field> — presentationExpression + appearance
(формат/цвет поля) — отдельный подкластер.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
43d36119cb
commit
73b07a6fbc
@@ -21,6 +21,11 @@
|
||||
"mainTable": "Catalog.Товары", "dynamicDataRead": true, "autoSaveUserSettings": false,
|
||||
"parameters": [ { "name": "ВыборТовара", "type": "CatalogRef.Товары", "valueListAllowed": true, "value": null } ],
|
||||
"grouping": "Description > Code",
|
||||
"calculatedFields": [
|
||||
"Метка [Метка строки]: string = Code + \" \" + Description #noFilter #noGroup",
|
||||
{ "dataPath": "Сорт", "expression": "Code", "title": "Сорт", "valueType": "string(10)",
|
||||
"presentationExpression": "Code", "orderExpression": [ { "expression": "Code" } ] }
|
||||
],
|
||||
"order": [ "Description", "Code desc" ],
|
||||
"filter": [ "Артикул = _ @off @user", "Артикул like %тест%", "Description подобно %abc%",
|
||||
{ "field": "Code", "op": "=", "userSettingID": "auto", "userSettingPresentation": "Код товара" },
|
||||
|
||||
+44
@@ -100,6 +100,50 @@
|
||||
<Settings xsi:type="DynamicList">
|
||||
<ManualQuery>false</ManualQuery>
|
||||
<DynamicDataRead>true</DynamicDataRead>
|
||||
<CalculatedField>
|
||||
<dcssch:dataPath>Метка</dcssch:dataPath>
|
||||
<dcssch:expression>Code + " " + Description</dcssch:expression>
|
||||
<dcssch:title xsi:type="v8:LocalStringType">
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Метка строки</v8:content>
|
||||
</v8:item>
|
||||
</dcssch:title>
|
||||
<dcssch:useRestriction>
|
||||
<dcssch:condition>true</dcssch:condition>
|
||||
<dcssch:group>true</dcssch:group>
|
||||
</dcssch:useRestriction>
|
||||
<dcssch:valueType>
|
||||
<v8:Type>xs:string</v8:Type>
|
||||
<v8:StringQualifiers>
|
||||
<v8:Length>0</v8:Length>
|
||||
<v8:AllowedLength>Variable</v8:AllowedLength>
|
||||
</v8:StringQualifiers>
|
||||
</dcssch:valueType>
|
||||
</CalculatedField>
|
||||
<CalculatedField>
|
||||
<dcssch:dataPath>Сорт</dcssch:dataPath>
|
||||
<dcssch:expression>Code</dcssch:expression>
|
||||
<dcssch:title xsi:type="v8:LocalStringType">
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Сорт</v8:content>
|
||||
</v8:item>
|
||||
</dcssch:title>
|
||||
<dcssch:presentationExpression>Code</dcssch:presentationExpression>
|
||||
<dcssch:orderExpression>
|
||||
<expression xmlns="http://v8.1c.ru/8.1/data-composition-system/common">Code</expression>
|
||||
<orderType xmlns="http://v8.1c.ru/8.1/data-composition-system/common">Asc</orderType>
|
||||
<autoOrder xmlns="http://v8.1c.ru/8.1/data-composition-system/common">false</autoOrder>
|
||||
</dcssch:orderExpression>
|
||||
<dcssch:valueType>
|
||||
<v8:Type>xs:string</v8:Type>
|
||||
<v8:StringQualifiers>
|
||||
<v8:Length>10</v8:Length>
|
||||
<v8:AllowedLength>Variable</v8:AllowedLength>
|
||||
</v8:StringQualifiers>
|
||||
</dcssch:valueType>
|
||||
</CalculatedField>
|
||||
<Parameter>
|
||||
<dcssch:name>ВыборТовара</dcssch:name>
|
||||
<dcssch:title xsi:type="v8:LocalStringType">
|
||||
|
||||
Reference in New Issue
Block a user