Cover full 1C metadata object catalog
This commit is contained in:
@@ -506,6 +506,13 @@ _OBJECT_KIND_BY_TAG = {
|
||||
"subsystem": "SUBSYSTEM",
|
||||
"subsystems": "SUBSYSTEM",
|
||||
"подсистема": "SUBSYSTEM",
|
||||
"sequence": "SEQUENCE",
|
||||
"sequences": "SEQUENCE",
|
||||
"последовательность": "SEQUENCE",
|
||||
"documentnumerator": "DOCUMENT_NUMERATOR",
|
||||
"documentnumerators": "DOCUMENT_NUMERATOR",
|
||||
"нумератордокументов": "DOCUMENT_NUMERATOR",
|
||||
"нумератор": "DOCUMENT_NUMERATOR",
|
||||
"httpservice": "HTTP_SERVICE",
|
||||
"httpservices": "HTTP_SERVICE",
|
||||
"httpсервис": "HTTP_SERVICE",
|
||||
@@ -722,6 +729,15 @@ _FORM_ELEMENT_TAGS = {
|
||||
_QUALIFIED_PREFIX_BY_KIND = {
|
||||
"CATALOG": "Справочник",
|
||||
"DOCUMENT": "Документ",
|
||||
"CONSTANT": "Константа",
|
||||
"DOCUMENT_JOURNAL": "ЖурналДокументов",
|
||||
"ENUM": "Перечисление",
|
||||
"REPORT": "Отчет",
|
||||
"DATA_PROCESSOR": "Обработка",
|
||||
"CHART_OF_CHARACTERISTIC_TYPES": "ПланВидовХарактеристик",
|
||||
"CHART_OF_ACCOUNTS": "ПланСчетов",
|
||||
"CHART_OF_CALCULATION_TYPES": "ПланВидовРасчета",
|
||||
"EXTERNAL_DATA_SOURCE": "ВнешнийИсточникДанных",
|
||||
"REGISTER": "Регистр",
|
||||
"INFORMATION_REGISTER": "РегистрСведений",
|
||||
"ACCUMULATION_REGISTER": "РегистрНакопления",
|
||||
@@ -734,6 +750,8 @@ _QUALIFIED_PREFIX_BY_KIND = {
|
||||
"BUSINESS_PROCESS": "БизнесПроцесс",
|
||||
"TASK": "Задача",
|
||||
"SUBSYSTEM": "Подсистема",
|
||||
"SEQUENCE": "Последовательность",
|
||||
"DOCUMENT_NUMERATOR": "НумераторДокументов",
|
||||
"HTTP_SERVICE": "HTTPСервис",
|
||||
"WEB_SERVICE": "WebСервис",
|
||||
"WS_REFERENCE": "WSСсылка",
|
||||
@@ -803,6 +821,8 @@ _QUALIFIED_PREFIX_BY_TAG = {
|
||||
"bot": "Бот",
|
||||
"interface": "Интерфейс",
|
||||
"fulltextsearchdictionary": "СловарьПолнотекстовогоПоиска",
|
||||
"sequence": "Последовательность",
|
||||
"documentnumerator": "НумераторДокументов",
|
||||
}
|
||||
|
||||
_ROOT_METADATA_OBJECT_KINDS = {
|
||||
@@ -830,6 +850,8 @@ _ROOT_METADATA_OBJECT_KINDS = {
|
||||
"BUSINESS_PROCESS",
|
||||
"TASK",
|
||||
"SUBSYSTEM",
|
||||
"SEQUENCE",
|
||||
"DOCUMENT_NUMERATOR",
|
||||
"HTTP_SERVICE",
|
||||
"WEB_SERVICE",
|
||||
"WS_REFERENCE",
|
||||
@@ -851,6 +873,7 @@ _ROOT_METADATA_OBJECT_KINDS = {
|
||||
"COMMON_LAYOUT",
|
||||
"COMMON_PICTURE",
|
||||
"INTEGRATION_SERVICE",
|
||||
"EXTENSION",
|
||||
"PALETTE_COLOR",
|
||||
"STYLE_ITEM",
|
||||
"STYLE",
|
||||
@@ -861,8 +884,11 @@ _ROOT_METADATA_OBJECT_KINDS = {
|
||||
_GROUP_BY_OBJECT_KIND = {
|
||||
"PROJECT": "Конфигурация",
|
||||
"COMMON_MODULE": "Общие модули",
|
||||
"CONSTANT": "Константы",
|
||||
"CATALOG": "Справочники",
|
||||
"DOCUMENT": "Документы",
|
||||
"DOCUMENT_JOURNAL": "Журналы документов",
|
||||
"ENUM": "Перечисления",
|
||||
"REGISTER": "Регистры",
|
||||
"INFORMATION_REGISTER": "Регистры сведений",
|
||||
"ACCUMULATION_REGISTER": "Регистры накопления",
|
||||
@@ -870,10 +896,18 @@ _GROUP_BY_OBJECT_KIND = {
|
||||
"CALCULATION_REGISTER": "Регистры расчета",
|
||||
"REPORT": "Отчеты",
|
||||
"DATA_PROCESSOR": "Обработки",
|
||||
"CHART_OF_CHARACTERISTIC_TYPES": "Планы видов характеристик",
|
||||
"CHART_OF_ACCOUNTS": "Планы счетов",
|
||||
"CHART_OF_CALCULATION_TYPES": "Планы видов расчета",
|
||||
"BUSINESS_PROCESS": "Бизнес-процессы",
|
||||
"TASK": "Задачи",
|
||||
"EXTENSION": "Расширения конфигурации",
|
||||
"FORM": "Формы",
|
||||
"COMMAND": "Команды",
|
||||
"ROLE": "Роли",
|
||||
"SUBSYSTEM": "Подсистемы",
|
||||
"SEQUENCE": "Последовательности",
|
||||
"DOCUMENT_NUMERATOR": "Нумераторы документов",
|
||||
"HTTP_SERVICE": "HTTP-сервисы",
|
||||
"WEB_SERVICE": "Web-сервисы",
|
||||
"WS_REFERENCE": "WS-ссылки",
|
||||
|
||||
@@ -34,6 +34,8 @@ COMMON_BRANCH_CHILDREN = (
|
||||
"Подписки на события",
|
||||
"Критерии отбора",
|
||||
"Регламентные задания",
|
||||
"Последовательности",
|
||||
"Нумераторы документов",
|
||||
"Функциональные опции",
|
||||
"Параметры функциональных опций",
|
||||
"Определяемые типы",
|
||||
@@ -145,6 +147,7 @@ REPORT_CHILDREN = (
|
||||
|
||||
METADATA_TYPE_SPECS: tuple[MetadataTypeSpec, ...] = (
|
||||
MetadataTypeSpec("COMMON", "Общие", "Общие", "common", COMMON_BRANCH_CHILDREN),
|
||||
MetadataTypeSpec("SUBSYSTEM", "Подсистема", "Подсистемы", "subsystem", ("Состав", "Командный интерфейс", "Права")),
|
||||
MetadataTypeSpec(
|
||||
"COMMON_MODULE",
|
||||
"Общий модуль",
|
||||
@@ -186,8 +189,11 @@ METADATA_TYPE_SPECS: tuple[MetadataTypeSpec, ...] = (
|
||||
MetadataTypeSpec("EXTERNAL_DATA_SOURCE", "Внешний источник данных", "Внешние источники данных", "external-source", ("Таблицы", "Кубы", "Функции", "Формы", "Команды", "Макеты")),
|
||||
MetadataTypeSpec("EXCHANGE_PLAN", "План обмена", "Планы обмена", "exchange-plan", STRUCTURED_OBJECT_CHILDREN + ("Состав",), OBJECT_MODULES),
|
||||
MetadataTypeSpec("EVENT_SUBSCRIPTION", "Подписка на событие", "Подписки на события", "event", ("События",), HANDLER_METHOD),
|
||||
MetadataTypeSpec("ROLE", "Роль", "Роли", "role", ("Права", "Ограничения доступа", "Объекты доступа")),
|
||||
MetadataTypeSpec("EXTENSION", "Расширение конфигурации", "Расширения конфигурации", "extension", ("Объекты расширения", "Заимствованные объекты", "Добавленные реквизиты", "Формы", "Команды", "Проверки совместимости")),
|
||||
MetadataTypeSpec("SCHEDULED_JOB", "Регламентное задание", "Регламентные задания", "scheduled-job", ("Расписание", "Параметры"), ("Метод",)),
|
||||
MetadataTypeSpec("SEQUENCE", "Последовательность", "Последовательности", "sequence", ("Измерения", "Документы", "Границы")),
|
||||
MetadataTypeSpec("DOCUMENT_NUMERATOR", "Нумератор документов", "Нумераторы документов", "numbering", ("Документы", "Периодичность", "Длина номера")),
|
||||
MetadataTypeSpec("SESSION_PARAMETER", "Параметр сеанса", "Параметры сеанса", "parameter"),
|
||||
MetadataTypeSpec("COMMON_ATTRIBUTE", "Общий реквизит", "Общие реквизиты", "attribute"),
|
||||
MetadataTypeSpec("FILTER_CRITERION", "Критерий отбора", "Критерии отбора", "filter"),
|
||||
@@ -217,6 +223,7 @@ METADATA_TYPE_SPECS: tuple[MetadataTypeSpec, ...] = (
|
||||
|
||||
METADATA_TYPE_DESCRIPTIONS = {
|
||||
"COMMON": "Служебная ветка дерева конфигурации, объединяющая общие объекты метаданных.",
|
||||
"SUBSYSTEM": "Подсистема группирует прикладные объекты и участвует в построении командного интерфейса.",
|
||||
"COMMON_MODULE": "Общий модуль содержит процедуры и функции, доступные из разных областей выполнения конфигурации.",
|
||||
"CONSTANT": "Константа хранит единичное значение конфигурации и может иметь формы, команды, права и модуль менеджера.",
|
||||
"CATALOG": "Справочник описывает прикладной список объектов с реквизитами, табличными частями, формами, командами, макетами, правами и предопределенными данными.",
|
||||
@@ -237,8 +244,11 @@ METADATA_TYPE_DESCRIPTIONS = {
|
||||
"EXTERNAL_DATA_SOURCE": "Внешний источник данных описывает подключение к внешним таблицам, кубам и функциям.",
|
||||
"EXCHANGE_PLAN": "План обмена описывает узлы и состав данных для распределенного обмена.",
|
||||
"EVENT_SUBSCRIPTION": "Подписка на событие связывает событие платформы или объекта с обработчиком.",
|
||||
"ROLE": "Роль описывает набор прав доступа к объектам конфигурации и их данным.",
|
||||
"EXTENSION": "Расширение конфигурации содержит добавленные и заимствованные объекты, а также проверки совместимости.",
|
||||
"SCHEDULED_JOB": "Регламентное задание описывает метод, параметры и расписание фонового выполнения.",
|
||||
"SEQUENCE": "Последовательность управляет сквозной последовательностью проведения документов и границами восстановления.",
|
||||
"DOCUMENT_NUMERATOR": "Нумератор документов задает общие правила нумерации для одного или нескольких видов документов.",
|
||||
"SESSION_PARAMETER": "Параметр сеанса задает значение, доступное в течение пользовательского сеанса.",
|
||||
"COMMON_ATTRIBUTE": "Общий реквизит добавляет реквизит сразу к выбранному набору объектов конфигурации.",
|
||||
"FILTER_CRITERION": "Критерий отбора задает состав реквизитов для универсального отбора ссылочных данных.",
|
||||
@@ -282,6 +292,7 @@ METADATA_TYPE_DOCUMENTATION_URLS.update(
|
||||
|
||||
METADATA_TYPE_PROPERTIES: dict[str, tuple[str, ...]] = {
|
||||
"COMMON": ("Состав общих объектов",),
|
||||
"SUBSYSTEM": STANDARD_PROPERTIES + ("Состав", "Включать в командный интерфейс", "Картинка", "Родитель"),
|
||||
"COMMON_MODULE": STANDARD_PROPERTIES + ("Клиент", "Сервер", "Внешнее соединение", "Глобальный", "Вызов сервера", "Повторное использование возвращаемых значений"),
|
||||
"CONSTANT": STANDARD_PROPERTIES + ("Тип значения", "Основная форма", "Форма выбора"),
|
||||
"CATALOG": REFERENCE_OBJECT_PROPERTIES,
|
||||
@@ -302,8 +313,11 @@ METADATA_TYPE_PROPERTIES: dict[str, tuple[str, ...]] = {
|
||||
"EXTERNAL_DATA_SOURCE": STANDARD_PROPERTIES + ("Соединение", "Таблицы", "Кубы", "Функции"),
|
||||
"EXCHANGE_PLAN": DATA_OBJECT_PROPERTIES + ("Состав обмена", "Распределенная ИБ", "Авторегистрация изменений"),
|
||||
"EVENT_SUBSCRIPTION": STANDARD_PROPERTIES + ("Источник", "Событие", "Обработчик", "Перед/после события"),
|
||||
"ROLE": STANDARD_PROPERTIES + ("Права", "RLS", "Ограничения доступа"),
|
||||
"EXTENSION": ("Имя", "Назначение", "Версия", "Режим совместимости", "Заимствованные объекты", "Проверки совместимости"),
|
||||
"SCHEDULED_JOB": STANDARD_PROPERTIES + ("Метод", "Расписание", "Использование", "Параметры", "Предопределенное"),
|
||||
"SEQUENCE": STANDARD_PROPERTIES + ("Документы", "Измерения", "Периодичность", "Заполнение", "Граница"),
|
||||
"DOCUMENT_NUMERATOR": STANDARD_PROPERTIES + ("Длина номера", "Тип номера", "Периодичность", "Документы"),
|
||||
"SESSION_PARAMETER": STANDARD_PROPERTIES + ("Тип значения",),
|
||||
"COMMON_ATTRIBUTE": STANDARD_PROPERTIES + ("Тип значения", "Состав", "Разделение данных", "Автоиспользование"),
|
||||
"FILTER_CRITERION": STANDARD_PROPERTIES + ("Тип значения", "Состав реквизитов"),
|
||||
|
||||
@@ -219,6 +219,43 @@ def test_normalize_edt_project_preserves_source_path_and_common_object_descripti
|
||||
assert common_forms[0].metadata["comment"] == "Используется в подборе товаров"
|
||||
|
||||
|
||||
def test_normalize_edt_project_knows_full_common_metadata_catalog(tmp_path: Path):
|
||||
for file_name, class_name, object_name in [
|
||||
("Продажи.mdo", "Subsystem", "Продажи"),
|
||||
("Менеджер.mdo", "Role", "Менеджер"),
|
||||
("ПроведениеДокументов.mdo", "Sequence", "ПроведениеДокументов"),
|
||||
("ОбщийНумератор.mdo", "DocumentNumerator", "ОбщийНумератор"),
|
||||
("ДоступностьСкидок.mdo", "FunctionalOption", "ДоступностьСкидок"),
|
||||
("ФормаПодбора.mdo", "CommonForm", "ФормаПодбора"),
|
||||
("ПубличныйAPI.mdo", "HTTPService", "ПубличныйAPI"),
|
||||
]:
|
||||
(tmp_path / file_name).write_text(
|
||||
f"""
|
||||
<mdclass:{class_name} xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass">
|
||||
<name>{object_name}</name>
|
||||
</mdclass:{class_name}>
|
||||
""",
|
||||
encoding="utf-8",
|
||||
)
|
||||
|
||||
normalized = normalize_one_c_project(tmp_path, project_id="edt-full-common")
|
||||
objects = {
|
||||
item.qualified_name
|
||||
for group in normalized.configuration.groups
|
||||
for item in group.objects
|
||||
}
|
||||
|
||||
assert {
|
||||
"Подсистема.Продажи",
|
||||
"Роль.Менеджер",
|
||||
"Последовательность.ПроведениеДокументов",
|
||||
"НумераторДокументов.ОбщийНумератор",
|
||||
"ФункциональнаяОпция.ДоступностьСкидок",
|
||||
"ОбщаяФорма.ФормаПодбора",
|
||||
"HTTPСервис.ПубличныйAPI",
|
||||
}.issubset(objects)
|
||||
|
||||
|
||||
def test_normalize_edt_project_preserves_localized_descriptions(tmp_path: Path):
|
||||
catalog = tmp_path / "Контрагенты.mdo"
|
||||
catalog.write_text(
|
||||
|
||||
Reference in New Issue
Block a user