mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-09-07 18:50:53 +03:00
feat(meta-decompile): разбор внешних источников данных и раундтрип
Декомпилятор собирает DSL источника целиком: читает файл источника, подтягивает файлы таблиц из <Источник>/Tables/ и складывает поля, ключи, ссылки и функции обратно в тот же синтаксис, который принимает meta-compile. Ссылки на поля возвращаются короткими именами, таблица без собственных свойств — коротким массивом полей, функция с типом по умолчанию — одной строкой. Это замыкает дешёвый контур проверки: XML → декомпиляция → компиляция → сравнение с исходником, без 1С и без Docker. На нём и проверено: наша выгрузка, выгрузка платформы и четыре таблицы внешних источников из чужого рабочего проекта возвращаются байт в байт. У выгрузки платформы остаются два известных расхождения: значение незаполненного родителя (платформа сама сбрасывает его при любой загрузке) и формы (декомпилятор их не захватывает — так задумано). Побочно закрыт дефект, к внешним источникам не относящийся: xs:base64Binary разбирался как ХранилищеЗначения, хотя это ДвоичныеДанные. Различать их можно по квалификаторам — у ХранилищеЗначения платформа пишет v8:ValueStorage, а у двоичных данных есть BinaryDataQualifiers. Компилятор научен типу BinaryData (и BinaryData(N)) — до этого он принимал такое имя, но эмитил его как есть, то есть невалидный XML. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NBsZA5cr2WFThtgp7i5WVi
This commit is contained in:
co-authored by
Claude Opus 5
parent
123d6e326b
commit
24cfe6a0a6
@@ -0,0 +1,58 @@
|
||||
{
|
||||
"name": "Декомпиляция внешнего источника: таблицы из отдельных файлов, функции, поля",
|
||||
"preRun": [
|
||||
{
|
||||
"script": "meta-compile/scripts/meta-compile",
|
||||
"input": {
|
||||
"type": "ExternalDataSource",
|
||||
"name": "PG",
|
||||
"dataLockControlMode": "AutomaticAndManaged",
|
||||
"tables": {
|
||||
"prices": ["product_id: Number(10,0)", "price: Number(15,2)"],
|
||||
"products": {
|
||||
"nameInDataSource": "eds.public.products",
|
||||
"tableDataType": "ObjectData",
|
||||
"keyFields": ["id"],
|
||||
"presentationField": "name",
|
||||
"transactionsIsolationLevel": "ReadUncommitted",
|
||||
"fields": [
|
||||
"id: Number(10,0)",
|
||||
"name: String(150)",
|
||||
"photo: BinaryData | nullable",
|
||||
{ "name": "cost", "type": "Number(15,2)", "nameInDataSource": "cost_net", "readOnly": true }
|
||||
]
|
||||
}
|
||||
},
|
||||
"functions": {
|
||||
"total": { "expression": "public.f_total(&1, &2)", "returns": "Number(15,2)" },
|
||||
"nextKey": "NEXT VALUE FOR public.seq_key"
|
||||
}
|
||||
},
|
||||
"args": { "-JsonPath": "{inputFile}", "-OutputDir": "{workDir}" }
|
||||
}
|
||||
],
|
||||
"params": {
|
||||
"objectPath": "ExternalDataSources/PG.xml",
|
||||
"outputPath": "draft.json"
|
||||
},
|
||||
"expect": {
|
||||
"files": ["draft.json"],
|
||||
"fileContains": [
|
||||
{
|
||||
"file": "draft.json",
|
||||
"text": [
|
||||
"\"dataLockControlMode\": \"AutomaticAndManaged\"",
|
||||
"\"keyFields\": [\"id\"]",
|
||||
"\"nameInDataSource\": \"eds.public.products\"",
|
||||
"\"transactionsIsolationLevel\": \"ReadUncommitted\"",
|
||||
"photo: BinaryData | nullable",
|
||||
"\"nameInDataSource\": \"cost_net\"",
|
||||
"\"nextKey\": \"NEXT VALUE FOR public.seq_key\""
|
||||
]
|
||||
}
|
||||
],
|
||||
"fileNotContains": [
|
||||
{ "file": "draft.json", "text": "ValueStorage" }
|
||||
]
|
||||
}
|
||||
}
|
||||
+67
@@ -0,0 +1,67 @@
|
||||
<?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">
|
||||
<ExternalDataSource uuid="UUID-001">
|
||||
<InternalInfo>
|
||||
<xr:GeneratedType name="ExternalDataSourceManager.PG" category="Manager">
|
||||
<xr:TypeId>UUID-002</xr:TypeId>
|
||||
<xr:ValueId>UUID-003</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="ExternalDataSourceTablesManager.PG" category="TablesManager">
|
||||
<xr:TypeId>UUID-004</xr:TypeId>
|
||||
<xr:ValueId>UUID-005</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="ExternalDataSourceCubesManager.PG" category="CubesManager">
|
||||
<xr:TypeId>UUID-006</xr:TypeId>
|
||||
<xr:ValueId>UUID-007</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
</InternalInfo>
|
||||
<Properties>
|
||||
<Name>PG</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>PG</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<DataLockControlMode>AutomaticAndManaged</DataLockControlMode>
|
||||
</Properties>
|
||||
<ChildObjects>
|
||||
<Table>prices</Table>
|
||||
<Table>products</Table>
|
||||
<Function uuid="UUID-008">
|
||||
<Properties>
|
||||
<Name>total</Name>
|
||||
<Synonym/>
|
||||
<Comment/>
|
||||
<ReturnValue>true</ReturnValue>
|
||||
<Type>
|
||||
<v8:Type>xs:decimal</v8:Type>
|
||||
<v8:NumberQualifiers>
|
||||
<v8:Digits>15</v8:Digits>
|
||||
<v8:FractionDigits>2</v8:FractionDigits>
|
||||
<v8:AllowedSign>Any</v8:AllowedSign>
|
||||
</v8:NumberQualifiers>
|
||||
</Type>
|
||||
<ExpressionInDataSource>public.f_total(&1, &2)</ExpressionInDataSource>
|
||||
</Properties>
|
||||
</Function>
|
||||
<Function uuid="UUID-009">
|
||||
<Properties>
|
||||
<Name>nextKey</Name>
|
||||
<Synonym/>
|
||||
<Comment/>
|
||||
<ReturnValue>true</ReturnValue>
|
||||
<Type>
|
||||
<v8:Type>xs:string</v8:Type>
|
||||
<v8:StringQualifiers>
|
||||
<v8:Length>10</v8:Length>
|
||||
<v8:AllowedLength>Variable</v8:AllowedLength>
|
||||
</v8:StringQualifiers>
|
||||
</Type>
|
||||
<ExpressionInDataSource>NEXT VALUE FOR public.seq_key</ExpressionInDataSource>
|
||||
</Properties>
|
||||
</Function>
|
||||
</ChildObjects>
|
||||
</ExternalDataSource>
|
||||
</MetaDataObject>
|
||||
+170
@@ -0,0 +1,170 @@
|
||||
<?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">
|
||||
<Table uuid="UUID-001">
|
||||
<InternalInfo>
|
||||
<xr:GeneratedType name="ExternalDataSourceTableManager.PG.prices" category="Manager">
|
||||
<xr:TypeId>UUID-002</xr:TypeId>
|
||||
<xr:ValueId>UUID-003</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="ExternalDataSourceTableObject.PG.prices" category="Object">
|
||||
<xr:TypeId>UUID-004</xr:TypeId>
|
||||
<xr:ValueId>UUID-005</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="ExternalDataSourceTableRef.PG.prices" category="Ref">
|
||||
<xr:TypeId>UUID-006</xr:TypeId>
|
||||
<xr:ValueId>UUID-007</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="ExternalDataSourceTableList.PG.prices" category="List">
|
||||
<xr:TypeId>UUID-008</xr:TypeId>
|
||||
<xr:ValueId>UUID-009</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="ExternalDataSourceTableRecord.PG.prices" category="Record">
|
||||
<xr:TypeId>UUID-010</xr:TypeId>
|
||||
<xr:ValueId>UUID-011</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="ExternalDataSourceTableRecordSet.PG.prices" category="RecordSet">
|
||||
<xr:TypeId>UUID-012</xr:TypeId>
|
||||
<xr:ValueId>UUID-013</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="ExternalDataSourceTableRecordKey.PG.prices" category="RecordKey">
|
||||
<xr:TypeId>UUID-014</xr:TypeId>
|
||||
<xr:ValueId>UUID-015</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="ExternalDataSourceTableRecordManager.PG.prices" category="RecordManager">
|
||||
<xr:TypeId>UUID-016</xr:TypeId>
|
||||
<xr:ValueId>UUID-017</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
</InternalInfo>
|
||||
<Properties>
|
||||
<Name>prices</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>prices</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<TableType>Table</TableType>
|
||||
<NameInDataSource>prices</NameInDataSource>
|
||||
<ExpressionInDataSource/>
|
||||
<TableDataType>NonobjectData</TableDataType>
|
||||
<KeyFields/>
|
||||
<PresentationField/>
|
||||
<ParentField/>
|
||||
<UnfilledParentValue xsi:nil="true"/>
|
||||
<Characteristics/>
|
||||
<UseStandardCommands>true</UseStandardCommands>
|
||||
<QuickChoice>false</QuickChoice>
|
||||
<InputByString/>
|
||||
<CreateOnInput>Auto</CreateOnInput>
|
||||
<SearchStringModeOnInputByString>Begin</SearchStringModeOnInputByString>
|
||||
<ChoiceDataGetModeOnInputByString>Directly</ChoiceDataGetModeOnInputByString>
|
||||
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||
<DefaultObjectForm/>
|
||||
<DefaultRecordForm/>
|
||||
<DefaultListForm/>
|
||||
<DefaultChoiceForm/>
|
||||
<ObjectPresentation/>
|
||||
<ExtendedObjectPresentation/>
|
||||
<RecordPresentation/>
|
||||
<ExtendedRecordPresentation/>
|
||||
<ListPresentation/>
|
||||
<ExtendedListPresentation/>
|
||||
<Explanation/>
|
||||
<IncludeHelpInContents>false</IncludeHelpInContents>
|
||||
<ReadOnly>false</ReadOnly>
|
||||
<TransactionsIsolationLevel>Auto</TransactionsIsolationLevel>
|
||||
<DataVersionField/>
|
||||
<EditType>InDialog</EditType>
|
||||
<BasedOn/>
|
||||
<DataLockFields/>
|
||||
<DataLockControlMode>Automatic</DataLockControlMode>
|
||||
</Properties>
|
||||
<ChildObjects>
|
||||
<Field uuid="UUID-018">
|
||||
<Properties>
|
||||
<Name>product_id</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>product_id</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<Type>
|
||||
<v8:Type>xs:decimal</v8:Type>
|
||||
<v8:NumberQualifiers>
|
||||
<v8:Digits>10</v8:Digits>
|
||||
<v8:FractionDigits>0</v8:FractionDigits>
|
||||
<v8:AllowedSign>Any</v8:AllowedSign>
|
||||
</v8:NumberQualifiers>
|
||||
</Type>
|
||||
<PasswordMode>false</PasswordMode>
|
||||
<Format/>
|
||||
<EditFormat/>
|
||||
<ToolTip/>
|
||||
<MarkNegatives>false</MarkNegatives>
|
||||
<Mask/>
|
||||
<MultiLine>false</MultiLine>
|
||||
<ExtendedEdit>false</ExtendedEdit>
|
||||
<MinValue xsi:nil="true"/>
|
||||
<MaxValue xsi:nil="true"/>
|
||||
<FillFromFillingValue>false</FillFromFillingValue>
|
||||
<FillValue xsi:type="xs:decimal">0</FillValue>
|
||||
<FillChecking>DontCheck</FillChecking>
|
||||
<ChoiceParameterLinks/>
|
||||
<ChoiceParameters/>
|
||||
<QuickChoice>Auto</QuickChoice>
|
||||
<CreateOnInput>Auto</CreateOnInput>
|
||||
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||
<ChoiceForm/>
|
||||
<NameInDataSource>product_id</NameInDataSource>
|
||||
<ReadOnly>false</ReadOnly>
|
||||
<AllowNull>false</AllowNull>
|
||||
</Properties>
|
||||
</Field>
|
||||
<Field uuid="UUID-019">
|
||||
<Properties>
|
||||
<Name>price</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>price</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<Type>
|
||||
<v8:Type>xs:decimal</v8:Type>
|
||||
<v8:NumberQualifiers>
|
||||
<v8:Digits>15</v8:Digits>
|
||||
<v8:FractionDigits>2</v8:FractionDigits>
|
||||
<v8:AllowedSign>Any</v8:AllowedSign>
|
||||
</v8:NumberQualifiers>
|
||||
</Type>
|
||||
<PasswordMode>false</PasswordMode>
|
||||
<Format/>
|
||||
<EditFormat/>
|
||||
<ToolTip/>
|
||||
<MarkNegatives>false</MarkNegatives>
|
||||
<Mask/>
|
||||
<MultiLine>false</MultiLine>
|
||||
<ExtendedEdit>false</ExtendedEdit>
|
||||
<MinValue xsi:nil="true"/>
|
||||
<MaxValue xsi:nil="true"/>
|
||||
<FillFromFillingValue>false</FillFromFillingValue>
|
||||
<FillValue xsi:type="xs:decimal">0</FillValue>
|
||||
<FillChecking>DontCheck</FillChecking>
|
||||
<ChoiceParameterLinks/>
|
||||
<ChoiceParameters/>
|
||||
<QuickChoice>Auto</QuickChoice>
|
||||
<CreateOnInput>Auto</CreateOnInput>
|
||||
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||
<ChoiceForm/>
|
||||
<NameInDataSource>price</NameInDataSource>
|
||||
<ReadOnly>false</ReadOnly>
|
||||
<AllowNull>false</AllowNull>
|
||||
</Properties>
|
||||
</Field>
|
||||
</ChildObjects>
|
||||
</Table>
|
||||
</MetaDataObject>
|
||||
+256
@@ -0,0 +1,256 @@
|
||||
<?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">
|
||||
<Table uuid="UUID-001">
|
||||
<InternalInfo>
|
||||
<xr:GeneratedType name="ExternalDataSourceTableManager.PG.products" category="Manager">
|
||||
<xr:TypeId>UUID-002</xr:TypeId>
|
||||
<xr:ValueId>UUID-003</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="ExternalDataSourceTableObject.PG.products" category="Object">
|
||||
<xr:TypeId>UUID-004</xr:TypeId>
|
||||
<xr:ValueId>UUID-005</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="ExternalDataSourceTableRef.PG.products" category="Ref">
|
||||
<xr:TypeId>UUID-006</xr:TypeId>
|
||||
<xr:ValueId>UUID-007</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="ExternalDataSourceTableList.PG.products" category="List">
|
||||
<xr:TypeId>UUID-008</xr:TypeId>
|
||||
<xr:ValueId>UUID-009</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="ExternalDataSourceTableRecord.PG.products" category="Record">
|
||||
<xr:TypeId>UUID-010</xr:TypeId>
|
||||
<xr:ValueId>UUID-011</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="ExternalDataSourceTableRecordSet.PG.products" category="RecordSet">
|
||||
<xr:TypeId>UUID-012</xr:TypeId>
|
||||
<xr:ValueId>UUID-013</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="ExternalDataSourceTableRecordKey.PG.products" category="RecordKey">
|
||||
<xr:TypeId>UUID-014</xr:TypeId>
|
||||
<xr:ValueId>UUID-015</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="ExternalDataSourceTableRecordManager.PG.products" category="RecordManager">
|
||||
<xr:TypeId>UUID-016</xr:TypeId>
|
||||
<xr:ValueId>UUID-017</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
</InternalInfo>
|
||||
<Properties>
|
||||
<Name>products</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>products</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<TableType>Table</TableType>
|
||||
<NameInDataSource>eds.public.products</NameInDataSource>
|
||||
<ExpressionInDataSource/>
|
||||
<TableDataType>ObjectData</TableDataType>
|
||||
<KeyFields>
|
||||
<xr:Field>ExternalDataSource.PG.Table.products.Field.id</xr:Field>
|
||||
</KeyFields>
|
||||
<PresentationField>ExternalDataSource.PG.Table.products.Field.name</PresentationField>
|
||||
<ParentField/>
|
||||
<UnfilledParentValue xsi:nil="true"/>
|
||||
<Characteristics/>
|
||||
<UseStandardCommands>true</UseStandardCommands>
|
||||
<QuickChoice>false</QuickChoice>
|
||||
<InputByString>
|
||||
<xr:Field>ExternalDataSource.PG.Table.products.Field.name</xr:Field>
|
||||
</InputByString>
|
||||
<CreateOnInput>Auto</CreateOnInput>
|
||||
<SearchStringModeOnInputByString>Begin</SearchStringModeOnInputByString>
|
||||
<ChoiceDataGetModeOnInputByString>Directly</ChoiceDataGetModeOnInputByString>
|
||||
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||
<DefaultObjectForm/>
|
||||
<DefaultRecordForm/>
|
||||
<DefaultListForm/>
|
||||
<DefaultChoiceForm/>
|
||||
<ObjectPresentation/>
|
||||
<ExtendedObjectPresentation/>
|
||||
<RecordPresentation/>
|
||||
<ExtendedRecordPresentation/>
|
||||
<ListPresentation/>
|
||||
<ExtendedListPresentation/>
|
||||
<Explanation/>
|
||||
<IncludeHelpInContents>false</IncludeHelpInContents>
|
||||
<ReadOnly>false</ReadOnly>
|
||||
<TransactionsIsolationLevel>ReadUncommitted</TransactionsIsolationLevel>
|
||||
<DataVersionField/>
|
||||
<EditType>InDialog</EditType>
|
||||
<BasedOn/>
|
||||
<DataLockFields/>
|
||||
<DataLockControlMode>Automatic</DataLockControlMode>
|
||||
</Properties>
|
||||
<ChildObjects>
|
||||
<Field uuid="UUID-018">
|
||||
<Properties>
|
||||
<Name>id</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>id</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<Type>
|
||||
<v8:Type>xs:decimal</v8:Type>
|
||||
<v8:NumberQualifiers>
|
||||
<v8:Digits>10</v8:Digits>
|
||||
<v8:FractionDigits>0</v8:FractionDigits>
|
||||
<v8:AllowedSign>Any</v8:AllowedSign>
|
||||
</v8:NumberQualifiers>
|
||||
</Type>
|
||||
<PasswordMode>false</PasswordMode>
|
||||
<Format/>
|
||||
<EditFormat/>
|
||||
<ToolTip/>
|
||||
<MarkNegatives>false</MarkNegatives>
|
||||
<Mask/>
|
||||
<MultiLine>false</MultiLine>
|
||||
<ExtendedEdit>false</ExtendedEdit>
|
||||
<MinValue xsi:nil="true"/>
|
||||
<MaxValue xsi:nil="true"/>
|
||||
<FillFromFillingValue>false</FillFromFillingValue>
|
||||
<FillValue xsi:type="xs:decimal">0</FillValue>
|
||||
<FillChecking>DontCheck</FillChecking>
|
||||
<ChoiceParameterLinks/>
|
||||
<ChoiceParameters/>
|
||||
<QuickChoice>Auto</QuickChoice>
|
||||
<CreateOnInput>Auto</CreateOnInput>
|
||||
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||
<ChoiceForm/>
|
||||
<NameInDataSource>id</NameInDataSource>
|
||||
<ReadOnly>false</ReadOnly>
|
||||
<AllowNull>false</AllowNull>
|
||||
</Properties>
|
||||
</Field>
|
||||
<Field uuid="UUID-019">
|
||||
<Properties>
|
||||
<Name>name</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>name</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<Type>
|
||||
<v8:Type>xs:string</v8:Type>
|
||||
<v8:StringQualifiers>
|
||||
<v8:Length>150</v8:Length>
|
||||
<v8:AllowedLength>Variable</v8:AllowedLength>
|
||||
</v8:StringQualifiers>
|
||||
</Type>
|
||||
<PasswordMode>false</PasswordMode>
|
||||
<Format/>
|
||||
<EditFormat/>
|
||||
<ToolTip/>
|
||||
<MarkNegatives>false</MarkNegatives>
|
||||
<Mask/>
|
||||
<MultiLine>false</MultiLine>
|
||||
<ExtendedEdit>false</ExtendedEdit>
|
||||
<MinValue xsi:nil="true"/>
|
||||
<MaxValue xsi:nil="true"/>
|
||||
<FillFromFillingValue>false</FillFromFillingValue>
|
||||
<FillValue xsi:type="xs:string"/>
|
||||
<FillChecking>DontCheck</FillChecking>
|
||||
<ChoiceParameterLinks/>
|
||||
<ChoiceParameters/>
|
||||
<QuickChoice>Auto</QuickChoice>
|
||||
<CreateOnInput>Auto</CreateOnInput>
|
||||
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||
<ChoiceForm/>
|
||||
<NameInDataSource>name</NameInDataSource>
|
||||
<ReadOnly>false</ReadOnly>
|
||||
<AllowNull>false</AllowNull>
|
||||
</Properties>
|
||||
</Field>
|
||||
<Field uuid="UUID-020">
|
||||
<Properties>
|
||||
<Name>photo</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>photo</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<Type>
|
||||
<v8:Type>xs:base64Binary</v8:Type>
|
||||
<v8:BinaryDataQualifiers>
|
||||
<v8:Length>4294967292</v8:Length>
|
||||
<v8:AllowedLength>Fixed</v8:AllowedLength>
|
||||
</v8:BinaryDataQualifiers>
|
||||
</Type>
|
||||
<PasswordMode>false</PasswordMode>
|
||||
<Format/>
|
||||
<EditFormat/>
|
||||
<ToolTip/>
|
||||
<MarkNegatives>false</MarkNegatives>
|
||||
<Mask/>
|
||||
<MultiLine>false</MultiLine>
|
||||
<ExtendedEdit>false</ExtendedEdit>
|
||||
<MinValue xsi:nil="true"/>
|
||||
<MaxValue xsi:nil="true"/>
|
||||
<FillFromFillingValue>false</FillFromFillingValue>
|
||||
<FillValue xsi:nil="true"/>
|
||||
<FillChecking>DontCheck</FillChecking>
|
||||
<ChoiceParameterLinks/>
|
||||
<ChoiceParameters/>
|
||||
<QuickChoice>Auto</QuickChoice>
|
||||
<CreateOnInput>Auto</CreateOnInput>
|
||||
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||
<ChoiceForm/>
|
||||
<NameInDataSource>photo</NameInDataSource>
|
||||
<ReadOnly>false</ReadOnly>
|
||||
<AllowNull>true</AllowNull>
|
||||
</Properties>
|
||||
</Field>
|
||||
<Field uuid="UUID-021">
|
||||
<Properties>
|
||||
<Name>cost</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>cost</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<Type>
|
||||
<v8:Type>xs:decimal</v8:Type>
|
||||
<v8:NumberQualifiers>
|
||||
<v8:Digits>15</v8:Digits>
|
||||
<v8:FractionDigits>2</v8:FractionDigits>
|
||||
<v8:AllowedSign>Any</v8:AllowedSign>
|
||||
</v8:NumberQualifiers>
|
||||
</Type>
|
||||
<PasswordMode>false</PasswordMode>
|
||||
<Format/>
|
||||
<EditFormat/>
|
||||
<ToolTip/>
|
||||
<MarkNegatives>false</MarkNegatives>
|
||||
<Mask/>
|
||||
<MultiLine>false</MultiLine>
|
||||
<ExtendedEdit>false</ExtendedEdit>
|
||||
<MinValue xsi:nil="true"/>
|
||||
<MaxValue xsi:nil="true"/>
|
||||
<FillFromFillingValue>false</FillFromFillingValue>
|
||||
<FillValue xsi:type="xs:decimal">0</FillValue>
|
||||
<FillChecking>DontCheck</FillChecking>
|
||||
<ChoiceParameterLinks/>
|
||||
<ChoiceParameters/>
|
||||
<QuickChoice>Auto</QuickChoice>
|
||||
<CreateOnInput>Auto</CreateOnInput>
|
||||
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||
<ChoiceForm/>
|
||||
<NameInDataSource>cost_net</NameInDataSource>
|
||||
<ReadOnly>true</ReadOnly>
|
||||
<AllowNull>false</AllowNull>
|
||||
</Properties>
|
||||
</Field>
|
||||
</ChildObjects>
|
||||
</Table>
|
||||
</MetaDataObject>
|
||||
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"type": "ExternalDataSource",
|
||||
"name": "PG",
|
||||
"dataLockControlMode": "AutomaticAndManaged",
|
||||
"tables": {
|
||||
"prices": ["product_id: Number(10,0)", "price: Number(15,2)"],
|
||||
"products": {
|
||||
"nameInDataSource": "eds.public.products",
|
||||
"tableDataType": "ObjectData",
|
||||
"keyFields": ["id"],
|
||||
"presentationField": "name",
|
||||
"transactionsIsolationLevel": "ReadUncommitted",
|
||||
"fields": [
|
||||
"id: Number(10,0)",
|
||||
"name: String(150)",
|
||||
"photo: BinaryData | nullable",
|
||||
{
|
||||
"name": "cost",
|
||||
"type": "Number(15,2)",
|
||||
"nameInDataSource": "cost_net",
|
||||
"flags": ["readonly"]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"functions": {
|
||||
"total": {
|
||||
"expression": "public.f_total(&1, &2)",
|
||||
"returns": "Number(15,2)"
|
||||
},
|
||||
"nextKey": "NEXT VALUE FOR public.seq_key"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user