diff --git a/.claude/skills/form-add/SKILL.md b/.claude/skills/form-add/SKILL.md index 7970b9055..b5570c07c 100644 --- a/.claude/skills/form-add/SKILL.md +++ b/.claude/skills/form-add/SKILL.md @@ -62,10 +62,15 @@ powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/form-add.ps1" -Obje | DocumentJournal, FilterCriterion | List, Custom | | Enum | List, Choice, Custom | | SettingsStorage | Save, Load, Custom | +| Table (таблица внешнего источника) | `tableDataType=ObjectData` — Object, List, Choice, Custom; `NonobjectData` — Record, List, Choice, Custom | Недопустимое сочетание отклоняется со списком доступных для этого типа. У константы собственных форм нет — для неё используется общая форма (`CommonForm`). +Таблица внешнего источника адресуется файлом таблицы: +`ExternalDataSources/<Источник>/Tables/<Таблица>.xml`. Ссылки в такой форме трёхчастные; +без `-Purpose` берётся форма объекта, а у таблицы с составным ключом — форма записи. + ## Примеры ``` diff --git a/.claude/skills/form-add/scripts/form-add.ps1 b/.claude/skills/form-add/scripts/form-add.ps1 index 63a1ca22d..107660776 100644 --- a/.claude/skills/form-add/scripts/form-add.ps1 +++ b/.claude/skills/form-add/scripts/form-add.ps1 @@ -1,4 +1,4 @@ -# form-add v1.28 — Add managed form to 1C config object +# form-add v1.29 — Add managed form to 1C config object # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills [CmdletBinding(PositionalBinding=$false)] param( @@ -370,6 +370,15 @@ $formKinds = @{ "Load" = @{ MainAttr = $null; AttrName = $null; Slot = "DefaultLoadForm" } "Custom" = @{ MainAttr = $null; AttrName = $null; Slot = $null } } + # Таблица внешнего источника — единственный вид, чьё имя в ссылках трёхчастное + # (Источник.Таблица): подставляется {2}, а не {1}. + "Table" = @{ + "Object" = @{ MainAttr = "ExternalDataSourceTableObject.{2}"; AttrName = "Объект"; Slot = "DefaultObjectForm"; SavedData = $true; Primary = $true } + "Record" = @{ MainAttr = "ExternalDataSourceTableRecordManager.{2}"; AttrName = "Запись"; Slot = "DefaultRecordForm"; SavedData = $true } + "List" = @{ MainAttr = "DynamicList"; AttrName = "Список"; Slot = "DefaultListForm" } + "Choice" = @{ MainAttr = "DynamicList"; AttrName = "Список"; Slot = "DefaultChoiceForm" } + "Custom" = @{ MainAttr = $null; AttrName = $null; Slot = $null } + } } # Виды, у которых свойство DefaultForm есть, но собственных форм не бывает — отказ с причиной, @@ -422,6 +431,25 @@ if (-not $objectName) { Write-Host "" Write-Host "=== form-add ===" Write-Host "" +# Ссылка на объект и имя для типов формы. У всех видов это "Вид.Имя", и только +# у таблицы внешнего источника — "ExternalDataSource.<Источник>.Table.<Таблица>", а в именах +# типов — "<Источник>.<Таблица>". Имя источника в самом файле таблицы не хранится — +# единственное место, где навык смотрит на путь: ExternalDataSources/<Источник>/Tables/<Таблица>.xml +$objectQualifiedName = $objectName +$objectRef = "$objectType.$objectName" +if ($objectType -eq "Table") { + $tablesDir = Split-Path -Parent $objectXmlFull.Path + $edsSource = Split-Path -Leaf (Split-Path -Parent $tablesDir) + if (-not $edsSource -or (Split-Path -Leaf $tablesDir) -ne "Tables") { + Write-Error "Таблица внешнего источника ожидается по пути ExternalDataSources/<Источник>/Tables/<Таблица>.xml, а не '$($objectXmlFull.Path)'" + exit 1 + } + $objectQualifiedName = "$edsSource.$objectName" + $objectRef = "ExternalDataSource.$edsSource.Table.$objectName" + $tdtNode = $xmlDoc.SelectSingleNode("//md:Table/md:Properties/md:TableDataType", $nsMgr) + $tableDataType = if ($tdtNode) { $tdtNode.InnerText.Trim() } else { "ObjectData" } +} + Write-Host "Object: $objectType.$objectName" # --- Фаза 2: Валидация Purpose --- @@ -457,8 +485,14 @@ if ($Purpose) { } } if (-not $Purpose) { - foreach ($p in $kindPurposes.Keys) { - if ($kindPurposes[$p].Primary) { $Purpose = $p; break } + if ($objectType -eq "Table" -and $tableDataType -eq "NonobjectData") { + # Пометка Primary в таблице видов одна на вид, а у таблицы с составным ключом + # формы объекта не бывает — основной становится форма записи. + $Purpose = "Record" + } else { + foreach ($p in $kindPurposes.Keys) { + if ($kindPurposes[$p].Primary) { $Purpose = $p; break } + } } } $purposeKey = $null @@ -472,6 +506,20 @@ if (-not $purposeKey) { $Purpose = $purposeKey $purposeRule = $kindPurposes[$Purpose] +# У таблицы внешнего источника набор назначений зависит от вида данных (замерено на +# 8.3.24.1691): ObjectData — Object/List/Choice, NonobjectData — Record/List/Choice. Неверная пара +# не отвергается схемой формы, а валит загрузку всей конфигурации «Исключением XDTO» без причины. +if ($objectType -eq "Table") { + if ($tableDataType -eq "NonobjectData" -and $Purpose -eq "Object") { + Write-Error "Таблица '$objectName' с составным ключом (TableDataType=NonobjectData): формы объекта у неё нет — используйте -Purpose Record." + exit 1 + } + if ($tableDataType -ne "NonobjectData" -and $Purpose -eq "Record") { + Write-Error "Таблица '$objectName' с ключом из одного поля (TableDataType=ObjectData): формы записи у неё нет — используйте -Purpose Object." + exit 1 + } +} + # Гард от повторения дефекта: запись таблицы обязана быть заполненной. Пустой MainAttr — это # произвольная форма (законное состояние), а вот наполовину заполненная запись означала бы, что # таблицу правили невнимательно, и в XML уйдёт мусор вроде `cfg:.Журнал`. @@ -561,13 +609,13 @@ $formXmlPath = Join-Path $formExtDir "Form.xml" # реквизита брался из отдельной карты, и отсутствие вида в ней давало `cfg:.Имя` — молча. $attributesBlock = "" if ($purposeRule.MainAttr) { - $mainAttrType = $purposeRule.MainAttr -f $objectType, $objectName + $mainAttrType = $purposeRule.MainAttr -f $objectType, $objectName, $objectQualifiedName $mainAttrName = $purposeRule.AttrName # Динамический список несёт MainTable, остальные типы — SavedData по записи таблицы. $tailLines = "" if ($mainAttrType -eq "DynamicList") { - $mainTable = "$objectType.$objectName" + $mainTable = $objectRef $tailLines = "`n`t`t`t`n`t`t`t`t$mainTable`n`t`t`t" } elseif ($purposeRule.SavedData) { $tailLines = "`n`t`t`ttrue" @@ -713,7 +761,7 @@ if ($insertBefore) { $existingForms = $childObjects.SelectNodes("md:Form", $nsMgr) $isFirstFormForPurpose = $false $defaultPropName = $null -$defaultValue = "$objectType.$objectName.Form.$FormName" +$defaultValue = "$objectRef.Form.$FormName" # Свойство «основная форма» — из записи таблицы. Раньше выбиралось по одному Purpose без учёта # вида, и для журнала писалось DefaultListForm, которого у журнала нет: слот не находился, навык diff --git a/.claude/skills/form-add/scripts/form-add.py b/.claude/skills/form-add/scripts/form-add.py index bc06e70c9..74282882a 100644 --- a/.claude/skills/form-add/scripts/form-add.py +++ b/.claude/skills/form-add/scripts/form-add.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# form-add v1.28 — Add managed form to 1C config object (Python port) +# form-add v1.29 — Add managed form to 1C config object (Python port) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse @@ -559,6 +559,17 @@ def main(): "Load": {"main_attr": None, "attr_name": None, "slot": "DefaultLoadForm"}, "Custom": {"main_attr": None, "attr_name": None, "slot": None}, }, + # Таблица внешнего источника — единственный вид, чьё имя в ссылках трёхчастное + # (Источник.Таблица): подставляется {2}, а не {1}. + "Table": { + "Object": {"main_attr": "ExternalDataSourceTableObject.{2}", "attr_name": "Объект", + "slot": "DefaultObjectForm", "saved_data": True, "primary": True}, + "Record": {"main_attr": "ExternalDataSourceTableRecordManager.{2}", "attr_name": "Запись", + "slot": "DefaultRecordForm", "saved_data": True}, + "List": {"main_attr": "DynamicList", "attr_name": "Список", "slot": "DefaultListForm"}, + "Choice": {"main_attr": "DynamicList", "attr_name": "Список", "slot": "DefaultChoiceForm"}, + "Custom": {"main_attr": None, "attr_name": None, "slot": None}, + }, } # Виды, у которых свойство DefaultForm есть, но собственных форм не бывает. @@ -604,6 +615,26 @@ def main(): sys.exit(1) object_name = name_node.text + # Ссылка на объект и имя для типов формы. У всех видов это "Вид.Имя", и только + # у таблицы внешнего источника — "ExternalDataSource.<Источник>.Table.<Таблица>", а в именах + # типов — "<Источник>.<Таблица>". Имя источника в самом файле таблицы не хранится — + # единственное место, где навык смотрит на путь: ExternalDataSources/<Источник>/Tables/<Таблица>.xml + object_qualified_name = object_name + object_ref = f"{object_type}.{object_name}" + table_data_type = "ObjectData" + if object_type == "Table": + tables_dir = os.path.dirname(object_xml_full) + eds_source = os.path.basename(os.path.dirname(tables_dir)) + if not eds_source or os.path.basename(tables_dir) != "Tables": + print("Таблица внешнего источника ожидается по пути " + f"ExternalDataSources/<Источник>/Tables/<Таблица>.xml, а не '{object_xml_full}'", file=sys.stderr) + sys.exit(1) + object_qualified_name = f"{eds_source}.{object_name}" + object_ref = f"ExternalDataSource.{eds_source}.Table.{object_name}" + tdt_node = root.find(".//md:Table/md:Properties/md:TableDataType", NSMAP) + if tdt_node is not None and tdt_node.text: + table_data_type = tdt_node.text.strip() + print() print("=== form-add ===") print() @@ -641,10 +672,15 @@ def main(): purpose = purpose_synonyms[purpose_probe] if not purpose: - for k, rule in kind_purposes.items(): - if rule.get("primary"): - purpose = k - break + if object_type == "Table" and table_data_type == "NonobjectData": + # Пометка primary в таблице видов одна на вид, а у таблицы с составным ключом + # формы объекта не бывает — основной становится форма записи. + purpose = "Record" + else: + for k, rule in kind_purposes.items(): + if rule.get("primary"): + purpose = k + break purpose_key = None for k in kind_purposes: if k.lower() == purpose.lower(): @@ -657,6 +693,19 @@ def main(): purpose = purpose_key purpose_rule = kind_purposes[purpose] + # У таблицы внешнего источника набор назначений зависит от вида данных (замерено на + # 8.3.24.1691): ObjectData — Object/List/Choice, NonobjectData — Record/List/Choice. Неверная пара + # не отвергается схемой формы, а валит загрузку всей конфигурации «Исключением XDTO» без причины. + if object_type == "Table": + if table_data_type == "NonobjectData" and purpose == "Object": + print(f"Таблица '{object_name}' с составным ключом (TableDataType=NonobjectData): " + "формы объекта у неё нет — используйте -Purpose Record.", file=sys.stderr) + sys.exit(1) + if table_data_type != "NonobjectData" and purpose == "Record": + print(f"Таблица '{object_name}' с ключом из одного поля (TableDataType=ObjectData): " + "формы записи у неё нет — используйте -Purpose Object.", file=sys.stderr) + sys.exit(1) + # Гард от повторения дефекта: запись таблицы обязана быть заполненной. Пустой main_attr — # это произвольная форма (законное состояние), а наполовину заполненная запись означала бы, # что таблицу правили невнимательно, и в XML уйдёт мусор вроде `cfg:.Журнал`. @@ -724,13 +773,13 @@ def main(): # реквизита брался из отдельной карты, и отсутствие вида в ней давало `cfg:.Имя` — молча. attributes_block = '' if purpose_rule.get("main_attr"): - main_attr_type = purpose_rule["main_attr"].format(object_type, object_name) + main_attr_type = purpose_rule["main_attr"].format(object_type, object_name, object_qualified_name) main_attr_name = purpose_rule["attr_name"] # Динамический список несёт MainTable, остальные типы — SavedData по записи таблицы. tail_lines = '' if main_attr_type == "DynamicList": - main_table = f"{object_type}.{object_name}" + main_table = object_ref tail_lines = ('\t\t\t\n' f'\t\t\t\t{main_table}\n' '\t\t\t\n') @@ -857,7 +906,7 @@ def main(): # --- SetDefault --- is_first_form_for_purpose = False - default_value = f"{object_type}.{object_name}.Form.{form_name}" + default_value = f"{object_ref}.Form.{form_name}" # Свойство «основная форма» — из записи таблицы. Раньше выбиралось по одному purpose без # учёта вида, и для журнала писалось DefaultListForm, которого у журнала нет: слот не diff --git a/.claude/skills/form-validate/scripts/form-validate.ps1 b/.claude/skills/form-validate/scripts/form-validate.ps1 index 85a8940a7..dc2ae3b7a 100644 --- a/.claude/skills/form-validate/scripts/form-validate.ps1 +++ b/.claude/skills/form-validate/scripts/form-validate.ps1 @@ -1,4 +1,4 @@ -# form-validate v1.18 — Validate 1C managed form +# form-validate v1.19 — Validate 1C managed form # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills [CmdletBinding(PositionalBinding=$false)] param( @@ -928,6 +928,8 @@ $validCfgPrefixes = @( "ConstantsSet","DataProcessorObject","DocumentObject","DocumentRef" "DynamicList","EnumRef","ExchangePlanObject","ExchangePlanRef" "ExternalDataProcessorObject","ExternalReportObject" + "ExternalDataSourceTableObject","ExternalDataSourceTableRecordManager" + "ExternalDataSourceTableRef" "InformationRegisterRecordManager","InformationRegisterRecordSet" "ReportObject","TaskObject","TaskRef" ) diff --git a/.claude/skills/form-validate/scripts/form-validate.py b/.claude/skills/form-validate/scripts/form-validate.py index 1b0e36af8..d3d577f07 100644 --- a/.claude/skills/form-validate/scripts/form-validate.py +++ b/.claude/skills/form-validate/scripts/form-validate.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# form-validate v1.18 — Validate 1C managed form +# form-validate v1.19 — Validate 1C managed form # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse @@ -66,6 +66,8 @@ VALID_CFG_PREFIXES = { 'ConstantsSet', 'DataProcessorObject', 'DocumentObject', 'DocumentRef', 'DynamicList', 'EnumRef', 'ExchangePlanObject', 'ExchangePlanRef', 'ExternalDataProcessorObject', 'ExternalReportObject', + 'ExternalDataSourceTableObject', 'ExternalDataSourceTableRecordManager', + 'ExternalDataSourceTableRef', 'InformationRegisterRecordManager', 'InformationRegisterRecordSet', 'ReportObject', 'TaskObject', 'TaskRef', } diff --git a/.claude/skills/meta-compile/reference/external-data-source.md b/.claude/skills/meta-compile/reference/external-data-source.md index 73173c47b..513ffdc6e 100644 --- a/.claude/skills/meta-compile/reference/external-data-source.md +++ b/.claude/skills/meta-compile/reference/external-data-source.md @@ -143,4 +143,5 @@ uuid, а таблицы, которых нет в описании, остану ## Не поддерживается - **Кубы OLAP** (`Cube`, `DimensionTable`, `Dimension`, `Resource`). -- **Формы и модули** таблиц — формы добавляют `form-add` и `form-compile`. +- **Формы и модули** таблиц — форму добавляет навык `form-add`, содержимое собирает `form-compile`. + Набор назначений зависит от `tableDataType`: `ObjectData` — Object/List/Choice, `NonobjectData` — Record/List/Choice. diff --git a/docs/1c-form-spec.md b/docs/1c-form-spec.md index 6c0943e34..387f6af6c 100644 --- a/docs/1c-form-spec.md +++ b/docs/1c-form-spec.md @@ -161,6 +161,7 @@ CommonForms регистрируются в `Configuration.xml`: | BusinessProcess | DefaultObjectForm, DefaultListForm, DefaultChoiceForm | | Task | DefaultObjectForm, DefaultListForm, DefaultChoiceForm | | Constant | DefaultForm — но собственных форм у константы нет, свойство указывает на общую форму | +| Table | DefaultObjectForm, DefaultRecordForm, DefaultListForm, DefaultChoiceForm | | CommonForm | — (регистрируется в Configuration.xml, нет DefaultForm) | > Report.DefaultForm может указывать на общую форму: `CommonForm.ФормаОтчета`. @@ -171,13 +172,13 @@ CommonForms регистрируются в `Configuration.xml`: | Назначение | Свойство объекта | Главный реквизит | Для каких типов | |------------|------------------|------------------|-----------------| -| Форма объекта | DefaultObjectForm | `{Тип}Object.{Имя}` | Catalog, Document, ChartOfAccounts, ChartOfCharacteristicTypes, ChartOfCalculationTypes, ExchangePlan, BusinessProcess, Task | +| Форма объекта | DefaultObjectForm | `{Тип}Object.{Имя}` | Catalog, Document, ChartOfAccounts, ChartOfCharacteristicTypes, ChartOfCalculationTypes, ExchangePlan, BusinessProcess, Task, Table | | Форма обработки/отчёта | DefaultForm | `{Тип}Object.{Имя}` | DataProcessor, Report, ExternalDataProcessor, ExternalReport | | Форма группы | DefaultFolderForm | `{Тип}Object.{Имя}` | Catalog, ChartOfCharacteristicTypes | | Форма списка | DefaultListForm (у DocumentJournal и FilterCriterion — DefaultForm) | `DynamicList` + `MainTable` | все типы со списком | | Форма выбора | DefaultChoiceForm | `DynamicList` + `MainTable` | Catalog, Document, ChartOf*, ExchangePlan, BusinessProcess, Task, Enum | | Форма выбора группы | DefaultFolderChoiceForm | `DynamicList` + `MainTable` | Catalog, ChartOfCharacteristicTypes | -| Форма записи | DefaultRecordForm | `InformationRegisterRecordManager.{Имя}` | InformationRegister | +| Форма записи | DefaultRecordForm | `InformationRegisterRecordManager.{Имя}` или `ExternalDataSourceTableRecordManager.{Источник}.{Имя}` | InformationRegister, Table | | Форма набора записей | — (свойства нет) | `{Тип}RecordSet.{Имя}` | все регистры | | Форма сохранения/загрузки настроек | DefaultSaveForm / DefaultLoadForm | нет | SettingsStorage | | Произвольная форма | — (свойства нет) | нет | любой тип с собственными формами | diff --git a/docs/meta-dsl-spec.md b/docs/meta-dsl-spec.md index f065af902..871939ae7 100644 --- a/docs/meta-dsl-spec.md +++ b/docs/meta-dsl-spec.md @@ -2131,7 +2131,17 @@ ChildObjects и модулей. - **Кубы OLAP** (`Cube`, `DimensionTable`, `Dimension`, `Resource`) не поддерживаются: проверить их платформой нечем — SSAS в контейнер не ставится, а эмит вслепую по документации уже давал осечку. - **Формы, макеты и модули** таблиц компилятор не создаёт — как и у прочих объектов (`form-add`, - `form-compile`, `template-add`). + `form-compile`, `template-add`). У форм таблицы ссылки трёхчастные + (`ExternalDataSource.<И>.Table.<Т>.Form.<Ф>`, главный реквизит `ExternalDataSourceTableObject.<И>.<Т>`), + а набор назначений зависит от `tableDataType` — замерено на 8.3.24.1691: + + | tableDataType | Допустимые назначения | + |---|---| + | `ObjectData` (ключ из одного поля) | Object, List, Choice, Custom | + | `NonobjectData` (составной ключ) | Record, List, Choice, Custom | + + Неверная пара не отвергается схемой формы — она валит загрузку всей конфигурации + «Исключением XDTO при чтении файла», не называя причины, поэтому `form-add` проверяет её сам. - **Таблица без ключевых полей** собирается: загрузку XML платформа принимает молча, хотя Конфигуратор интерактивно ключ требует. `meta-validate` предупреждает, но не отвергает — рабочие конфигурации без ключей существуют. Без ключа недоступны форма записи и набор записей. diff --git a/tests/skills/cases/form-add/eds-table-forms.json b/tests/skills/cases/form-add/eds-table-forms.json new file mode 100644 index 000000000..4e8096854 --- /dev/null +++ b/tests/skills/cases/form-add/eds-table-forms.json @@ -0,0 +1,51 @@ +{ + "name": "Таблица внешнего источника: формы списка и объекта с трёхчастными ссылками", + "preRun": [ + { + "script": "meta-compile/scripts/meta-compile", + "input": { + "type": "ExternalDataSource", + "name": "PG", + "tables": { + "products": { + "keyFields": ["id"], + "tableDataType": "ObjectData", + "fields": ["id: Number(10,0)", "name: String(150)"] + } + } + }, + "args": { "-JsonPath": "{inputFile}", "-OutputDir": "{workDir}" } + }, + { + "script": "form-add/scripts/form-add", + "args": { + "-ObjectPath": "{workDir}/ExternalDataSources/PG/Tables/products.xml", + "-FormName": "ФормаСписка", + "-Purpose": "List" + } + } + ], + "params": { + "objectPath": "ExternalDataSources/PG/Tables/products.xml", + "formName": "ФормаОбъекта" + }, + "args_extra": ["-Purpose", "Object"], + "validatePath": "ExternalDataSources/PG/Tables/products/Forms/ФормаОбъекта", + "expect": { + "stdoutContains": ["DefaultObjectForm: ExternalDataSource.PG.Table.products.Form.ФормаОбъекта"], + "fileContains": [ + { + "file": "ExternalDataSources/PG/Tables/products/Forms/ФормаОбъекта/Ext/Form.xml", + "text": "cfg:ExternalDataSourceTableObject.PG.products" + }, + { + "file": "ExternalDataSources/PG/Tables/products/Forms/ФормаСписка/Ext/Form.xml", + "text": "ExternalDataSource.PG.Table.products" + }, + { + "file": "ExternalDataSources/PG/Tables/products.xml", + "text": ["
ФормаСписка
", "
ФормаОбъекта
"] + } + ] + } +} diff --git a/tests/skills/cases/form-add/eds-table-record-form-rejected.json b/tests/skills/cases/form-add/eds-table-record-form-rejected.json new file mode 100644 index 000000000..898e53227 --- /dev/null +++ b/tests/skills/cases/form-add/eds-table-record-form-rejected.json @@ -0,0 +1,30 @@ +{ + "name": "Форма записи у таблицы с ключом из одного поля — отказ с подсказкой", + "preRun": [ + { + "script": "meta-compile/scripts/meta-compile", + "input": { + "type": "ExternalDataSource", + "name": "PG", + "tables": { + "products": { + "keyFields": ["id"], + "tableDataType": "ObjectData", + "fields": ["id: Number(10,0)"] + } + } + }, + "args": { "-JsonPath": "{inputFile}", "-OutputDir": "{workDir}" } + } + ], + "params": { + "objectPath": "ExternalDataSources/PG/Tables/products.xml", + "formName": "ФормаЗаписи" + }, + "args_extra": ["-Purpose", "Record"], + "expectError": true, + "expect": { + "stderrContains": ["формы записи у неё нет", "-Purpose Object"], + "filesAbsent": ["ExternalDataSources/PG/Tables/products/Forms/ФормаЗаписи.xml"] + } +} diff --git a/tests/skills/cases/form-add/snapshots/eds-table-forms/Configuration.xml b/tests/skills/cases/form-add/snapshots/eds-table-forms/Configuration.xml new file mode 100644 index 000000000..da0e784ee --- /dev/null +++ b/tests/skills/cases/form-add/snapshots/eds-table-forms/Configuration.xml @@ -0,0 +1,252 @@ + + + + + + UUID-002 + UUID-003 + + + UUID-004 + UUID-005 + + + UUID-006 + UUID-007 + + + UUID-008 + UUID-009 + + + UUID-010 + UUID-011 + + + UUID-012 + UUID-013 + + + UUID-014 + UUID-015 + + + + TestConfig + + + ru + TestConfig + + + + + Version8_3_24 + ManagedApplication + + PlatformApplication + + Russian + + + + + false + false + false + + + + + + + + + + + + + + + + + + + + + + Biometrics + true + + + Location + false + + + BackgroundLocation + false + + + BluetoothPrinters + false + + + WiFiPrinters + false + + + Contacts + false + + + Calendars + false + + + PushNotifications + false + + + LocalNotifications + false + + + InAppPurchases + false + + + PersonalComputerFileExchange + false + + + Ads + false + + + NumberDialing + false + + + CallProcessing + false + + + CallLog + false + + + AutoSendSMS + false + + + ReceiveSMS + false + + + SMSLog + false + + + Camera + false + + + Microphone + false + + + MusicLibrary + false + + + PictureAndVideoLibraries + false + + + AudioPlaybackAndVibration + false + + + BackgroundAudioPlaybackAndVibration + false + + + InstallPackages + false + + + OSBackup + true + + + ApplicationUsageStatistics + false + + + BarcodeScanning + false + + + BackgroundAudioRecording + false + + + AllFilesAccess + false + + + Videoconferences + false + + + NFC + false + + + DocumentScanning + false + + + SpeechToText + false + + + Geofences + false + + + IncomingShareRequests + false + + + AllIncomingShareRequestsTypesProcessing + false + + + + + + Normal + + + Language.Русский + + + + + + Managed + NotAutoFree + DontUse + DontUse + TaxiEnableVersion8_2 + DontUse + Version8_3_24 + + + + Русский + PG + + + \ No newline at end of file diff --git a/tests/skills/cases/form-add/snapshots/eds-table-forms/Ext/ClientApplicationInterface.xml b/tests/skills/cases/form-add/snapshots/eds-table-forms/Ext/ClientApplicationInterface.xml new file mode 100644 index 000000000..3c1161b2d --- /dev/null +++ b/tests/skills/cases/form-add/snapshots/eds-table-forms/Ext/ClientApplicationInterface.xml @@ -0,0 +1,18 @@ + + + + + UUID-002 + + + + + UUID-004 + + + + + + + + \ No newline at end of file diff --git a/tests/skills/cases/form-add/snapshots/eds-table-forms/ExternalDataSources/PG.xml b/tests/skills/cases/form-add/snapshots/eds-table-forms/ExternalDataSources/PG.xml new file mode 100644 index 000000000..a1b89619b --- /dev/null +++ b/tests/skills/cases/form-add/snapshots/eds-table-forms/ExternalDataSources/PG.xml @@ -0,0 +1,33 @@ + + + + + + UUID-002 + UUID-003 + + + UUID-004 + UUID-005 + + + UUID-006 + UUID-007 + + + + PG + + + ru + PG + + + + Automatic + + + products
+
+
+
\ No newline at end of file diff --git a/tests/skills/cases/form-add/snapshots/eds-table-forms/ExternalDataSources/PG/Tables/products.xml b/tests/skills/cases/form-add/snapshots/eds-table-forms/ExternalDataSources/PG/Tables/products.xml new file mode 100644 index 000000000..8209269f8 --- /dev/null +++ b/tests/skills/cases/form-add/snapshots/eds-table-forms/ExternalDataSources/PG/Tables/products.xml @@ -0,0 +1,173 @@ + + + + + + UUID-002 + UUID-003 + + + UUID-004 + UUID-005 + + + UUID-006 + UUID-007 + + + UUID-008 + UUID-009 + + + UUID-010 + UUID-011 + + + UUID-012 + UUID-013 + + + UUID-014 + UUID-015 + + + UUID-016 + UUID-017 + + + + products + + + ru + products + + + + Table + products + + ObjectData + + ExternalDataSource.PG.Table.products.Field.id + + + + + + true + false + + Auto + Begin + Directly + Auto + ExternalDataSource.PG.Table.products.Form.ФормаОбъекта + + ExternalDataSource.PG.Table.products.Form.ФормаСписка + + + + + + + + + false + false + Auto + + InDialog + + + Automatic + + + + + id + + + ru + id + + + + + xs:decimal + + 10 + 0 + Any + + + false + + + + false + + false + false + + + false + 0 + DontCheck + + + Auto + Auto + Auto + + id + false + false + + + + + name + + + ru + name + + + + + xs:string + + 150 + Variable + + + false + + + + false + + false + false + + + false + + DontCheck + + + Auto + Auto + Auto + + name + false + false + + +
ФормаСписка +
ФормаОбъекта +
+
+
\ No newline at end of file diff --git a/tests/skills/cases/form-add/snapshots/eds-table-forms/ExternalDataSources/PG/Tables/products/Forms/ФормаОбъекта.xml b/tests/skills/cases/form-add/snapshots/eds-table-forms/ExternalDataSources/PG/Tables/products/Forms/ФормаОбъекта.xml new file mode 100644 index 000000000..18b123182 --- /dev/null +++ b/tests/skills/cases/form-add/snapshots/eds-table-forms/ExternalDataSources/PG/Tables/products/Forms/ФормаОбъекта.xml @@ -0,0 +1,21 @@ + + +
+ + ФормаОбъекта + + + ru + ФормаОбъекта + + + + Managed + false + + PlatformApplication + MobilePlatformApplication + + +
+
\ No newline at end of file diff --git a/tests/skills/cases/form-add/snapshots/eds-table-forms/ExternalDataSources/PG/Tables/products/Forms/ФормаОбъекта/Ext/Form.xml b/tests/skills/cases/form-add/snapshots/eds-table-forms/ExternalDataSources/PG/Tables/products/Forms/ФормаОбъекта/Ext/Form.xml new file mode 100644 index 000000000..d96ede5d0 --- /dev/null +++ b/tests/skills/cases/form-add/snapshots/eds-table-forms/ExternalDataSources/PG/Tables/products/Forms/ФормаОбъекта/Ext/Form.xml @@ -0,0 +1,16 @@ + +
+ + true + + + + + + cfg:ExternalDataSourceTableObject.PG.products + + true + true + + + \ No newline at end of file diff --git a/tests/skills/cases/form-add/snapshots/eds-table-forms/ExternalDataSources/PG/Tables/products/Forms/ФормаОбъекта/Ext/Form/Module.bsl b/tests/skills/cases/form-add/snapshots/eds-table-forms/ExternalDataSources/PG/Tables/products/Forms/ФормаОбъекта/Ext/Form/Module.bsl new file mode 100644 index 000000000..8ead4cec0 --- /dev/null +++ b/tests/skills/cases/form-add/snapshots/eds-table-forms/ExternalDataSources/PG/Tables/products/Forms/ФормаОбъекта/Ext/Form/Module.bsl @@ -0,0 +1,19 @@ +#Область ОбработчикиСобытийФормы + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовФормы + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +#КонецОбласти + +#Область ОбработчикиОповещений + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#КонецОбласти \ No newline at end of file diff --git a/tests/skills/cases/form-add/snapshots/eds-table-forms/ExternalDataSources/PG/Tables/products/Forms/ФормаСписка.xml b/tests/skills/cases/form-add/snapshots/eds-table-forms/ExternalDataSources/PG/Tables/products/Forms/ФормаСписка.xml new file mode 100644 index 000000000..79ff6a75b --- /dev/null +++ b/tests/skills/cases/form-add/snapshots/eds-table-forms/ExternalDataSources/PG/Tables/products/Forms/ФормаСписка.xml @@ -0,0 +1,21 @@ + + +
+ + ФормаСписка + + + ru + ФормаСписка + + + + Managed + false + + PlatformApplication + MobilePlatformApplication + + +
+
\ No newline at end of file diff --git a/tests/skills/cases/form-add/snapshots/eds-table-forms/ExternalDataSources/PG/Tables/products/Forms/ФормаСписка/Ext/Form.xml b/tests/skills/cases/form-add/snapshots/eds-table-forms/ExternalDataSources/PG/Tables/products/Forms/ФормаСписка/Ext/Form.xml new file mode 100644 index 000000000..5d909ff61 --- /dev/null +++ b/tests/skills/cases/form-add/snapshots/eds-table-forms/ExternalDataSources/PG/Tables/products/Forms/ФормаСписка/Ext/Form.xml @@ -0,0 +1,18 @@ + +
+ + true + + + + + + cfg:DynamicList + + true + + ExternalDataSource.PG.Table.products + + + + \ No newline at end of file diff --git a/tests/skills/cases/form-add/snapshots/eds-table-forms/ExternalDataSources/PG/Tables/products/Forms/ФормаСписка/Ext/Form/Module.bsl b/tests/skills/cases/form-add/snapshots/eds-table-forms/ExternalDataSources/PG/Tables/products/Forms/ФормаСписка/Ext/Form/Module.bsl new file mode 100644 index 000000000..8ead4cec0 --- /dev/null +++ b/tests/skills/cases/form-add/snapshots/eds-table-forms/ExternalDataSources/PG/Tables/products/Forms/ФормаСписка/Ext/Form/Module.bsl @@ -0,0 +1,19 @@ +#Область ОбработчикиСобытийФормы + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовФормы + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +#КонецОбласти + +#Область ОбработчикиОповещений + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#КонецОбласти \ No newline at end of file diff --git a/tests/skills/cases/form-add/snapshots/eds-table-forms/Languages/Русский.xml b/tests/skills/cases/form-add/snapshots/eds-table-forms/Languages/Русский.xml new file mode 100644 index 000000000..37c60d786 --- /dev/null +++ b/tests/skills/cases/form-add/snapshots/eds-table-forms/Languages/Русский.xml @@ -0,0 +1,16 @@ + + + + + Русский + + + ru + Русский + + + + ru + + + \ No newline at end of file