diff --git a/docs/1c-config-objects-spec.md b/docs/1c-config-objects-spec.md new file mode 100644 index 00000000..9ba13180 --- /dev/null +++ b/docs/1c-config-objects-spec.md @@ -0,0 +1,1554 @@ +# Спецификация формата XML объектов метаданных конфигурации 1С + +Формат: XML-выгрузка конфигурации 1С:Предприятие 8.3 (Конфигуратор → Конфигурация → Выгрузить конфигурацию в файлы). +Версии формата: `2.17` (платформа 8.3.20–8.3.24), `2.20` (платформа 8.3.27+). + +Источники: выгрузки ERP 2, Бухгалтерия предприятия (платформы 8.3.20, 8.3.24, 8.3.27). + +--- + +## 1. Общая структура выгрузки + +### 1.1. Верхний уровень каталогов + +``` +Configuration.xml # Корневой файл конфигурации +ConfigDumpInfo.xml # Служебный файл выгрузки +Catalogs/ # Справочники +Documents/ # Документы +InformationRegisters/ # Регистры сведений +AccumulationRegisters/ # Регистры накопления +AccountingRegisters/ # Регистры бухгалтерии +CalculationRegisters/ # Регистры расчёта +ChartsOfAccounts/ # Планы счетов +ChartsOfCharacteristicTypes/ # Планы видов характеристик +ChartsOfCalculationTypes/ # Планы видов расчёта +BusinessProcesses/ # Бизнес-процессы +Tasks/ # Задачи +ExchangePlans/ # Планы обмена +DocumentJournals/ # Журналы документов +Enums/ # Перечисления +Reports/ # Отчёты +DataProcessors/ # Обработки +Constants/ # Константы +CommonModules/ # Общие модули +CommonAttributes/ # Общие реквизиты +CommonCommands/ # Общие команды +CommonForms/ # Общие формы +CommonPictures/ # Общие картинки +CommonTemplates/ # Общие макеты +CommandGroups/ # Группы команд +DefinedTypes/ # Определяемые типы +DocumentNumerators/ # Нумераторы документов +EventSubscriptions/ # Подписки на события +FilterCriteria/ # Критерии отбора +FunctionalOptions/ # Функциональные опции +FunctionalOptionsParameters/ # Параметры функциональных опций +HTTPServices/ # HTTP-сервисы +Languages/ # Языки +Roles/ # Роли +ScheduledJobs/ # Регламентные задания +SessionParameters/ # Параметры сеанса +SettingsStorages/ # Хранилища настроек +StyleItems/ # Элементы стиля +Styles/ # Стили +Subsystems/ # Подсистемы +WebServices/ # Web-сервисы +WSReferences/ # WS-ссылки +XDTOPackages/ # XDTO-пакеты +Ext/ # Расширение конфигурации +``` + +### 1.2. Структура каталога объекта метаданных + +Каждый объект метаданных (справочник, документ и т.д.) хранится в каталоге с именем объекта: + +``` +<ИмяОбъекта>/ +├── <ИмяОбъекта>.xml # Корневой XML — определение объекта +├── Ext/ +│ ├── ObjectModule.bsl # Модуль объекта (опционально) +│ ├── ManagerModule.bsl # Модуль менеджера (опционально) +│ ├── RecordSetModule.bsl # Модуль набора записей — для регистров (опционально) +│ ├── Predefined.xml # Предопределённые элементы (опционально) +│ ├── Help.xml # Метаданные справки (опционально) +│ ├── Help/ +│ │ └── ru.html # HTML-страница справки +│ ├── Flowchart.xml # Карта маршрута — только для бизнес-процессов +│ └── Content.xml # Состав плана обмена — только для планов обмена +├── Forms/ +│ ├── <ИмяФормы>/ +│ │ ├── <ИмяФормы>.xml # Метаданные формы +│ │ └── Ext/ +│ │ ├── Form.xml # Описание формы +│ │ ├── Form/ +│ │ │ └── Module.bsl # Модуль формы +│ │ └── Help.xml # Справка формы (опционально) +│ └── ... +├── Templates/ +│ ├── <ИмяМакета>/ +│ │ ├── <ИмяМакета>.xml # Метаданные макета +│ │ └── Ext/ +│ │ └── Template.xml # Тело макета (MXL, СКД и др.) +│ └── ... +└── Commands/ # Команды (если определены отдельными файлами) +``` + +**Модули по типам объектов:** + +| Тип объекта | ObjectModule | ManagerModule | RecordSetModule | CommandModule | +|---|---|---|---|---| +| Справочник | + | + | - | + | +| Документ | + | + | - | + | +| Регистры сведений | - | + | + | - | +| Регистры накопления | - | + | + | - | +| Регистры бухгалтерии | - | + | + | - | +| Регистры расчёта | - | + | + | - | +| ПланСчетов | + | + | - | + | +| ПВХ | + | + | - | + | +| ПВР | + | + | - | + | +| БизнесПроцесс | + | + | - | + | +| Задача | + | + | - | + | +| ПланОбмена | + | + | - | + | +| Перечисление | - | + | - | - | +| Отчёт | + | + | - | + | +| Обработка | + | + | - | + | +| Константа | - | + | - | - | + +--- + +## 2. Общий формат XML + +### 2.1. Корневой элемент + +Все файлы метаданных объектов используют корневой элемент ``: + +```xml + + + + + ... + ... + ... + + + +``` + +### 2.2. Пространства имён + +| Префикс | URI | Назначение | +|---|---|---| +| *(default)* | `http://v8.1c.ru/8.3/MDClasses` | Основное пространство классов метаданных | +| `v8` | `http://v8.1c.ru/8.1/data/core` | Базовые типы данных (Type, item, lang, content) | +| `cfg` | `http://v8.1c.ru/8.1/data/enterprise/current-config` | Ссылки на объекты текущей конфигурации | +| `xr` | `http://v8.3/xcf/readable` | Человекочитаемый формат (GeneratedType, StandardAttribute) | +| `xsi` | `http://www.w3.org/2001/XMLSchema-instance` | Типы атрибутов (`xsi:type`, `xsi:nil`) | +| `xs` | `http://www.w3.org/2001/XMLSchema` | Типы XML Schema (`xs:string`, `xs:boolean`, ...) | +| `app` | `http://v8.1c.ru/8.2/managed-application/core` | Ядро управляемого приложения (ChoiceParameters) | +| `xen` | `http://v8.3/xcf/enums` | Перечисления формата | +| `xpr` | `http://v8.3/xcf/predef` | Предопределённые типы | + +### 2.3. Элемент типа объекта + +Внутри `` содержится единственный дочерний элемент, имя которого соответствует типу объекта: + +| Тип метаданных | XML-элемент | +|---|---| +| Справочник | `` | +| Документ | `` | +| Перечисление | `` | +| Константа | `` | +| Регистр сведений | `` | +| Регистр накопления | `` | +| Регистр бухгалтерии | `` | +| Регистр расчёта | `` | +| План счетов | `` | +| План видов характеристик | `` | +| План видов расчёта | `` | +| Бизнес-процесс | `` | +| Задача | `` | +| План обмена | `` | +| Журнал документов | `` | +| Отчёт | `` | +| Обработка | `` | + +Атрибут `uuid` — уникальный идентификатор объекта. + +### 2.4. Три секции объекта + +Каждый объект метаданных содержит три секции: + +```xml +<[ТипОбъекта] uuid="..."> + + + + +``` + +--- + +## 3. InternalInfo — внутренняя информация + +Секция содержит определения типов, генерируемых платформой для работы с объектом. + +### 3.1. GeneratedType + +```xml + + + xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx + xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx + + + ... + ... + + + +``` + +**Категории генерируемых типов по видам объектов:** + +| Вид объекта | Категории (category) | +|---|---| +| Catalog | Object, Ref, Selection, List, Manager | +| Document | Object, Ref, Selection, List, Manager | +| Enum | Ref, Manager, List | +| Constant | Manager, ValueManager, ValueKey | +| InformationRegister | Record, Manager, Selection, List, RecordSet, RecordKey, RecordManager | +| AccumulationRegister | Record, Manager, Selection, List, RecordSet, RecordKey | +| AccountingRegister | Record, Manager, Selection, List, RecordSet, RecordKey | +| CalculationRegister | Record, Manager, Selection, List, RecordSet, RecordKey + Recalcs | +| ChartOfAccounts | Object, Ref, Selection, List, Manager | +| ChartOfCharacteristicTypes | Object, Ref, Selection, List, Manager | +| ChartOfCalculationTypes | Object, Ref, Selection, List, Manager + Displacing, Base, Leading | +| BusinessProcess | Object, Ref, Selection, List, Manager | +| Task | Object, Ref, Selection, List, Manager | +| ExchangePlan | Object, Ref, Selection, List, Manager | +| DocumentJournal | Selection, List, Manager | +| Report | Object | +| DataProcessor | Object | + +Формат имени: `{ТипОбъектаEng}.{ИмяОбъекта}` (напр. `CatalogObject.Номенклатура`, `DocumentRef.АвансовыйОтчет`). + +### 3.2. ThisNode (только ExchangePlan) + +```xml + + xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx + ... + +``` + +--- + +## 4. Общие элементы Properties + +### 4.1. Базовые свойства (есть у всех объектов) + +```xml + + ИмяОбъекта + + + ru + Отображаемое имя + + + en + Display name + + + Комментарий разработчика + +``` + +- **Name** — системное имя (идентификатор, без пробелов и спецсимволов) +- **Synonym** — локализованное отображаемое имя (структура `v8:item`) +- **Comment** — комментарий (может быть пустым элементом ``) + +### 4.2. Многоязычный текст (v8:item) + +Используется для Synonym, ToolTip, ObjectPresentation, ListPresentation и других текстовых свойств: + +```xml + + + ru + Текст на русском + + + en + English text + + +``` + +### 4.3. Определение типа (Type) + +Тип реквизита задаётся элементом ``, содержащим один или несколько ``: + +**Примитивные типы:** +```xml + + + xs:string + + 100 + Variable + + + + + + xs:decimal + + 15 + 2 + Any + + + + + + xs:boolean + + + + + xs:dateTime + + DateTime + + +``` + +**Ссылочные типы:** +```xml + +cfg:CatalogRef.Номенклатура + + +cfg:DocumentRef.РеализацияТоваровУслуг + + +cfg:EnumRef.ВидыОпераций + + +cfg:ChartOfAccountsRef.Хозрасчетный + + +cfg:ChartOfCharacteristicTypesRef.ВидыСубконто + + +cfg:ChartOfCalculationTypesRef.Начисления + + +cfg:ExchangePlanRef.ОбменССайтом + + +cfg:BusinessProcessRef.Задание + + +cfg:TaskRef.ЗадачаИсполнителя +``` + +**Специальные типы:** +```xml + +v8:ValueStorage + + +v8:UUID +``` + +**Составной тип (несколько типов):** +```xml + + cfg:CatalogRef.Контрагенты + cfg:CatalogRef.ФизическиеЛица + xs:string + + 100 + Variable + + +``` + +**Определяемый тип (DefinedType):** +```xml + + cfg:DefinedType.Цена + +``` + +### 4.4. Свойства представления + +```xml + + ru... + +... +... +... +... +``` + +### 4.5. Свойства поведения + +```xml +true +true +Use +Managed +Use +true +true +``` + +### 4.6. Свойства форм + +```xml +Catalog.Номенклатура.Form.ФормаЭлемента +Catalog.Номенклатура.Form.ФормаГруппы +Catalog.Номенклатура.Form.ФормаСписка +Catalog.Номенклатура.Form.ФормаВыбора +... +... +... +... +... +... +``` + +### 4.7. Свойства поиска при вводе + +```xml + + Catalog.Номенклатура.StandardAttribute.Description + Catalog.Номенклатура.StandardAttribute.Code + +Begin +Use +Directly +DontUse +Auto +``` + +### 4.8. Свойства блокировки данных + +```xml + + Document.АвансовыйОтчет.Attribute.Организация + +Managed +``` + +### 4.9. Ввод на основании (BasedOn) + +```xml + + Document.РасходныйКассовыйОрдер + Document.СписаниеБезналичныхДС + +``` + +### 4.10. Характеристики (Characteristics) + +Механизм динамических свойств — позволяет расширять состав реквизитов объекта в режиме 1С:Предприятие: + +```xml + + + + InformationRegister.ДополнительныеСведения.Dimension.Свойство + Catalog.НаборыДополнительныхРеквизитовИСведений.TabularSection.ДополнительныеРеквизиты.Attribute.ДополнительныйРеквизит + Документ_АвансовыйОтчет + -1 + -1 + + + InformationRegister.ДополнительныеСведения.Dimension.Объект + InformationRegister.ДополнительныеСведения.Dimension.Свойство + InformationRegister.ДополнительныеСведения.Resource.Значение + -1 + -1 + + + +``` + +--- + +## 5. Стандартные реквизиты (StandardAttributes) + +Каждый объект имеет набор предопределённых стандартных реквизитов, задаваемых в секции `` внутри ``. + +### 5.1. Формат стандартного реквизита + +```xml + + + + ShowError + false + true + Auto + + + ruПодсказка + + false + + + Auto + Auto + + false + Use + false + + + ruНаименование + + + Use + + + + + + +``` + +### 5.2. Свойства стандартного реквизита + +| Свойство | Тип | Описание | +|---|---|---| +| `name` | атрибут | Имя стандартного реквизита | +| `LinkByType` | элемент | Связь по типу (обычно пустой) | +| `FillChecking` | enum | `DontCheck` \| `ShowWarning` \| `ShowError` | +| `MultiLine` | boolean | Многострочное поле | +| `FillFromFillingValue` | boolean | Заполнять из значения заполнения | +| `CreateOnInput` | enum | `Auto` \| `Use` \| `DontUse` | +| `MaxValue` | any | Макс. значение (`xsi:nil="true"` если не задано) | +| `MinValue` | any | Мин. значение | +| `ToolTip` | v8:item | Подсказка | +| `ExtendedEdit` | boolean | Расширенное редактирование | +| `Format` | v8:item | Формат отображения | +| `EditFormat` | v8:item | Формат редактирования | +| `ChoiceForm` | string | Форма выбора | +| `QuickChoice` | enum | `Auto` \| `Use` \| `DontUse` | +| `ChoiceHistoryOnInput` | enum | `Auto` \| `Use` \| `DontUse` | +| `PasswordMode` | boolean | Режим пароля | +| `DataHistory` | enum | `Use` \| `DontUse` | +| `MarkNegatives` | boolean | Выделять отрицательные | +| `Synonym` | v8:item | Переопределённый синоним | +| `Comment` | string | Комментарий | +| `FullTextSearch` | enum | `Use` \| `DontUse` | +| `ChoiceParameterLinks` | сложный | Связи параметров выбора | +| `FillValue` | typed | Значение заполнения | +| `Mask` | string | Маска ввода | +| `ChoiceParameters` | сложный | Параметры выбора | + +### 5.3. Стандартные реквизиты по видам объектов + +| Стандартный реквизит | Catalog | Document | Enum | ChartOfAccounts | ChartOfCharacteristicTypes | ExchangePlan | BusinessProcess | Task | +|---|---|---|---|---|---|---|---|---| +| Ref | + | + | + | + | + | + | + | + | +| DeletionMark | + | + | - | + | + | + | + | + | +| PredefinedDataName | + | - | - | + | + | - | - | - | +| Predefined | + | - | - | + | + | - | - | - | +| Code | + | - | - | + | + | + | - | - | +| Description | + | - | - | + | + | + | - | + | +| IsFolder | +* | - | - | - | - | - | - | - | +| Owner | +** | - | - | - | - | - | - | - | +| Parent | +* | - | - | + | +* | - | - | - | +| Date | - | + | - | - | - | - | + | + | +| Number | - | + | - | - | - | - | + | + | +| Posted | - | + | - | - | - | - | - | - | +| Order | - | - | + | + | - | - | - | - | +| ValueType | - | - | - | - | + | - | - | - | +| Type (тип счёта) | - | - | - | + | - | - | - | - | +| OffBalance | - | - | - | + | - | - | - | - | +| ThisNode | - | - | - | - | - | + | - | - | +| SentNo | - | - | - | - | - | + | - | - | +| ReceivedNo | - | - | - | - | - | + | - | - | +| Started | - | - | - | - | - | - | + | - | +| Completed | - | - | - | - | - | - | + | - | +| HeadTask | - | - | - | - | - | - | + | - | +| Executed | - | - | - | - | - | - | - | + | +| RoutePoint | - | - | - | - | - | - | - | + | +| BusinessProcess | - | - | - | - | - | - | - | + | + +`*` — если Hierarchical=true. `**` — если задан Owners. + +**Стандартные реквизиты регистров:** + +| Стандартный реквизит | InformationRegister | AccumulationRegister | AccountingRegister | CalculationRegister | +|---|---|---|---|---| +| Active | + | + | + | + | +| Period | + | + | + | - | +| Recorder | +* | + | + | + | +| LineNumber | +* | + | + | + | +| Account | - | - | + | - | +| ExtDimension1..3 | - | - | + | - | +| ExtDimensionType1..3 | - | - | + | - | +| RegistrationPeriod | - | - | - | + | +| CalculationType | - | - | - | + | +| ActionPeriod | - | - | - | +** | +| BegOfActionPeriod | - | - | - | +** | +| EndOfActionPeriod | - | - | - | +** | +| BegOfBasePeriod | - | - | - | +*** | +| EndOfBasePeriod | - | - | - | +*** | +| ReversingEntry | - | - | - | + | + +`*` — если WriteMode = RecorderSubordinate. `**` — если ActionPeriod = true. `***` — если BasePeriod = true. + +### 5.4. LinkByType (связь по типу) + +Используется в регистрах бухгалтерии для привязки субконто к счёту: + +```xml + + AccountingRegister.Хозрасчетный.StandardAttribute.Account + 1 + +``` + +### 5.5. FillValue — значение заполнения + +```xml + + + + +Текст +false +0 +0001-01-01T00:00:00 + + +Catalog.Номенклатура.EmptyRef +Enum.ВидыОпераций.EnumValue.Продажа +``` + +--- + +## 6. Дочерние объекты (ChildObjects) + +### 6.1. Реквизит (Attribute) + +```xml + + + Организация + + ruОрганизация + + + + cfg:CatalogRef.Организации + + false + + + + false + + false + false + + + true + + DontCheck + Items + + + Auto + Auto + + + Auto + DontIndex + Use + Use + ForItem + + +``` + +**Специфичные свойства реквизита:** + +| Свойство | Тип | Описание | +|---|---|---| +| `Indexing` | enum | `DontIndex` \| `Index` \| `IndexWithAdditionalOrder` | +| `ChoiceFoldersAndItems` | enum | `Items` \| `Folders` \| `FoldersAndItems` | +| `Use` | enum | `ForItem` \| `ForFolder` \| `ForFolderAndItem` (только для иерарх. справочников) | +| `FillFromFillingValue` | boolean | Заполнять из значения по умолчанию | + +### 6.2. Табличная часть (TabularSection) + +```xml + + + + ... + ... + + + ... + ... + + + + Штрихкоды + ... + + + DontCheck + + + + + + ForItem + + + + + + + +``` + +Имя генерируемого типа: `{Тип}TabularSection.{Объект}.{ИмяТЧ}` и `{Тип}TabularSectionRow.{Объект}.{ИмяТЧ}`. + +### 6.3. Форма (Form) + +```xml +
+ + ФормаЭлемента + ... + + Ordinary + +
+``` + +Содержимое формы хранится в отдельных файлах: `Forms/<Имя>/<Имя>.xml` и `Forms/<Имя>/Ext/Form.xml`. + +### 6.4. Макет (Template) + +```xml + +``` + +Тело макета: `Templates/<Имя>/Ext/Template.xml` (или другое расширение в зависимости от типа). + +### 6.5. Команда (Command) + +```xml + + + ВвестиНаОсновании + ... + + FormCommandBarImportant + + + cfg:DocumentRef.АвансовыйОтчет + + + Multiple + true + Auto + ... + + CommonPicture.Создать + false + + + Auto + + +``` + +--- + +## 7. Справочники (Catalogs) + +XML-элемент: ``. Категория InternalInfo: CatalogObject, CatalogRef, CatalogSelection, CatalogList, CatalogManager. + +### 7.1. Специфичные свойства + +**Иерархия:** + +```xml +true +HierarchyFoldersAndItems +true +3 +true +``` + +**Код и наименование:** + +```xml +11 +String +Variable +WholeCatalog +150 +true +true +AsDescription +``` + +**Владелец:** + +```xml + + Catalog.Контрагенты + +ToItems +``` + +**Прочее:** + +```xml +InDialog +true +BothWays +Auto +``` + +### 7.2. Предопределённые элементы (Predefined.xml) + +Файл `Ext/Predefined.xml` содержит предопределённые элементы справочника (если есть): + +```xml + + + + ОсновнаяВалюта + Рубль + 643 + false + + + +``` + +--- + +## 8. Документы (Documents) + +XML-элемент: ``. Категория InternalInfo: DocumentObject, DocumentRef, DocumentSelection, DocumentList, DocumentManager. + +### 8.1. Специфичные свойства + +**Нумерация:** + +```xml + +String +11 +Variable +Year +true +true +``` + +**Проведение:** + +```xml +Allow +Allow +true +true +``` + +**Движения по регистрам:** + +```xml + + AccumulationRegister.ТоварыНаСкладах + InformationRegister.ЦеныНоменклатуры + AccountingRegister.Хозрасчетный + +AutoDeleteOnUnpost +WriteSelected +AutoFill +``` + +### 8.2. Стандартные реквизиты документа + +- **Ref** — ссылка +- **DeletionMark** — пометка удаления +- **Date** — дата документа +- **Number** — номер документа +- **Posted** — проведён + +--- + +## 9. Регистры + +### 9.1. Регистры сведений (InformationRegisters) + +XML-элемент: ``. + +**Специфичные свойства:** + +```xml +Month + +Independent +true +false +false +``` + +- `WriteMode=Independent` — записи создаются напрямую, без документа-регистратора +- `WriteMode=RecorderSubordinate` — записи привязаны к документу-регистратору +- `RecorderPosition` — непериодический, но подчинённый регистратору (период = момент записи регистратора) + +**Дочерние объекты (ChildObjects):** + +- `` — измерения (ключевые поля) +- `` — ресурсы (хранимые значения) +- `` — реквизиты (дополнительная информация) +- `
`, `