mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-13 22:35:16 +03:00
test(meta-compile): закрыть 1С-cert пробелы (стабы кросс-ссылок/форм/макетов)
Сплошной verify-snapshots --skill meta-compile был 51/68 — 17 кейсов падали на «Неизвестный объект метаданных»/картинки/предопределённые (cert-инфра не создавала объекты, на которые ссылается вход). Все пред-существующие (не связаны с dataLockControlMode). Доведено до 68/68, ноль регрессий. verify-snapshots.mjs (инфра): - getFieldStubs: обобщённый парсер MDObjectRef-путей (Тип.Имя[.ТЧ].Реквизит/ Измерение/Ресурс.Поле, +рус.синонимы) → богатые стабы; enum-значения и предопределённые элементы из fillValue/choiceParameters; регистратор для register-стабов. Покрывает FilterCriterion/FunctionalOption/CommonAttribute/ basedOn/owners и т.д. - makeStubDSL +CommonPicture/DefinedType/SettingsStorage/CommonTemplate; extractTypeRefs +эти паттерны и Characteristic.X→ChartOfCharacteristicTypes. - Step 5.5: верификатор досоздаёт формы/макеты (form-add/template-add) по ссылкам объекта (key-driven, любая нотация; гард поддерживаемых form-add типов). - postWrite + ветка EventSubscription: стаб CommonModule с телом экспортного метода-обработчика. Правки кейсов (реалистичность, не маскировка — компилятор эмитит верно): - catalog-command: валидные группы командам (1С требует группу). - catalog-inputbystring-datalock: owner (валидирует Владелец) + индексированное строковое поле inputByString (ссылочное 1С отвергает). - catalog-characteristics: preRun-фикстура ДопРеквизиты по реальному ЕРП-паттерну (ПВХ ВидыСвойств + наборы + регистр с Значение=Characteristic+LinkByType) + собственная ТЧ объекта. NB (в эту задачу не входит): пробелы валидации компилятора по командам — пустой <Group> из безгруппной команды и неконтролируемое сочетание навигационной группы с commandParameterType — закрыть отдельно (проверки/умолчания). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,8 +1,37 @@
|
||||
{
|
||||
"name": "Характеристики ПВХ (Дополнительные реквизиты и сведения)",
|
||||
"preRun": [
|
||||
{
|
||||
"script": "meta-compile/scripts/meta-compile",
|
||||
"input": { "type": "ChartOfCharacteristicTypes", "name": "ВидыСвойств",
|
||||
"valueTypes": ["String(100)", "Number(15,2)", "Boolean"] },
|
||||
"args": { "-JsonPath": "{inputFile}", "-OutputDir": "{workDir}" }
|
||||
},
|
||||
{
|
||||
"script": "meta-compile/scripts/meta-compile",
|
||||
"input": { "type": "Catalog", "name": "НаборыДопРеквИСвед",
|
||||
"tabularSections": {
|
||||
"ДополнительныеРеквизиты": ["Свойство: ChartOfCharacteristicTypesRef.ВидыСвойств"],
|
||||
"ДополнительныеСведения": ["Свойство: ChartOfCharacteristicTypesRef.ВидыСвойств"]
|
||||
},
|
||||
"predefined": ["Справочник_Организации"] },
|
||||
"args": { "-JsonPath": "{inputFile}", "-OutputDir": "{workDir}" }
|
||||
},
|
||||
{
|
||||
"script": "meta-compile/scripts/meta-compile",
|
||||
"input": { "type": "InformationRegister", "name": "ДополнительныеСведения",
|
||||
"dimensions": ["Объект: CatalogRef.Организации", "Свойство: ChartOfCharacteristicTypesRef.ВидыСвойств"],
|
||||
"resources": [{ "name": "Значение", "type": "Characteristic.ВидыСвойств",
|
||||
"linkByType": { "dataPath": "InformationRegister.ДополнительныеСведения.Dimension.Свойство" } }] },
|
||||
"args": { "-JsonPath": "{inputFile}", "-OutputDir": "{workDir}" }
|
||||
}
|
||||
],
|
||||
"input": {
|
||||
"type": "Catalog",
|
||||
"name": "Организации",
|
||||
"tabularSections": {
|
||||
"ДополнительныеРеквизиты": ["Свойство: ChartOfCharacteristicTypesRef.ВидыСвойств", "Значение: Characteristic.ВидыСвойств"]
|
||||
},
|
||||
"characteristics": [
|
||||
{ "types": { "from": "Справочник.НаборыДопРеквИСвед.ДополнительныеРеквизиты",
|
||||
"key": "Свойство", "filterField": "Ссылка", "filterValue": "Catalog.НаборыДопРеквИСвед.Справочник_Организации" },
|
||||
|
||||
@@ -14,10 +14,12 @@
|
||||
},
|
||||
"ЗагрузитьИзФайла": {
|
||||
"synonym": "Загрузить из файла",
|
||||
"group": "FormCommandBarImportant",
|
||||
"picture": "CommonPicture.Загрузка",
|
||||
"loadTransparent": false
|
||||
},
|
||||
"ОбновитьСписок": {
|
||||
"group": "FormNavigationPanelGoTo",
|
||||
"picture": { "src": "StdPicture.Refresh", "transparentPixel": { "x": 0, "y": 0 } }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,14 +3,16 @@
|
||||
"input": {
|
||||
"type": "Catalog",
|
||||
"name": "ДоговорыКонтрагентов",
|
||||
"owners": ["Catalog.Контрагенты"],
|
||||
"codeLength": 11,
|
||||
"descriptionLength": 100,
|
||||
"inputByString": ["Код", "Наименование", "Контрагент"],
|
||||
"inputByString": ["Код", "Наименование", "НомерДоговора"],
|
||||
"dataLockFields": ["Организация", "Контрагент", "Владелец"],
|
||||
"basedOn": ["Catalog.Контрагенты", "Document.ЗаказПоставщику"],
|
||||
"attributes": [
|
||||
"Организация: CatalogRef.Организации",
|
||||
"Контрагент: CatalogRef.Контрагенты"
|
||||
"Контрагент: CatalogRef.Контрагенты",
|
||||
"НомерДоговора: String(20) | index"
|
||||
]
|
||||
},
|
||||
"validatePath": "Catalogs/ДоговорыКонтрагентов",
|
||||
|
||||
+276
@@ -0,0 +1,276 @@
|
||||
<?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">
|
||||
<Catalog uuid="UUID-001">
|
||||
<InternalInfo>
|
||||
<xr:GeneratedType name="CatalogObject.НаборыДопРеквИСвед" category="Object">
|
||||
<xr:TypeId>UUID-002</xr:TypeId>
|
||||
<xr:ValueId>UUID-003</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="CatalogRef.НаборыДопРеквИСвед" category="Ref">
|
||||
<xr:TypeId>UUID-004</xr:TypeId>
|
||||
<xr:ValueId>UUID-005</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="CatalogSelection.НаборыДопРеквИСвед" category="Selection">
|
||||
<xr:TypeId>UUID-006</xr:TypeId>
|
||||
<xr:ValueId>UUID-007</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="CatalogList.НаборыДопРеквИСвед" category="List">
|
||||
<xr:TypeId>UUID-008</xr:TypeId>
|
||||
<xr:ValueId>UUID-009</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="CatalogManager.НаборыДопРеквИСвед" category="Manager">
|
||||
<xr:TypeId>UUID-010</xr:TypeId>
|
||||
<xr:ValueId>UUID-011</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
</InternalInfo>
|
||||
<Properties>
|
||||
<Name>НаборыДопРеквИСвед</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Наборы доп рекв исвед</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<Hierarchical>false</Hierarchical>
|
||||
<HierarchyType>HierarchyFoldersAndItems</HierarchyType>
|
||||
<LimitLevelCount>false</LimitLevelCount>
|
||||
<LevelCount>2</LevelCount>
|
||||
<FoldersOnTop>true</FoldersOnTop>
|
||||
<UseStandardCommands>true</UseStandardCommands>
|
||||
<Owners/>
|
||||
<SubordinationUse>ToItems</SubordinationUse>
|
||||
<CodeLength>9</CodeLength>
|
||||
<DescriptionLength>25</DescriptionLength>
|
||||
<CodeType>String</CodeType>
|
||||
<CodeAllowedLength>Variable</CodeAllowedLength>
|
||||
<CodeSeries>WholeCatalog</CodeSeries>
|
||||
<CheckUnique>false</CheckUnique>
|
||||
<Autonumbering>true</Autonumbering>
|
||||
<DefaultPresentation>AsDescription</DefaultPresentation>
|
||||
<Characteristics/>
|
||||
<PredefinedDataUpdate>Auto</PredefinedDataUpdate>
|
||||
<EditType>InDialog</EditType>
|
||||
<QuickChoice>false</QuickChoice>
|
||||
<ChoiceMode>BothWays</ChoiceMode>
|
||||
<InputByString>
|
||||
<xr:Field>Catalog.НаборыДопРеквИСвед.StandardAttribute.Description</xr:Field>
|
||||
<xr:Field>Catalog.НаборыДопРеквИСвед.StandardAttribute.Code</xr:Field>
|
||||
</InputByString>
|
||||
<SearchStringModeOnInputByString>Begin</SearchStringModeOnInputByString>
|
||||
<FullTextSearchOnInputByString>DontUse</FullTextSearchOnInputByString>
|
||||
<ChoiceDataGetModeOnInputByString>Directly</ChoiceDataGetModeOnInputByString>
|
||||
<DefaultObjectForm/>
|
||||
<DefaultFolderForm/>
|
||||
<DefaultListForm/>
|
||||
<DefaultChoiceForm/>
|
||||
<DefaultFolderChoiceForm/>
|
||||
<AuxiliaryObjectForm/>
|
||||
<AuxiliaryFolderForm/>
|
||||
<AuxiliaryListForm/>
|
||||
<AuxiliaryChoiceForm/>
|
||||
<AuxiliaryFolderChoiceForm/>
|
||||
<IncludeHelpInContents>false</IncludeHelpInContents>
|
||||
<BasedOn/>
|
||||
<DataLockFields/>
|
||||
<DataLockControlMode>Managed</DataLockControlMode>
|
||||
<FullTextSearch>Use</FullTextSearch>
|
||||
<ObjectPresentation/>
|
||||
<ExtendedObjectPresentation/>
|
||||
<ListPresentation/>
|
||||
<ExtendedListPresentation/>
|
||||
<Explanation/>
|
||||
<CreateOnInput>Use</CreateOnInput>
|
||||
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||
<DataHistory>DontUse</DataHistory>
|
||||
<UpdateDataHistoryImmediatelyAfterWrite>false</UpdateDataHistoryImmediatelyAfterWrite>
|
||||
<ExecuteAfterWriteDataHistoryVersionProcessing>false</ExecuteAfterWriteDataHistoryVersionProcessing>
|
||||
</Properties>
|
||||
<ChildObjects>
|
||||
<TabularSection uuid="UUID-012">
|
||||
<InternalInfo>
|
||||
<xr:GeneratedType name="CatalogTabularSection.НаборыДопРеквИСвед.ДополнительныеРеквизиты" category="TabularSection">
|
||||
<xr:TypeId>UUID-013</xr:TypeId>
|
||||
<xr:ValueId>UUID-014</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="CatalogTabularSectionRow.НаборыДопРеквИСвед.ДополнительныеРеквизиты" category="TabularSectionRow">
|
||||
<xr:TypeId>UUID-015</xr:TypeId>
|
||||
<xr:ValueId>UUID-016</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
</InternalInfo>
|
||||
<Properties>
|
||||
<Name>ДополнительныеРеквизиты</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Дополнительные реквизиты</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<ToolTip/>
|
||||
<FillChecking>DontCheck</FillChecking>
|
||||
<StandardAttributes>
|
||||
<xr:StandardAttribute name="LineNumber">
|
||||
<xr:LinkByType/>
|
||||
<xr:FillChecking>DontCheck</xr:FillChecking>
|
||||
<xr:MultiLine>false</xr:MultiLine>
|
||||
<xr:FillFromFillingValue>false</xr:FillFromFillingValue>
|
||||
<xr:CreateOnInput>Auto</xr:CreateOnInput>
|
||||
<xr:MaxValue xsi:nil="true"/>
|
||||
<xr:ToolTip/>
|
||||
<xr:ExtendedEdit>false</xr:ExtendedEdit>
|
||||
<xr:Format/>
|
||||
<xr:ChoiceForm/>
|
||||
<xr:QuickChoice>Auto</xr:QuickChoice>
|
||||
<xr:ChoiceHistoryOnInput>Auto</xr:ChoiceHistoryOnInput>
|
||||
<xr:EditFormat/>
|
||||
<xr:PasswordMode>false</xr:PasswordMode>
|
||||
<xr:DataHistory>Use</xr:DataHistory>
|
||||
<xr:MarkNegatives>false</xr:MarkNegatives>
|
||||
<xr:MinValue xsi:nil="true"/>
|
||||
<xr:Synonym/>
|
||||
<xr:Comment/>
|
||||
<xr:FullTextSearch>Use</xr:FullTextSearch>
|
||||
<xr:ChoiceParameterLinks/>
|
||||
<xr:FillValue xsi:nil="true"/>
|
||||
<xr:Mask/>
|
||||
<xr:ChoiceParameters/>
|
||||
</xr:StandardAttribute>
|
||||
</StandardAttributes>
|
||||
<Use>ForItem</Use>
|
||||
</Properties>
|
||||
<ChildObjects>
|
||||
<Attribute uuid="UUID-017">
|
||||
<Properties>
|
||||
<Name>Свойство</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Свойство</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<Type>
|
||||
<v8:Type xmlns:d5p1="http://v8.1c.ru/8.1/data/enterprise/current-config">d5p1:ChartOfCharacteristicTypesRef.ВидыСвойств</v8:Type>
|
||||
</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"/>
|
||||
<FillChecking>DontCheck</FillChecking>
|
||||
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
|
||||
<ChoiceParameterLinks/>
|
||||
<ChoiceParameters/>
|
||||
<QuickChoice>Auto</QuickChoice>
|
||||
<CreateOnInput>Auto</CreateOnInput>
|
||||
<ChoiceForm/>
|
||||
<LinkByType/>
|
||||
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||
<Indexing>DontIndex</Indexing>
|
||||
<FullTextSearch>Use</FullTextSearch>
|
||||
<DataHistory>Use</DataHistory>
|
||||
</Properties>
|
||||
</Attribute>
|
||||
</ChildObjects>
|
||||
</TabularSection>
|
||||
<TabularSection uuid="UUID-018">
|
||||
<InternalInfo>
|
||||
<xr:GeneratedType name="CatalogTabularSection.НаборыДопРеквИСвед.ДополнительныеСведения" category="TabularSection">
|
||||
<xr:TypeId>UUID-019</xr:TypeId>
|
||||
<xr:ValueId>UUID-020</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="CatalogTabularSectionRow.НаборыДопРеквИСвед.ДополнительныеСведения" category="TabularSectionRow">
|
||||
<xr:TypeId>UUID-021</xr:TypeId>
|
||||
<xr:ValueId>UUID-022</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
</InternalInfo>
|
||||
<Properties>
|
||||
<Name>ДополнительныеСведения</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Дополнительные сведения</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<ToolTip/>
|
||||
<FillChecking>DontCheck</FillChecking>
|
||||
<StandardAttributes>
|
||||
<xr:StandardAttribute name="LineNumber">
|
||||
<xr:LinkByType/>
|
||||
<xr:FillChecking>DontCheck</xr:FillChecking>
|
||||
<xr:MultiLine>false</xr:MultiLine>
|
||||
<xr:FillFromFillingValue>false</xr:FillFromFillingValue>
|
||||
<xr:CreateOnInput>Auto</xr:CreateOnInput>
|
||||
<xr:MaxValue xsi:nil="true"/>
|
||||
<xr:ToolTip/>
|
||||
<xr:ExtendedEdit>false</xr:ExtendedEdit>
|
||||
<xr:Format/>
|
||||
<xr:ChoiceForm/>
|
||||
<xr:QuickChoice>Auto</xr:QuickChoice>
|
||||
<xr:ChoiceHistoryOnInput>Auto</xr:ChoiceHistoryOnInput>
|
||||
<xr:EditFormat/>
|
||||
<xr:PasswordMode>false</xr:PasswordMode>
|
||||
<xr:DataHistory>Use</xr:DataHistory>
|
||||
<xr:MarkNegatives>false</xr:MarkNegatives>
|
||||
<xr:MinValue xsi:nil="true"/>
|
||||
<xr:Synonym/>
|
||||
<xr:Comment/>
|
||||
<xr:FullTextSearch>Use</xr:FullTextSearch>
|
||||
<xr:ChoiceParameterLinks/>
|
||||
<xr:FillValue xsi:nil="true"/>
|
||||
<xr:Mask/>
|
||||
<xr:ChoiceParameters/>
|
||||
</xr:StandardAttribute>
|
||||
</StandardAttributes>
|
||||
<Use>ForItem</Use>
|
||||
</Properties>
|
||||
<ChildObjects>
|
||||
<Attribute uuid="UUID-023">
|
||||
<Properties>
|
||||
<Name>Свойство</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Свойство</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<Type>
|
||||
<v8:Type xmlns:d5p1="http://v8.1c.ru/8.1/data/enterprise/current-config">d5p1:ChartOfCharacteristicTypesRef.ВидыСвойств</v8:Type>
|
||||
</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"/>
|
||||
<FillChecking>DontCheck</FillChecking>
|
||||
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
|
||||
<ChoiceParameterLinks/>
|
||||
<ChoiceParameters/>
|
||||
<QuickChoice>Auto</QuickChoice>
|
||||
<CreateOnInput>Auto</CreateOnInput>
|
||||
<ChoiceForm/>
|
||||
<LinkByType/>
|
||||
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||
<Indexing>DontIndex</Indexing>
|
||||
<FullTextSearch>Use</FullTextSearch>
|
||||
<DataHistory>Use</DataHistory>
|
||||
</Properties>
|
||||
</Attribute>
|
||||
</ChildObjects>
|
||||
</TabularSection>
|
||||
</ChildObjects>
|
||||
</Catalog>
|
||||
</MetaDataObject>
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<PredefinedData xmlns="http://v8.1c.ru/8.3/xcf/predef" xmlns:v8="http://v8.1c.ru/8.1/data/core" 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" xsi:type="CatalogPredefinedItems" version="2.17">
|
||||
<Item id="UUID-001">
|
||||
<Name>Справочник_Организации</Name>
|
||||
<Code/>
|
||||
<Description>Справочник_организации</Description>
|
||||
<IsFolder>false</IsFolder>
|
||||
</Item>
|
||||
</PredefinedData>
|
||||
+131
-1
@@ -119,6 +119,136 @@
|
||||
<UpdateDataHistoryImmediatelyAfterWrite>false</UpdateDataHistoryImmediatelyAfterWrite>
|
||||
<ExecuteAfterWriteDataHistoryVersionProcessing>false</ExecuteAfterWriteDataHistoryVersionProcessing>
|
||||
</Properties>
|
||||
<ChildObjects/>
|
||||
<ChildObjects>
|
||||
<TabularSection uuid="UUID-012">
|
||||
<InternalInfo>
|
||||
<xr:GeneratedType name="CatalogTabularSection.Организации.ДополнительныеРеквизиты" category="TabularSection">
|
||||
<xr:TypeId>UUID-013</xr:TypeId>
|
||||
<xr:ValueId>UUID-014</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="CatalogTabularSectionRow.Организации.ДополнительныеРеквизиты" category="TabularSectionRow">
|
||||
<xr:TypeId>UUID-015</xr:TypeId>
|
||||
<xr:ValueId>UUID-016</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
</InternalInfo>
|
||||
<Properties>
|
||||
<Name>ДополнительныеРеквизиты</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Дополнительные реквизиты</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<ToolTip/>
|
||||
<FillChecking>DontCheck</FillChecking>
|
||||
<StandardAttributes>
|
||||
<xr:StandardAttribute name="LineNumber">
|
||||
<xr:LinkByType/>
|
||||
<xr:FillChecking>DontCheck</xr:FillChecking>
|
||||
<xr:MultiLine>false</xr:MultiLine>
|
||||
<xr:FillFromFillingValue>false</xr:FillFromFillingValue>
|
||||
<xr:CreateOnInput>Auto</xr:CreateOnInput>
|
||||
<xr:MaxValue xsi:nil="true"/>
|
||||
<xr:ToolTip/>
|
||||
<xr:ExtendedEdit>false</xr:ExtendedEdit>
|
||||
<xr:Format/>
|
||||
<xr:ChoiceForm/>
|
||||
<xr:QuickChoice>Auto</xr:QuickChoice>
|
||||
<xr:ChoiceHistoryOnInput>Auto</xr:ChoiceHistoryOnInput>
|
||||
<xr:EditFormat/>
|
||||
<xr:PasswordMode>false</xr:PasswordMode>
|
||||
<xr:DataHistory>Use</xr:DataHistory>
|
||||
<xr:MarkNegatives>false</xr:MarkNegatives>
|
||||
<xr:MinValue xsi:nil="true"/>
|
||||
<xr:Synonym/>
|
||||
<xr:Comment/>
|
||||
<xr:FullTextSearch>Use</xr:FullTextSearch>
|
||||
<xr:ChoiceParameterLinks/>
|
||||
<xr:FillValue xsi:nil="true"/>
|
||||
<xr:Mask/>
|
||||
<xr:ChoiceParameters/>
|
||||
</xr:StandardAttribute>
|
||||
</StandardAttributes>
|
||||
<Use>ForItem</Use>
|
||||
</Properties>
|
||||
<ChildObjects>
|
||||
<Attribute uuid="UUID-017">
|
||||
<Properties>
|
||||
<Name>Свойство</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Свойство</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<Type>
|
||||
<v8:Type xmlns:d5p1="http://v8.1c.ru/8.1/data/enterprise/current-config">d5p1:ChartOfCharacteristicTypesRef.ВидыСвойств</v8:Type>
|
||||
</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"/>
|
||||
<FillChecking>DontCheck</FillChecking>
|
||||
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
|
||||
<ChoiceParameterLinks/>
|
||||
<ChoiceParameters/>
|
||||
<QuickChoice>Auto</QuickChoice>
|
||||
<CreateOnInput>Auto</CreateOnInput>
|
||||
<ChoiceForm/>
|
||||
<LinkByType/>
|
||||
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||
<Indexing>DontIndex</Indexing>
|
||||
<FullTextSearch>Use</FullTextSearch>
|
||||
<DataHistory>Use</DataHistory>
|
||||
</Properties>
|
||||
</Attribute>
|
||||
<Attribute uuid="UUID-018">
|
||||
<Properties>
|
||||
<Name>Значение</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Значение</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<Type>
|
||||
<v8:TypeSet>cfg:Characteristic.ВидыСвойств</v8:TypeSet>
|
||||
</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"/>
|
||||
<FillChecking>DontCheck</FillChecking>
|
||||
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
|
||||
<ChoiceParameterLinks/>
|
||||
<ChoiceParameters/>
|
||||
<QuickChoice>Auto</QuickChoice>
|
||||
<CreateOnInput>Auto</CreateOnInput>
|
||||
<ChoiceForm/>
|
||||
<LinkByType/>
|
||||
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||
<Indexing>DontIndex</Indexing>
|
||||
<FullTextSearch>Use</FullTextSearch>
|
||||
<DataHistory>Use</DataHistory>
|
||||
</Properties>
|
||||
</Attribute>
|
||||
</ChildObjects>
|
||||
</TabularSection>
|
||||
</ChildObjects>
|
||||
</Catalog>
|
||||
</MetaDataObject>
|
||||
|
||||
+104
@@ -0,0 +1,104 @@
|
||||
<?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">
|
||||
<ChartOfCharacteristicTypes uuid="UUID-001">
|
||||
<InternalInfo>
|
||||
<xr:GeneratedType name="ChartOfCharacteristicTypesObject.ВидыСвойств" category="Object">
|
||||
<xr:TypeId>UUID-002</xr:TypeId>
|
||||
<xr:ValueId>UUID-003</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="ChartOfCharacteristicTypesRef.ВидыСвойств" category="Ref">
|
||||
<xr:TypeId>UUID-004</xr:TypeId>
|
||||
<xr:ValueId>UUID-005</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="ChartOfCharacteristicTypesSelection.ВидыСвойств" category="Selection">
|
||||
<xr:TypeId>UUID-006</xr:TypeId>
|
||||
<xr:ValueId>UUID-007</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="ChartOfCharacteristicTypesList.ВидыСвойств" category="List">
|
||||
<xr:TypeId>UUID-008</xr:TypeId>
|
||||
<xr:ValueId>UUID-009</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="Characteristic.ВидыСвойств" category="Characteristic">
|
||||
<xr:TypeId>UUID-010</xr:TypeId>
|
||||
<xr:ValueId>UUID-011</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="ChartOfCharacteristicTypesManager.ВидыСвойств" category="Manager">
|
||||
<xr:TypeId>UUID-012</xr:TypeId>
|
||||
<xr:ValueId>UUID-013</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
</InternalInfo>
|
||||
<Properties>
|
||||
<Name>ВидыСвойств</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Виды свойств</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<UseStandardCommands>true</UseStandardCommands>
|
||||
<IncludeHelpInContents>false</IncludeHelpInContents>
|
||||
<CharacteristicExtValues/>
|
||||
<Type>
|
||||
<v8:Type>xs:string</v8:Type>
|
||||
<v8:StringQualifiers>
|
||||
<v8:Length>100</v8:Length>
|
||||
<v8:AllowedLength>Variable</v8:AllowedLength>
|
||||
</v8:StringQualifiers>
|
||||
<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>
|
||||
<v8:Type>xs:boolean</v8:Type>
|
||||
</Type>
|
||||
<Hierarchical>false</Hierarchical>
|
||||
<FoldersOnTop>true</FoldersOnTop>
|
||||
<CodeLength>9</CodeLength>
|
||||
<CodeAllowedLength>Variable</CodeAllowedLength>
|
||||
<DescriptionLength>100</DescriptionLength>
|
||||
<CodeSeries>WholeCharacteristicKind</CodeSeries>
|
||||
<CheckUnique>true</CheckUnique>
|
||||
<Autonumbering>true</Autonumbering>
|
||||
<DefaultPresentation>AsDescription</DefaultPresentation>
|
||||
<Characteristics/>
|
||||
<PredefinedDataUpdate>Auto</PredefinedDataUpdate>
|
||||
<EditType>InDialog</EditType>
|
||||
<QuickChoice>false</QuickChoice>
|
||||
<ChoiceMode>BothWays</ChoiceMode>
|
||||
<InputByString>
|
||||
<xr:Field>ChartOfCharacteristicTypes.ВидыСвойств.StandardAttribute.Description</xr:Field>
|
||||
<xr:Field>ChartOfCharacteristicTypes.ВидыСвойств.StandardAttribute.Code</xr:Field>
|
||||
</InputByString>
|
||||
<CreateOnInput>DontUse</CreateOnInput>
|
||||
<SearchStringModeOnInputByString>Begin</SearchStringModeOnInputByString>
|
||||
<ChoiceDataGetModeOnInputByString>Directly</ChoiceDataGetModeOnInputByString>
|
||||
<FullTextSearchOnInputByString>DontUse</FullTextSearchOnInputByString>
|
||||
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||
<DefaultObjectForm/>
|
||||
<DefaultFolderForm/>
|
||||
<DefaultListForm/>
|
||||
<DefaultChoiceForm/>
|
||||
<DefaultFolderChoiceForm/>
|
||||
<AuxiliaryObjectForm/>
|
||||
<AuxiliaryFolderForm/>
|
||||
<AuxiliaryListForm/>
|
||||
<AuxiliaryChoiceForm/>
|
||||
<AuxiliaryFolderChoiceForm/>
|
||||
<BasedOn/>
|
||||
<DataLockFields/>
|
||||
<DataLockControlMode>Managed</DataLockControlMode>
|
||||
<FullTextSearch>Use</FullTextSearch>
|
||||
<ObjectPresentation/>
|
||||
<ExtendedObjectPresentation/>
|
||||
<ListPresentation/>
|
||||
<ExtendedListPresentation/>
|
||||
<Explanation/>
|
||||
<DataHistory>DontUse</DataHistory>
|
||||
<UpdateDataHistoryImmediatelyAfterWrite>false</UpdateDataHistoryImmediatelyAfterWrite>
|
||||
<ExecuteAfterWriteDataHistoryVersionProcessing>false</ExecuteAfterWriteDataHistoryVersionProcessing>
|
||||
</Properties>
|
||||
<ChildObjects/>
|
||||
</ChartOfCharacteristicTypes>
|
||||
</MetaDataObject>
|
||||
@@ -246,7 +246,10 @@
|
||||
</Properties>
|
||||
<ChildObjects>
|
||||
<Language>Русский</Language>
|
||||
<ChartOfCharacteristicTypes>ВидыСвойств</ChartOfCharacteristicTypes>
|
||||
<Catalog>НаборыДопРеквИСвед</Catalog>
|
||||
<Catalog>Организации</Catalog>
|
||||
<InformationRegister>ДополнительныеСведения</InformationRegister>
|
||||
</ChildObjects>
|
||||
</Configuration>
|
||||
</MetaDataObject>
|
||||
+301
@@ -0,0 +1,301 @@
|
||||
<?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">
|
||||
<InformationRegister uuid="UUID-001">
|
||||
<InternalInfo>
|
||||
<xr:GeneratedType name="InformationRegisterRecord.ДополнительныеСведения" category="Record">
|
||||
<xr:TypeId>UUID-002</xr:TypeId>
|
||||
<xr:ValueId>UUID-003</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="InformationRegisterManager.ДополнительныеСведения" category="Manager">
|
||||
<xr:TypeId>UUID-004</xr:TypeId>
|
||||
<xr:ValueId>UUID-005</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="InformationRegisterSelection.ДополнительныеСведения" category="Selection">
|
||||
<xr:TypeId>UUID-006</xr:TypeId>
|
||||
<xr:ValueId>UUID-007</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="InformationRegisterList.ДополнительныеСведения" category="List">
|
||||
<xr:TypeId>UUID-008</xr:TypeId>
|
||||
<xr:ValueId>UUID-009</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="InformationRegisterRecordSet.ДополнительныеСведения" category="RecordSet">
|
||||
<xr:TypeId>UUID-010</xr:TypeId>
|
||||
<xr:ValueId>UUID-011</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="InformationRegisterRecordKey.ДополнительныеСведения" category="RecordKey">
|
||||
<xr:TypeId>UUID-012</xr:TypeId>
|
||||
<xr:ValueId>UUID-013</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
<xr:GeneratedType name="InformationRegisterRecordManager.ДополнительныеСведения" category="RecordManager">
|
||||
<xr:TypeId>UUID-014</xr:TypeId>
|
||||
<xr:ValueId>UUID-015</xr:ValueId>
|
||||
</xr:GeneratedType>
|
||||
</InternalInfo>
|
||||
<Properties>
|
||||
<Name>ДополнительныеСведения</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Дополнительные сведения</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<UseStandardCommands>true</UseStandardCommands>
|
||||
<EditType>InDialog</EditType>
|
||||
<DefaultRecordForm/>
|
||||
<DefaultListForm/>
|
||||
<AuxiliaryRecordForm/>
|
||||
<AuxiliaryListForm/>
|
||||
<StandardAttributes>
|
||||
<xr:StandardAttribute name="Active">
|
||||
<xr:LinkByType/>
|
||||
<xr:FillChecking>DontCheck</xr:FillChecking>
|
||||
<xr:MultiLine>false</xr:MultiLine>
|
||||
<xr:FillFromFillingValue>false</xr:FillFromFillingValue>
|
||||
<xr:CreateOnInput>Auto</xr:CreateOnInput>
|
||||
<xr:MaxValue xsi:nil="true"/>
|
||||
<xr:ToolTip/>
|
||||
<xr:ExtendedEdit>false</xr:ExtendedEdit>
|
||||
<xr:Format/>
|
||||
<xr:ChoiceForm/>
|
||||
<xr:QuickChoice>Auto</xr:QuickChoice>
|
||||
<xr:ChoiceHistoryOnInput>Auto</xr:ChoiceHistoryOnInput>
|
||||
<xr:EditFormat/>
|
||||
<xr:PasswordMode>false</xr:PasswordMode>
|
||||
<xr:DataHistory>Use</xr:DataHistory>
|
||||
<xr:MarkNegatives>false</xr:MarkNegatives>
|
||||
<xr:MinValue xsi:nil="true"/>
|
||||
<xr:Synonym/>
|
||||
<xr:Comment/>
|
||||
<xr:FullTextSearch>Use</xr:FullTextSearch>
|
||||
<xr:ChoiceParameterLinks/>
|
||||
<xr:FillValue xsi:nil="true"/>
|
||||
<xr:Mask/>
|
||||
<xr:ChoiceParameters/>
|
||||
</xr:StandardAttribute>
|
||||
<xr:StandardAttribute name="LineNumber">
|
||||
<xr:LinkByType/>
|
||||
<xr:FillChecking>DontCheck</xr:FillChecking>
|
||||
<xr:MultiLine>false</xr:MultiLine>
|
||||
<xr:FillFromFillingValue>false</xr:FillFromFillingValue>
|
||||
<xr:CreateOnInput>Auto</xr:CreateOnInput>
|
||||
<xr:MaxValue xsi:nil="true"/>
|
||||
<xr:ToolTip/>
|
||||
<xr:ExtendedEdit>false</xr:ExtendedEdit>
|
||||
<xr:Format/>
|
||||
<xr:ChoiceForm/>
|
||||
<xr:QuickChoice>Auto</xr:QuickChoice>
|
||||
<xr:ChoiceHistoryOnInput>Auto</xr:ChoiceHistoryOnInput>
|
||||
<xr:EditFormat/>
|
||||
<xr:PasswordMode>false</xr:PasswordMode>
|
||||
<xr:DataHistory>Use</xr:DataHistory>
|
||||
<xr:MarkNegatives>false</xr:MarkNegatives>
|
||||
<xr:MinValue xsi:nil="true"/>
|
||||
<xr:Synonym/>
|
||||
<xr:Comment/>
|
||||
<xr:FullTextSearch>Use</xr:FullTextSearch>
|
||||
<xr:ChoiceParameterLinks/>
|
||||
<xr:FillValue xsi:nil="true"/>
|
||||
<xr:Mask/>
|
||||
<xr:ChoiceParameters/>
|
||||
</xr:StandardAttribute>
|
||||
<xr:StandardAttribute name="Recorder">
|
||||
<xr:LinkByType/>
|
||||
<xr:FillChecking>DontCheck</xr:FillChecking>
|
||||
<xr:MultiLine>false</xr:MultiLine>
|
||||
<xr:FillFromFillingValue>false</xr:FillFromFillingValue>
|
||||
<xr:CreateOnInput>Auto</xr:CreateOnInput>
|
||||
<xr:MaxValue xsi:nil="true"/>
|
||||
<xr:ToolTip/>
|
||||
<xr:ExtendedEdit>false</xr:ExtendedEdit>
|
||||
<xr:Format/>
|
||||
<xr:ChoiceForm/>
|
||||
<xr:QuickChoice>Auto</xr:QuickChoice>
|
||||
<xr:ChoiceHistoryOnInput>Auto</xr:ChoiceHistoryOnInput>
|
||||
<xr:EditFormat/>
|
||||
<xr:PasswordMode>false</xr:PasswordMode>
|
||||
<xr:DataHistory>Use</xr:DataHistory>
|
||||
<xr:MarkNegatives>false</xr:MarkNegatives>
|
||||
<xr:MinValue xsi:nil="true"/>
|
||||
<xr:Synonym/>
|
||||
<xr:Comment/>
|
||||
<xr:FullTextSearch>Use</xr:FullTextSearch>
|
||||
<xr:ChoiceParameterLinks/>
|
||||
<xr:FillValue xsi:nil="true"/>
|
||||
<xr:Mask/>
|
||||
<xr:ChoiceParameters/>
|
||||
</xr:StandardAttribute>
|
||||
<xr:StandardAttribute name="Period">
|
||||
<xr:LinkByType/>
|
||||
<xr:FillChecking>DontCheck</xr:FillChecking>
|
||||
<xr:MultiLine>false</xr:MultiLine>
|
||||
<xr:FillFromFillingValue>false</xr:FillFromFillingValue>
|
||||
<xr:CreateOnInput>Auto</xr:CreateOnInput>
|
||||
<xr:MaxValue xsi:nil="true"/>
|
||||
<xr:ToolTip/>
|
||||
<xr:ExtendedEdit>false</xr:ExtendedEdit>
|
||||
<xr:Format/>
|
||||
<xr:ChoiceForm/>
|
||||
<xr:QuickChoice>Auto</xr:QuickChoice>
|
||||
<xr:ChoiceHistoryOnInput>Auto</xr:ChoiceHistoryOnInput>
|
||||
<xr:EditFormat/>
|
||||
<xr:PasswordMode>false</xr:PasswordMode>
|
||||
<xr:DataHistory>Use</xr:DataHistory>
|
||||
<xr:MarkNegatives>false</xr:MarkNegatives>
|
||||
<xr:MinValue xsi:nil="true"/>
|
||||
<xr:Synonym/>
|
||||
<xr:Comment/>
|
||||
<xr:FullTextSearch>Use</xr:FullTextSearch>
|
||||
<xr:ChoiceParameterLinks/>
|
||||
<xr:FillValue xsi:nil="true"/>
|
||||
<xr:Mask/>
|
||||
<xr:ChoiceParameters/>
|
||||
</xr:StandardAttribute>
|
||||
</StandardAttributes>
|
||||
<InformationRegisterPeriodicity>Nonperiodical</InformationRegisterPeriodicity>
|
||||
<WriteMode>Independent</WriteMode>
|
||||
<MainFilterOnPeriod>false</MainFilterOnPeriod>
|
||||
<IncludeHelpInContents>false</IncludeHelpInContents>
|
||||
<DataLockControlMode>Managed</DataLockControlMode>
|
||||
<FullTextSearch>Use</FullTextSearch>
|
||||
<EnableTotalsSliceFirst>false</EnableTotalsSliceFirst>
|
||||
<EnableTotalsSliceLast>false</EnableTotalsSliceLast>
|
||||
<RecordPresentation/>
|
||||
<ExtendedRecordPresentation/>
|
||||
<ListPresentation/>
|
||||
<ExtendedListPresentation/>
|
||||
<Explanation/>
|
||||
<DataHistory>DontUse</DataHistory>
|
||||
<UpdateDataHistoryImmediatelyAfterWrite>false</UpdateDataHistoryImmediatelyAfterWrite>
|
||||
<ExecuteAfterWriteDataHistoryVersionProcessing>false</ExecuteAfterWriteDataHistoryVersionProcessing>
|
||||
</Properties>
|
||||
<ChildObjects>
|
||||
<Resource uuid="UUID-016">
|
||||
<Properties>
|
||||
<Name>Значение</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Значение</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<Type>
|
||||
<v8:TypeSet>cfg:Characteristic.ВидыСвойств</v8:TypeSet>
|
||||
</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>
|
||||
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
|
||||
<ChoiceParameterLinks/>
|
||||
<ChoiceParameters/>
|
||||
<QuickChoice>Auto</QuickChoice>
|
||||
<CreateOnInput>Auto</CreateOnInput>
|
||||
<ChoiceForm/>
|
||||
<LinkByType>
|
||||
<xr:DataPath>InformationRegister.ДополнительныеСведения.Dimension.Свойство</xr:DataPath>
|
||||
<xr:LinkItem>0</xr:LinkItem>
|
||||
</LinkByType>
|
||||
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||
<Indexing>DontIndex</Indexing>
|
||||
<FullTextSearch>Use</FullTextSearch>
|
||||
<DataHistory>Use</DataHistory>
|
||||
</Properties>
|
||||
</Resource>
|
||||
<Dimension uuid="UUID-017">
|
||||
<Properties>
|
||||
<Name>Объект</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Объект</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<Type>
|
||||
<v8:Type xmlns:d5p1="http://v8.1c.ru/8.1/data/enterprise/current-config">d5p1:CatalogRef.Организации</v8:Type>
|
||||
</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>
|
||||
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
|
||||
<ChoiceParameterLinks/>
|
||||
<ChoiceParameters/>
|
||||
<QuickChoice>Auto</QuickChoice>
|
||||
<CreateOnInput>Auto</CreateOnInput>
|
||||
<ChoiceForm/>
|
||||
<LinkByType/>
|
||||
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||
<Master>false</Master>
|
||||
<MainFilter>false</MainFilter>
|
||||
<DenyIncompleteValues>false</DenyIncompleteValues>
|
||||
<Indexing>DontIndex</Indexing>
|
||||
<FullTextSearch>Use</FullTextSearch>
|
||||
<DataHistory>Use</DataHistory>
|
||||
</Properties>
|
||||
</Dimension>
|
||||
<Dimension uuid="UUID-018">
|
||||
<Properties>
|
||||
<Name>Свойство</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Свойство</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<Type>
|
||||
<v8:Type xmlns:d5p1="http://v8.1c.ru/8.1/data/enterprise/current-config">d5p1:ChartOfCharacteristicTypesRef.ВидыСвойств</v8:Type>
|
||||
</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>
|
||||
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
|
||||
<ChoiceParameterLinks/>
|
||||
<ChoiceParameters/>
|
||||
<QuickChoice>Auto</QuickChoice>
|
||||
<CreateOnInput>Auto</CreateOnInput>
|
||||
<ChoiceForm/>
|
||||
<LinkByType/>
|
||||
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||
<Master>false</Master>
|
||||
<MainFilter>false</MainFilter>
|
||||
<DenyIncompleteValues>false</DenyIncompleteValues>
|
||||
<Indexing>DontIndex</Indexing>
|
||||
<FullTextSearch>Use</FullTextSearch>
|
||||
<DataHistory>Use</DataHistory>
|
||||
</Properties>
|
||||
</Dimension>
|
||||
</ChildObjects>
|
||||
</InformationRegister>
|
||||
</MetaDataObject>
|
||||
@@ -132,7 +132,7 @@
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<Group></Group>
|
||||
<Group>FormCommandBarImportant</Group>
|
||||
<CommandParameterType/>
|
||||
<ParameterUseMode>Single</ParameterUseMode>
|
||||
<ModifiesData>false</ModifiesData>
|
||||
@@ -156,7 +156,7 @@
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<Group></Group>
|
||||
<Group>FormNavigationPanelGoTo</Group>
|
||||
<CommandParameterType/>
|
||||
<ParameterUseMode>Single</ParameterUseMode>
|
||||
<ModifiesData>false</ModifiesData>
|
||||
|
||||
+48
-2
@@ -38,7 +38,9 @@
|
||||
<LevelCount>2</LevelCount>
|
||||
<FoldersOnTop>true</FoldersOnTop>
|
||||
<UseStandardCommands>true</UseStandardCommands>
|
||||
<Owners/>
|
||||
<Owners>
|
||||
<xr:Item xsi:type="xr:MDObjectRef">Catalog.Контрагенты</xr:Item>
|
||||
</Owners>
|
||||
<SubordinationUse>ToItems</SubordinationUse>
|
||||
<CodeLength>11</CodeLength>
|
||||
<DescriptionLength>100</DescriptionLength>
|
||||
@@ -56,7 +58,7 @@
|
||||
<InputByString>
|
||||
<xr:Field>Catalog.ДоговорыКонтрагентов.StandardAttribute.Code</xr:Field>
|
||||
<xr:Field>Catalog.ДоговорыКонтрагентов.StandardAttribute.Description</xr:Field>
|
||||
<xr:Field>Catalog.ДоговорыКонтрагентов.Attribute.Контрагент</xr:Field>
|
||||
<xr:Field>Catalog.ДоговорыКонтрагентов.Attribute.НомерДоговора</xr:Field>
|
||||
</InputByString>
|
||||
<SearchStringModeOnInputByString>Begin</SearchStringModeOnInputByString>
|
||||
<FullTextSearchOnInputByString>DontUse</FullTextSearchOnInputByString>
|
||||
@@ -175,6 +177,50 @@
|
||||
<DataHistory>Use</DataHistory>
|
||||
</Properties>
|
||||
</Attribute>
|
||||
<Attribute uuid="UUID-014">
|
||||
<Properties>
|
||||
<Name>НомерДоговора</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Номер договора</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<Type>
|
||||
<v8:Type>xs:string</v8:Type>
|
||||
<v8:StringQualifiers>
|
||||
<v8:Length>20</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>
|
||||
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
|
||||
<ChoiceParameterLinks/>
|
||||
<ChoiceParameters/>
|
||||
<QuickChoice>Auto</QuickChoice>
|
||||
<CreateOnInput>Auto</CreateOnInput>
|
||||
<ChoiceForm/>
|
||||
<LinkByType/>
|
||||
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
||||
<Use>ForItem</Use>
|
||||
<Indexing>Index</Indexing>
|
||||
<FullTextSearch>Use</FullTextSearch>
|
||||
<DataHistory>Use</DataHistory>
|
||||
</Properties>
|
||||
</Attribute>
|
||||
</ChildObjects>
|
||||
</Catalog>
|
||||
</MetaDataObject>
|
||||
|
||||
@@ -111,6 +111,18 @@ function extractTypeRefs(input) {
|
||||
refs.set(`${m[1]}.${m[2]}`, { type: m[1], name: m[2] });
|
||||
}
|
||||
|
||||
// Прямые ссылки Тип.Имя: картинки, макеты, хранилища настроек, определяемые типы
|
||||
const directPattern2 = new RegExp(`(CommonPicture|CommonTemplate|SettingsStorage|DefinedType)\\.(${ID})`, 'g');
|
||||
while ((m = directPattern2.exec(json)) !== null) {
|
||||
refs.set(`${m[1]}.${m[2]}`, { type: m[1], name: m[2] });
|
||||
}
|
||||
|
||||
// Characteristic.X (тип-характеристика в составе типа значения) → ChartOfCharacteristicTypes.X
|
||||
const charPattern = new RegExp(`Characteristic\\.(${ID})`, 'g');
|
||||
while ((m = charPattern.exec(json)) !== null) {
|
||||
refs.set(`ChartOfCharacteristicTypes.${m[1]}`, { type: 'ChartOfCharacteristicTypes', name: m[1] });
|
||||
}
|
||||
|
||||
const objPattern = new RegExp(`(Document|Catalog|BusinessProcess|Task|ExchangePlan)Object\\.(${ID})`, 'g');
|
||||
while ((m = objPattern.exec(json)) !== null) {
|
||||
refs.set(`${m[1]}.${m[2]}`, { type: m[1], name: m[2] });
|
||||
@@ -223,6 +235,20 @@ function getStructuralDeps(input) {
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 'EventSubscription': {
|
||||
// Обработчик подписки ссылается на экспортный метод общего модуля — 1С требует его существования.
|
||||
// Стабим CommonModule и дописываем экспортную процедуру в его модуль (postWrite).
|
||||
let h = String(inp.handler || '').replace(/^CommonModule\./, '');
|
||||
const hdot = h.indexOf('.');
|
||||
if (hdot > 0) {
|
||||
const modName = h.substring(0, hdot), methodName = h.substring(hdot + 1);
|
||||
deps.push({ type: 'CommonModule', name: modName,
|
||||
dsl: { type: 'CommonModule', name: modName, server: true },
|
||||
postWrite: [{ relPath: `CommonModules/${modName}/Ext/Module.bsl`,
|
||||
content: `Процедура ${methodName}(Источник, Отказ) Экспорт\nКонецПроцедуры\n` }] });
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 'Sequence':
|
||||
// Документы последовательности (documents) + реквизиты из documentMap — 1С требует существования
|
||||
// самого Document.X И реквизита, на который ссылается измерение. Стабим документ с нужными реквизитами
|
||||
@@ -267,6 +293,10 @@ function makeStubDSL(type, name) {
|
||||
case 'Task': return { type: 'Task', name };
|
||||
case 'ExchangePlan': return { type: 'ExchangePlan', name, codeLength: 9, descriptionLength: 100 };
|
||||
case 'Role': return { type: 'Role', name: name };
|
||||
case 'DefinedType': return { type: 'DefinedType', name, valueType: 'Number(15,2)' };
|
||||
case 'CommonPicture': return { type: 'CommonPicture', name };
|
||||
case 'CommonTemplate': return { type: 'CommonTemplate', name };
|
||||
case 'SettingsStorage': return { type: 'SettingsStorage', name };
|
||||
case 'Subsystem': return null; // Subsystems need special handling
|
||||
default: return null;
|
||||
}
|
||||
@@ -283,6 +313,7 @@ const TYPE_TO_PREFIX = {
|
||||
EventSubscription: 'EventSubscription', ScheduledJob: 'ScheduledJob',
|
||||
DefinedType: 'DefinedType', HTTPService: 'HTTPService', WebService: 'WebService',
|
||||
Subsystem: 'Subsystem', Role: 'Role',
|
||||
CommonPicture: 'CommonPicture', CommonTemplate: 'CommonTemplate', SettingsStorage: 'SettingsStorage',
|
||||
};
|
||||
|
||||
const TYPE_TO_DIR = {
|
||||
@@ -296,8 +327,134 @@ const TYPE_TO_DIR = {
|
||||
EventSubscription: 'EventSubscriptions', ScheduledJob: 'ScheduledJobs',
|
||||
DefinedType: 'DefinedTypes', HTTPService: 'HTTPServices', WebService: 'WebServices',
|
||||
Subsystem: 'Subsystems', Role: 'Roles',
|
||||
CommonPicture: 'CommonPictures', CommonTemplate: 'CommonTemplates', SettingsStorage: 'SettingsStorages',
|
||||
};
|
||||
|
||||
// ─── Кросс-объектные ссылки на поля → богатые стабы ─────────────────────────
|
||||
// Разбор MDObjectRef-пути "Тип.Имя[.ТабличнаяЧасть.ТЧ].Реквизит|Измерение|Ресурс.Поле" (+рус.синонимы)
|
||||
// в стаб объекта с нужными полями. Плюс сбор предопределённых значений перечислений / элементов справочников
|
||||
// из fillValue/choiceParameters. Обобщение ветки Sequence (documentMap) на все типы, ссылающиеся на чужие поля.
|
||||
|
||||
const TYPE_SYN = {
|
||||
'Документ': 'Document', 'Справочник': 'Catalog', 'РегистрНакопления': 'AccumulationRegister',
|
||||
'РегистрСведений': 'InformationRegister', 'РегистрБухгалтерии': 'AccountingRegister',
|
||||
'РегистрРасчета': 'CalculationRegister', 'Константа': 'Constant',
|
||||
'ПланВидовХарактеристик': 'ChartOfCharacteristicTypes', 'ПланСчетов': 'ChartOfAccounts',
|
||||
'ПланВидовРасчета': 'ChartOfCalculationTypes', 'ПланОбмена': 'ExchangePlan',
|
||||
'БизнесПроцесс': 'BusinessProcess', 'Задача': 'Task',
|
||||
};
|
||||
const FIELD_SYN = { 'Реквизит': 'Attribute', 'Измерение': 'Dimension', 'Ресурс': 'Resource', 'ТабличнаяЧасть': 'TabularSection' };
|
||||
const asArray = (v) => (v == null ? [] : (Array.isArray(v) ? v : [v]));
|
||||
|
||||
function parseFieldRef(rawPath) {
|
||||
const parts = String(rawPath).split(':')[0].trim().split('.');
|
||||
if (parts.length < 2) return null;
|
||||
const type = TYPE_SYN[parts[0]] || parts[0];
|
||||
const name = parts[1];
|
||||
let ts = null, fieldKind = null, fieldName = null, i = 2;
|
||||
while (i < parts.length) {
|
||||
const seg = FIELD_SYN[parts[i]] || parts[i];
|
||||
if (seg === 'TabularSection' && i + 1 < parts.length) { ts = parts[i + 1]; i += 2; continue; }
|
||||
if ((seg === 'Attribute' || seg === 'Dimension' || seg === 'Resource') && i + 1 < parts.length) {
|
||||
fieldKind = seg; fieldName = parts[i + 1]; i += 2; continue;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
return { type, name, ts, fieldKind, fieldName };
|
||||
}
|
||||
|
||||
function getFieldStubs(input) {
|
||||
const inputs = Array.isArray(input) ? input : [input];
|
||||
const mainKeys = new Set(inputs.filter(i => i && i.type).map(i => `${i.type}.${i.name}`));
|
||||
const acc = new Map(); // key -> { type, name, attrs, dims, res, tsAttrs, enumVals, predef }
|
||||
const ID2 = '[\\wА-Яа-яЁё]+';
|
||||
|
||||
const ent = (type, name) => {
|
||||
const key = `${type}.${name}`;
|
||||
if (!TYPE_TO_DIR[type] || mainKeys.has(key)) return null; // неизвестный тип или сам проверяемый объект — не трогаем
|
||||
let e = acc.get(key);
|
||||
if (!e) { e = { type, name, attrs: new Set(), dims: new Set(), res: new Set(), tsAttrs: new Map(), enumVals: new Set(), predef: new Set() }; acc.set(key, e); }
|
||||
return e;
|
||||
};
|
||||
const addRef = (raw, attrType) => {
|
||||
if (!raw) return;
|
||||
const p = parseFieldRef(raw); if (!p) return;
|
||||
const e = ent(p.type, p.name); if (!e) return;
|
||||
if (p.fieldKind) {
|
||||
const spec = `${p.fieldName}: ${attrType || 'String(10)'}`;
|
||||
if (p.ts) { if (!e.tsAttrs.has(p.ts)) e.tsAttrs.set(p.ts, new Set()); e.tsAttrs.get(p.ts).add(spec); }
|
||||
else if (p.fieldKind === 'Attribute') e.attrs.add(spec);
|
||||
else if (p.fieldKind === 'Dimension') e.dims.add(spec);
|
||||
else if (p.fieldKind === 'Resource') e.res.add(spec);
|
||||
}
|
||||
};
|
||||
const addPredef = (val, ctxType) => {
|
||||
if (typeof val !== 'string' || !val) return;
|
||||
if (val === 'EmptyRef' || val.includes('ПустаяСсылка')) return;
|
||||
let m = val.match(new RegExp(`(?:Enum|Перечисление)\\.(${ID2})\\.(?:EnumValue|ЗначениеПеречисления)\\.(${ID2})`));
|
||||
if (m) { const e = ent('Enum', m[1]); if (e) e.enumVals.add(m[2]); return; }
|
||||
m = val.match(new RegExp(`^(?:Catalog|Справочник)\\.(${ID2})\\.(${ID2})$`));
|
||||
if (m && m[2] !== 'EmptyRef' && m[2] !== 'Predefined') { const e = ent('Catalog', m[1]); if (e) e.predef.add(m[2]); return; }
|
||||
if (ctxType && !val.includes('.')) { // короткая запись — тип несёт реквизит
|
||||
let em = ctxType.match(/^EnumRef\.(.+)$/); if (em) { const e = ent('Enum', em[1]); if (e) e.enumVals.add(val); return; }
|
||||
let cm = ctxType.match(/^CatalogRef\.(.+)$/); if (cm) { const e = ent('Catalog', cm[1]); if (e) e.predef.add(val); return; }
|
||||
}
|
||||
};
|
||||
const scanAttrs = (attrs) => {
|
||||
for (const a of asArray(attrs)) {
|
||||
if (!a || typeof a !== 'object') continue;
|
||||
if (typeof a.fillValue === 'string') addPredef(a.fillValue, a.type);
|
||||
for (const cp of asArray(a.choiceParameters)) {
|
||||
if (cp && typeof cp === 'object') for (const v of asArray(cp.value)) addPredef(v, cp.type);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
for (const inp of inputs) {
|
||||
if (!inp || !inp.type) continue;
|
||||
switch (inp.type) {
|
||||
case 'FilterCriterion': for (const c of asArray(inp.content)) addRef(c, inp.valueType); break;
|
||||
case 'FunctionalOption': addRef(inp.location); for (const c of asArray(inp.content)) addRef(c); break;
|
||||
case 'FunctionalOptionsParameter': for (const u of asArray(inp.use)) addRef(u); break;
|
||||
case 'CommonAttribute':
|
||||
for (const c of asArray(inp.content)) addRef(typeof c === 'string' ? c : (c.metadata || c['Метаданные'] || c['объект'] || ''));
|
||||
break;
|
||||
}
|
||||
for (const b of asArray(inp.basedOn)) addRef(b);
|
||||
for (const o of asArray(inp.owners)) addRef(o);
|
||||
scanAttrs(inp.attributes);
|
||||
if (inp.tabularSections && typeof inp.tabularSections === 'object' && !Array.isArray(inp.tabularSections)) {
|
||||
for (const ts of Object.values(inp.tabularSections)) scanAttrs(Array.isArray(ts) ? ts : (ts && (ts.attributes || ts.columns)));
|
||||
}
|
||||
if (inp.standardAttributes && typeof inp.standardAttributes === 'object') {
|
||||
for (const sa of Object.values(inp.standardAttributes)) if (sa && typeof sa === 'object') scanAttrs([{ ...sa, type: '' }]);
|
||||
}
|
||||
if (inp.type === 'DocumentJournal') {
|
||||
for (const col of asArray(inp.columns)) if (col && typeof col === 'object') for (const r of asArray(col.references)) addRef(r);
|
||||
}
|
||||
}
|
||||
|
||||
const deps = [];
|
||||
for (const e of acc.values()) {
|
||||
const base = makeStubDSL(e.type, e.name) || { type: e.type, name: e.name };
|
||||
if (e.attrs.size) base.attributes = [...(base.attributes || []), ...e.attrs];
|
||||
if (e.dims.size) base.dimensions = [...(base.dimensions || []), ...e.dims];
|
||||
if (e.res.size) base.resources = [...(base.resources || []), ...e.res];
|
||||
if (e.tsAttrs.size) { base.tabularSections = base.tabularSections || {}; for (const [ts, set] of e.tsAttrs) base.tabularSections[ts] = [...set]; }
|
||||
if (e.enumVals.size) base.values = [...e.enumVals];
|
||||
if (e.predef.size) base.predefined = [...e.predef];
|
||||
deps.push({ type: e.type, name: e.name, dsl: base });
|
||||
// Регистру накопления/бухгалтерии/расчёта нужен документ-регистратор, иначе 1С отвергает
|
||||
// конфигурацию («ни один документ не является регистратором для регистра»).
|
||||
if (e.type === 'AccumulationRegister' || e.type === 'AccountingRegister' || e.type === 'CalculationRegister') {
|
||||
const rn = `Регистратор${e.name}`;
|
||||
deps.push({ type: 'Document', name: rn, dsl: { type: 'Document', name: rn },
|
||||
postEdit: [{ op: 'add-registerRecord', val: `${e.type}.${e.name}` }] });
|
||||
}
|
||||
}
|
||||
return deps;
|
||||
}
|
||||
|
||||
// ─── Auto-detect objects in config dir for cf-edit ──────────────────────────
|
||||
|
||||
function scanConfigObjects(configDir) {
|
||||
@@ -544,13 +701,15 @@ async function verifyCase(skillName, caseName, skillConfig, caseData, opts) {
|
||||
// Structural deps (scanned across both main input and preRun inputs).
|
||||
// NB: только зависимости (стабы объектов, на которые ССЫЛАЕТСЯ вход). Верификатор НЕ правит сам
|
||||
// проверяемый объект — иначе в 1С грузится не то, что выдал компилятор (маскировка дефекта DSL).
|
||||
const structDeps = getStructuralDeps(allInputs);
|
||||
const structDeps = [...getStructuralDeps(allInputs), ...getFieldStubs(allInputs)];
|
||||
const structDSLs = new Map();
|
||||
const structPostEdits = new Map();
|
||||
const structPostWrites = new Map();
|
||||
for (const dep of structDeps) {
|
||||
const key = `${dep.type}.${dep.name}`;
|
||||
if (dep.dsl) structDSLs.set(key, dep.dsl);
|
||||
if (dep.postEdit) structPostEdits.set(key, dep.postEdit);
|
||||
if (dep.postWrite) structPostWrites.set(key, dep.postWrite);
|
||||
}
|
||||
|
||||
// Type refs from ALL inputs (main + preRun)
|
||||
@@ -597,6 +756,17 @@ async function verifyCase(skillName, caseName, skillConfig, caseData, opts) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Post-write: перезаписать файл стаба (напр. тело модуля CommonModule с экспортным методом-обработчиком)
|
||||
const writes = structPostWrites.get(key);
|
||||
if (writes) {
|
||||
for (const w of writes) {
|
||||
try {
|
||||
writeFileSync(join(configDir, w.relPath), '' + w.content, 'utf8');
|
||||
log(`postWrite: ${key}`, true, w.relPath);
|
||||
} catch (e) { log(`postWrite: ${key}`, false, e.message); }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -902,6 +1072,65 @@ async function verifyCase(skillName, caseName, skillConfig, caseData, opts) {
|
||||
return result;
|
||||
}
|
||||
|
||||
// ── Step 5.5: досоздать формы/макеты, на которые ссылается вход ──
|
||||
// meta-compile эмитит ссылки defaultForm/mainDataCompositionSchema/… но сами формы/макеты не создаёт
|
||||
// (это территория form-add/template-add). Для загрузки в 1С досоздаём их на уже скомпилированном объекте
|
||||
// (основной — из Step 4, внешние — из стабов Step 2). Решение: верификатор достраивает дочерние формы/макеты.
|
||||
if (Array.isArray(allInputs) && allInputs.length > 0) {
|
||||
// form-add поддерживает не все типы (напр. DocumentJournal — нет); для прочих форму не досоздать.
|
||||
const FORM_ADD_TYPES = new Set(['Document', 'Catalog', 'DataProcessor', 'Report',
|
||||
'InformationRegister', 'AccumulationRegister', 'ChartOfAccounts', 'ChartOfCharacteristicTypes',
|
||||
'ExchangePlan', 'BusinessProcess', 'Task', 'DocumentJournal']);
|
||||
const walk = function* (o, key) {
|
||||
if (o == null) return;
|
||||
if (typeof o === 'string') { yield { key, value: o }; return; }
|
||||
if (Array.isArray(o)) { for (const v of o) yield* walk(v, key); return; }
|
||||
if (typeof o === 'object') { for (const [k, v] of Object.entries(o)) yield* walk(v, k); }
|
||||
};
|
||||
const forms = new Map(), tpls = new Map();
|
||||
for (const inp of allInputs) {
|
||||
for (const { key, value } of walk(inp, null)) {
|
||||
const kl = (key || '').toLowerCase();
|
||||
const parts = String(value).split('.');
|
||||
const objType = TYPE_SYN[parts[0]] || parts[0];
|
||||
if (parts.length < 3 || !TYPE_TO_DIR[objType]) continue;
|
||||
const objName = parts[1], leaf = parts[parts.length - 1];
|
||||
// Форма — по ключу *Form (нотация ссылки любая: .Form./.Форма./короткая)
|
||||
if (/form$/.test(kl)) {
|
||||
let purpose = 'Object';
|
||||
if (kl.includes('list')) purpose = 'List';
|
||||
else if (kl.includes('choice')) purpose = 'Choice';
|
||||
else if (kl.includes('record')) purpose = 'Record';
|
||||
if (objType === 'Report' || objType === 'DataProcessor') purpose = 'Object';
|
||||
else if (objType === 'DocumentJournal') purpose = 'List'; // журнал — только списочные формы
|
||||
forms.set(`${objType}.${objName}.${leaf}`, { objType, objName, formName: leaf, purpose });
|
||||
}
|
||||
// Макет — по ключу *schema/*template
|
||||
if (kl.includes('datacompositionschema') || kl.includes('template')) {
|
||||
const isSKD = kl.includes('datacompositionschema');
|
||||
tpls.set(`${objType}.${objName}.${leaf}`, { objName, tplName: leaf, tplType: isSKD ? 'DataCompositionSchema' : 'SpreadsheetDocument', main: isSKD });
|
||||
}
|
||||
}
|
||||
}
|
||||
for (const f of forms.values()) {
|
||||
if (!FORM_ADD_TYPES.has(f.objType)) continue; // form-add не умеет этот тип (напр. DocumentJournal)
|
||||
const objPath = join(configDir, TYPE_TO_DIR[f.objType], `${f.objName}.xml`);
|
||||
const formDir = join(configDir, TYPE_TO_DIR[f.objType], f.objName, 'Forms', f.formName);
|
||||
if (!existsSync(objPath) || existsSync(formDir)) continue;
|
||||
try {
|
||||
execSkill(opts.runtime, 'form-add/scripts/form-add', ['-ObjectPath', objPath, '-FormName', f.formName, '-Purpose', f.purpose]);
|
||||
log(`form-add: ${f.objName}.${f.formName}`, true);
|
||||
} catch (e) { log(`form-add: ${f.objName}.${f.formName}`, false, (e.stderr || e.message || '').substring(0, 200)); }
|
||||
}
|
||||
for (const t of tpls.values()) {
|
||||
try {
|
||||
execSkill(opts.runtime, 'template-add/scripts/add-template', ['-ObjectName', t.objName,
|
||||
'-TemplateName', t.tplName, '-TemplateType', t.tplType, '-SrcDir', configDir, ...(t.main ? ['-SetMainSKD'] : [])]);
|
||||
log(`template-add: ${t.objName}.${t.tplName}`, true);
|
||||
} catch (e) { log(`template-add: ${t.objName}.${t.tplName}`, false, (e.stderr || e.message || '').substring(0, 200)); }
|
||||
}
|
||||
}
|
||||
|
||||
// ── Step 6: Auto-detect and register objects in ChildObjects ──
|
||||
// Skip when config came from external/fixture setup — it's already complete.
|
||||
const allObjects = caseProvidedConfig ? [] : scanConfigObjects(configDir);
|
||||
|
||||
Reference in New Issue
Block a user