Cover full 1C metadata object catalog
This commit is contained in:
@@ -506,6 +506,13 @@ _OBJECT_KIND_BY_TAG = {
|
|||||||
"subsystem": "SUBSYSTEM",
|
"subsystem": "SUBSYSTEM",
|
||||||
"subsystems": "SUBSYSTEM",
|
"subsystems": "SUBSYSTEM",
|
||||||
"подсистема": "SUBSYSTEM",
|
"подсистема": "SUBSYSTEM",
|
||||||
|
"sequence": "SEQUENCE",
|
||||||
|
"sequences": "SEQUENCE",
|
||||||
|
"последовательность": "SEQUENCE",
|
||||||
|
"documentnumerator": "DOCUMENT_NUMERATOR",
|
||||||
|
"documentnumerators": "DOCUMENT_NUMERATOR",
|
||||||
|
"нумератордокументов": "DOCUMENT_NUMERATOR",
|
||||||
|
"нумератор": "DOCUMENT_NUMERATOR",
|
||||||
"httpservice": "HTTP_SERVICE",
|
"httpservice": "HTTP_SERVICE",
|
||||||
"httpservices": "HTTP_SERVICE",
|
"httpservices": "HTTP_SERVICE",
|
||||||
"httpсервис": "HTTP_SERVICE",
|
"httpсервис": "HTTP_SERVICE",
|
||||||
@@ -722,6 +729,15 @@ _FORM_ELEMENT_TAGS = {
|
|||||||
_QUALIFIED_PREFIX_BY_KIND = {
|
_QUALIFIED_PREFIX_BY_KIND = {
|
||||||
"CATALOG": "Справочник",
|
"CATALOG": "Справочник",
|
||||||
"DOCUMENT": "Документ",
|
"DOCUMENT": "Документ",
|
||||||
|
"CONSTANT": "Константа",
|
||||||
|
"DOCUMENT_JOURNAL": "ЖурналДокументов",
|
||||||
|
"ENUM": "Перечисление",
|
||||||
|
"REPORT": "Отчет",
|
||||||
|
"DATA_PROCESSOR": "Обработка",
|
||||||
|
"CHART_OF_CHARACTERISTIC_TYPES": "ПланВидовХарактеристик",
|
||||||
|
"CHART_OF_ACCOUNTS": "ПланСчетов",
|
||||||
|
"CHART_OF_CALCULATION_TYPES": "ПланВидовРасчета",
|
||||||
|
"EXTERNAL_DATA_SOURCE": "ВнешнийИсточникДанных",
|
||||||
"REGISTER": "Регистр",
|
"REGISTER": "Регистр",
|
||||||
"INFORMATION_REGISTER": "РегистрСведений",
|
"INFORMATION_REGISTER": "РегистрСведений",
|
||||||
"ACCUMULATION_REGISTER": "РегистрНакопления",
|
"ACCUMULATION_REGISTER": "РегистрНакопления",
|
||||||
@@ -734,6 +750,8 @@ _QUALIFIED_PREFIX_BY_KIND = {
|
|||||||
"BUSINESS_PROCESS": "БизнесПроцесс",
|
"BUSINESS_PROCESS": "БизнесПроцесс",
|
||||||
"TASK": "Задача",
|
"TASK": "Задача",
|
||||||
"SUBSYSTEM": "Подсистема",
|
"SUBSYSTEM": "Подсистема",
|
||||||
|
"SEQUENCE": "Последовательность",
|
||||||
|
"DOCUMENT_NUMERATOR": "НумераторДокументов",
|
||||||
"HTTP_SERVICE": "HTTPСервис",
|
"HTTP_SERVICE": "HTTPСервис",
|
||||||
"WEB_SERVICE": "WebСервис",
|
"WEB_SERVICE": "WebСервис",
|
||||||
"WS_REFERENCE": "WSСсылка",
|
"WS_REFERENCE": "WSСсылка",
|
||||||
@@ -803,6 +821,8 @@ _QUALIFIED_PREFIX_BY_TAG = {
|
|||||||
"bot": "Бот",
|
"bot": "Бот",
|
||||||
"interface": "Интерфейс",
|
"interface": "Интерфейс",
|
||||||
"fulltextsearchdictionary": "СловарьПолнотекстовогоПоиска",
|
"fulltextsearchdictionary": "СловарьПолнотекстовогоПоиска",
|
||||||
|
"sequence": "Последовательность",
|
||||||
|
"documentnumerator": "НумераторДокументов",
|
||||||
}
|
}
|
||||||
|
|
||||||
_ROOT_METADATA_OBJECT_KINDS = {
|
_ROOT_METADATA_OBJECT_KINDS = {
|
||||||
@@ -830,6 +850,8 @@ _ROOT_METADATA_OBJECT_KINDS = {
|
|||||||
"BUSINESS_PROCESS",
|
"BUSINESS_PROCESS",
|
||||||
"TASK",
|
"TASK",
|
||||||
"SUBSYSTEM",
|
"SUBSYSTEM",
|
||||||
|
"SEQUENCE",
|
||||||
|
"DOCUMENT_NUMERATOR",
|
||||||
"HTTP_SERVICE",
|
"HTTP_SERVICE",
|
||||||
"WEB_SERVICE",
|
"WEB_SERVICE",
|
||||||
"WS_REFERENCE",
|
"WS_REFERENCE",
|
||||||
@@ -851,6 +873,7 @@ _ROOT_METADATA_OBJECT_KINDS = {
|
|||||||
"COMMON_LAYOUT",
|
"COMMON_LAYOUT",
|
||||||
"COMMON_PICTURE",
|
"COMMON_PICTURE",
|
||||||
"INTEGRATION_SERVICE",
|
"INTEGRATION_SERVICE",
|
||||||
|
"EXTENSION",
|
||||||
"PALETTE_COLOR",
|
"PALETTE_COLOR",
|
||||||
"STYLE_ITEM",
|
"STYLE_ITEM",
|
||||||
"STYLE",
|
"STYLE",
|
||||||
@@ -861,8 +884,11 @@ _ROOT_METADATA_OBJECT_KINDS = {
|
|||||||
_GROUP_BY_OBJECT_KIND = {
|
_GROUP_BY_OBJECT_KIND = {
|
||||||
"PROJECT": "Конфигурация",
|
"PROJECT": "Конфигурация",
|
||||||
"COMMON_MODULE": "Общие модули",
|
"COMMON_MODULE": "Общие модули",
|
||||||
|
"CONSTANT": "Константы",
|
||||||
"CATALOG": "Справочники",
|
"CATALOG": "Справочники",
|
||||||
"DOCUMENT": "Документы",
|
"DOCUMENT": "Документы",
|
||||||
|
"DOCUMENT_JOURNAL": "Журналы документов",
|
||||||
|
"ENUM": "Перечисления",
|
||||||
"REGISTER": "Регистры",
|
"REGISTER": "Регистры",
|
||||||
"INFORMATION_REGISTER": "Регистры сведений",
|
"INFORMATION_REGISTER": "Регистры сведений",
|
||||||
"ACCUMULATION_REGISTER": "Регистры накопления",
|
"ACCUMULATION_REGISTER": "Регистры накопления",
|
||||||
@@ -870,10 +896,18 @@ _GROUP_BY_OBJECT_KIND = {
|
|||||||
"CALCULATION_REGISTER": "Регистры расчета",
|
"CALCULATION_REGISTER": "Регистры расчета",
|
||||||
"REPORT": "Отчеты",
|
"REPORT": "Отчеты",
|
||||||
"DATA_PROCESSOR": "Обработки",
|
"DATA_PROCESSOR": "Обработки",
|
||||||
|
"CHART_OF_CHARACTERISTIC_TYPES": "Планы видов характеристик",
|
||||||
|
"CHART_OF_ACCOUNTS": "Планы счетов",
|
||||||
|
"CHART_OF_CALCULATION_TYPES": "Планы видов расчета",
|
||||||
|
"BUSINESS_PROCESS": "Бизнес-процессы",
|
||||||
|
"TASK": "Задачи",
|
||||||
|
"EXTENSION": "Расширения конфигурации",
|
||||||
"FORM": "Формы",
|
"FORM": "Формы",
|
||||||
"COMMAND": "Команды",
|
"COMMAND": "Команды",
|
||||||
"ROLE": "Роли",
|
"ROLE": "Роли",
|
||||||
"SUBSYSTEM": "Подсистемы",
|
"SUBSYSTEM": "Подсистемы",
|
||||||
|
"SEQUENCE": "Последовательности",
|
||||||
|
"DOCUMENT_NUMERATOR": "Нумераторы документов",
|
||||||
"HTTP_SERVICE": "HTTP-сервисы",
|
"HTTP_SERVICE": "HTTP-сервисы",
|
||||||
"WEB_SERVICE": "Web-сервисы",
|
"WEB_SERVICE": "Web-сервисы",
|
||||||
"WS_REFERENCE": "WS-ссылки",
|
"WS_REFERENCE": "WS-ссылки",
|
||||||
|
|||||||
@@ -34,6 +34,8 @@ COMMON_BRANCH_CHILDREN = (
|
|||||||
"Подписки на события",
|
"Подписки на события",
|
||||||
"Критерии отбора",
|
"Критерии отбора",
|
||||||
"Регламентные задания",
|
"Регламентные задания",
|
||||||
|
"Последовательности",
|
||||||
|
"Нумераторы документов",
|
||||||
"Функциональные опции",
|
"Функциональные опции",
|
||||||
"Параметры функциональных опций",
|
"Параметры функциональных опций",
|
||||||
"Определяемые типы",
|
"Определяемые типы",
|
||||||
@@ -145,6 +147,7 @@ REPORT_CHILDREN = (
|
|||||||
|
|
||||||
METADATA_TYPE_SPECS: tuple[MetadataTypeSpec, ...] = (
|
METADATA_TYPE_SPECS: tuple[MetadataTypeSpec, ...] = (
|
||||||
MetadataTypeSpec("COMMON", "Общие", "Общие", "common", COMMON_BRANCH_CHILDREN),
|
MetadataTypeSpec("COMMON", "Общие", "Общие", "common", COMMON_BRANCH_CHILDREN),
|
||||||
|
MetadataTypeSpec("SUBSYSTEM", "Подсистема", "Подсистемы", "subsystem", ("Состав", "Командный интерфейс", "Права")),
|
||||||
MetadataTypeSpec(
|
MetadataTypeSpec(
|
||||||
"COMMON_MODULE",
|
"COMMON_MODULE",
|
||||||
"Общий модуль",
|
"Общий модуль",
|
||||||
@@ -186,8 +189,11 @@ METADATA_TYPE_SPECS: tuple[MetadataTypeSpec, ...] = (
|
|||||||
MetadataTypeSpec("EXTERNAL_DATA_SOURCE", "Внешний источник данных", "Внешние источники данных", "external-source", ("Таблицы", "Кубы", "Функции", "Формы", "Команды", "Макеты")),
|
MetadataTypeSpec("EXTERNAL_DATA_SOURCE", "Внешний источник данных", "Внешние источники данных", "external-source", ("Таблицы", "Кубы", "Функции", "Формы", "Команды", "Макеты")),
|
||||||
MetadataTypeSpec("EXCHANGE_PLAN", "План обмена", "Планы обмена", "exchange-plan", STRUCTURED_OBJECT_CHILDREN + ("Состав",), OBJECT_MODULES),
|
MetadataTypeSpec("EXCHANGE_PLAN", "План обмена", "Планы обмена", "exchange-plan", STRUCTURED_OBJECT_CHILDREN + ("Состав",), OBJECT_MODULES),
|
||||||
MetadataTypeSpec("EVENT_SUBSCRIPTION", "Подписка на событие", "Подписки на события", "event", ("События",), HANDLER_METHOD),
|
MetadataTypeSpec("EVENT_SUBSCRIPTION", "Подписка на событие", "Подписки на события", "event", ("События",), HANDLER_METHOD),
|
||||||
|
MetadataTypeSpec("ROLE", "Роль", "Роли", "role", ("Права", "Ограничения доступа", "Объекты доступа")),
|
||||||
MetadataTypeSpec("EXTENSION", "Расширение конфигурации", "Расширения конфигурации", "extension", ("Объекты расширения", "Заимствованные объекты", "Добавленные реквизиты", "Формы", "Команды", "Проверки совместимости")),
|
MetadataTypeSpec("EXTENSION", "Расширение конфигурации", "Расширения конфигурации", "extension", ("Объекты расширения", "Заимствованные объекты", "Добавленные реквизиты", "Формы", "Команды", "Проверки совместимости")),
|
||||||
MetadataTypeSpec("SCHEDULED_JOB", "Регламентное задание", "Регламентные задания", "scheduled-job", ("Расписание", "Параметры"), ("Метод",)),
|
MetadataTypeSpec("SCHEDULED_JOB", "Регламентное задание", "Регламентные задания", "scheduled-job", ("Расписание", "Параметры"), ("Метод",)),
|
||||||
|
MetadataTypeSpec("SEQUENCE", "Последовательность", "Последовательности", "sequence", ("Измерения", "Документы", "Границы")),
|
||||||
|
MetadataTypeSpec("DOCUMENT_NUMERATOR", "Нумератор документов", "Нумераторы документов", "numbering", ("Документы", "Периодичность", "Длина номера")),
|
||||||
MetadataTypeSpec("SESSION_PARAMETER", "Параметр сеанса", "Параметры сеанса", "parameter"),
|
MetadataTypeSpec("SESSION_PARAMETER", "Параметр сеанса", "Параметры сеанса", "parameter"),
|
||||||
MetadataTypeSpec("COMMON_ATTRIBUTE", "Общий реквизит", "Общие реквизиты", "attribute"),
|
MetadataTypeSpec("COMMON_ATTRIBUTE", "Общий реквизит", "Общие реквизиты", "attribute"),
|
||||||
MetadataTypeSpec("FILTER_CRITERION", "Критерий отбора", "Критерии отбора", "filter"),
|
MetadataTypeSpec("FILTER_CRITERION", "Критерий отбора", "Критерии отбора", "filter"),
|
||||||
@@ -217,6 +223,7 @@ METADATA_TYPE_SPECS: tuple[MetadataTypeSpec, ...] = (
|
|||||||
|
|
||||||
METADATA_TYPE_DESCRIPTIONS = {
|
METADATA_TYPE_DESCRIPTIONS = {
|
||||||
"COMMON": "Служебная ветка дерева конфигурации, объединяющая общие объекты метаданных.",
|
"COMMON": "Служебная ветка дерева конфигурации, объединяющая общие объекты метаданных.",
|
||||||
|
"SUBSYSTEM": "Подсистема группирует прикладные объекты и участвует в построении командного интерфейса.",
|
||||||
"COMMON_MODULE": "Общий модуль содержит процедуры и функции, доступные из разных областей выполнения конфигурации.",
|
"COMMON_MODULE": "Общий модуль содержит процедуры и функции, доступные из разных областей выполнения конфигурации.",
|
||||||
"CONSTANT": "Константа хранит единичное значение конфигурации и может иметь формы, команды, права и модуль менеджера.",
|
"CONSTANT": "Константа хранит единичное значение конфигурации и может иметь формы, команды, права и модуль менеджера.",
|
||||||
"CATALOG": "Справочник описывает прикладной список объектов с реквизитами, табличными частями, формами, командами, макетами, правами и предопределенными данными.",
|
"CATALOG": "Справочник описывает прикладной список объектов с реквизитами, табличными частями, формами, командами, макетами, правами и предопределенными данными.",
|
||||||
@@ -237,8 +244,11 @@ METADATA_TYPE_DESCRIPTIONS = {
|
|||||||
"EXTERNAL_DATA_SOURCE": "Внешний источник данных описывает подключение к внешним таблицам, кубам и функциям.",
|
"EXTERNAL_DATA_SOURCE": "Внешний источник данных описывает подключение к внешним таблицам, кубам и функциям.",
|
||||||
"EXCHANGE_PLAN": "План обмена описывает узлы и состав данных для распределенного обмена.",
|
"EXCHANGE_PLAN": "План обмена описывает узлы и состав данных для распределенного обмена.",
|
||||||
"EVENT_SUBSCRIPTION": "Подписка на событие связывает событие платформы или объекта с обработчиком.",
|
"EVENT_SUBSCRIPTION": "Подписка на событие связывает событие платформы или объекта с обработчиком.",
|
||||||
|
"ROLE": "Роль описывает набор прав доступа к объектам конфигурации и их данным.",
|
||||||
"EXTENSION": "Расширение конфигурации содержит добавленные и заимствованные объекты, а также проверки совместимости.",
|
"EXTENSION": "Расширение конфигурации содержит добавленные и заимствованные объекты, а также проверки совместимости.",
|
||||||
"SCHEDULED_JOB": "Регламентное задание описывает метод, параметры и расписание фонового выполнения.",
|
"SCHEDULED_JOB": "Регламентное задание описывает метод, параметры и расписание фонового выполнения.",
|
||||||
|
"SEQUENCE": "Последовательность управляет сквозной последовательностью проведения документов и границами восстановления.",
|
||||||
|
"DOCUMENT_NUMERATOR": "Нумератор документов задает общие правила нумерации для одного или нескольких видов документов.",
|
||||||
"SESSION_PARAMETER": "Параметр сеанса задает значение, доступное в течение пользовательского сеанса.",
|
"SESSION_PARAMETER": "Параметр сеанса задает значение, доступное в течение пользовательского сеанса.",
|
||||||
"COMMON_ATTRIBUTE": "Общий реквизит добавляет реквизит сразу к выбранному набору объектов конфигурации.",
|
"COMMON_ATTRIBUTE": "Общий реквизит добавляет реквизит сразу к выбранному набору объектов конфигурации.",
|
||||||
"FILTER_CRITERION": "Критерий отбора задает состав реквизитов для универсального отбора ссылочных данных.",
|
"FILTER_CRITERION": "Критерий отбора задает состав реквизитов для универсального отбора ссылочных данных.",
|
||||||
@@ -282,6 +292,7 @@ METADATA_TYPE_DOCUMENTATION_URLS.update(
|
|||||||
|
|
||||||
METADATA_TYPE_PROPERTIES: dict[str, tuple[str, ...]] = {
|
METADATA_TYPE_PROPERTIES: dict[str, tuple[str, ...]] = {
|
||||||
"COMMON": ("Состав общих объектов",),
|
"COMMON": ("Состав общих объектов",),
|
||||||
|
"SUBSYSTEM": STANDARD_PROPERTIES + ("Состав", "Включать в командный интерфейс", "Картинка", "Родитель"),
|
||||||
"COMMON_MODULE": STANDARD_PROPERTIES + ("Клиент", "Сервер", "Внешнее соединение", "Глобальный", "Вызов сервера", "Повторное использование возвращаемых значений"),
|
"COMMON_MODULE": STANDARD_PROPERTIES + ("Клиент", "Сервер", "Внешнее соединение", "Глобальный", "Вызов сервера", "Повторное использование возвращаемых значений"),
|
||||||
"CONSTANT": STANDARD_PROPERTIES + ("Тип значения", "Основная форма", "Форма выбора"),
|
"CONSTANT": STANDARD_PROPERTIES + ("Тип значения", "Основная форма", "Форма выбора"),
|
||||||
"CATALOG": REFERENCE_OBJECT_PROPERTIES,
|
"CATALOG": REFERENCE_OBJECT_PROPERTIES,
|
||||||
@@ -302,8 +313,11 @@ METADATA_TYPE_PROPERTIES: dict[str, tuple[str, ...]] = {
|
|||||||
"EXTERNAL_DATA_SOURCE": STANDARD_PROPERTIES + ("Соединение", "Таблицы", "Кубы", "Функции"),
|
"EXTERNAL_DATA_SOURCE": STANDARD_PROPERTIES + ("Соединение", "Таблицы", "Кубы", "Функции"),
|
||||||
"EXCHANGE_PLAN": DATA_OBJECT_PROPERTIES + ("Состав обмена", "Распределенная ИБ", "Авторегистрация изменений"),
|
"EXCHANGE_PLAN": DATA_OBJECT_PROPERTIES + ("Состав обмена", "Распределенная ИБ", "Авторегистрация изменений"),
|
||||||
"EVENT_SUBSCRIPTION": STANDARD_PROPERTIES + ("Источник", "Событие", "Обработчик", "Перед/после события"),
|
"EVENT_SUBSCRIPTION": STANDARD_PROPERTIES + ("Источник", "Событие", "Обработчик", "Перед/после события"),
|
||||||
|
"ROLE": STANDARD_PROPERTIES + ("Права", "RLS", "Ограничения доступа"),
|
||||||
"EXTENSION": ("Имя", "Назначение", "Версия", "Режим совместимости", "Заимствованные объекты", "Проверки совместимости"),
|
"EXTENSION": ("Имя", "Назначение", "Версия", "Режим совместимости", "Заимствованные объекты", "Проверки совместимости"),
|
||||||
"SCHEDULED_JOB": STANDARD_PROPERTIES + ("Метод", "Расписание", "Использование", "Параметры", "Предопределенное"),
|
"SCHEDULED_JOB": STANDARD_PROPERTIES + ("Метод", "Расписание", "Использование", "Параметры", "Предопределенное"),
|
||||||
|
"SEQUENCE": STANDARD_PROPERTIES + ("Документы", "Измерения", "Периодичность", "Заполнение", "Граница"),
|
||||||
|
"DOCUMENT_NUMERATOR": STANDARD_PROPERTIES + ("Длина номера", "Тип номера", "Периодичность", "Документы"),
|
||||||
"SESSION_PARAMETER": STANDARD_PROPERTIES + ("Тип значения",),
|
"SESSION_PARAMETER": STANDARD_PROPERTIES + ("Тип значения",),
|
||||||
"COMMON_ATTRIBUTE": STANDARD_PROPERTIES + ("Тип значения", "Состав", "Разделение данных", "Автоиспользование"),
|
"COMMON_ATTRIBUTE": STANDARD_PROPERTIES + ("Тип значения", "Состав", "Разделение данных", "Автоиспользование"),
|
||||||
"FILTER_CRITERION": 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"] == "Используется в подборе товаров"
|
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):
|
def test_normalize_edt_project_preserves_localized_descriptions(tmp_path: Path):
|
||||||
catalog = tmp_path / "Контрагенты.mdo"
|
catalog = tmp_path / "Контрагенты.mdo"
|
||||||
catalog.write_text(
|
catalog.write_text(
|
||||||
|
|||||||
@@ -78,6 +78,37 @@ _METADATA_OWNER_KINDS = {
|
|||||||
NodeKind.SCHEDULED_JOB,
|
NodeKind.SCHEDULED_JOB,
|
||||||
NodeKind.BUSINESS_PROCESS,
|
NodeKind.BUSINESS_PROCESS,
|
||||||
NodeKind.TASK,
|
NodeKind.TASK,
|
||||||
|
NodeKind.SUBSYSTEM,
|
||||||
|
NodeKind.SEQUENCE,
|
||||||
|
NodeKind.DOCUMENT_NUMERATOR,
|
||||||
|
NodeKind.EVENT_SUBSCRIPTION,
|
||||||
|
NodeKind.SESSION_PARAMETER,
|
||||||
|
NodeKind.COMMON_ATTRIBUTE,
|
||||||
|
NodeKind.FILTER_CRITERION,
|
||||||
|
NodeKind.FUNCTIONAL_OPTION,
|
||||||
|
NodeKind.FUNCTIONAL_OPTION_PARAMETER,
|
||||||
|
NodeKind.DEFINED_TYPE,
|
||||||
|
NodeKind.SETTINGS_STORAGE,
|
||||||
|
NodeKind.COMMON_COMMAND,
|
||||||
|
NodeKind.COMMAND_GROUP,
|
||||||
|
NodeKind.COMMON_FORM,
|
||||||
|
NodeKind.COMMON_LAYOUT,
|
||||||
|
NodeKind.COMMON_PICTURE,
|
||||||
|
NodeKind.WEB_SERVICE,
|
||||||
|
NodeKind.HTTP_SERVICE,
|
||||||
|
NodeKind.WS_REFERENCE,
|
||||||
|
NodeKind.WEBSOCKET_CLIENT,
|
||||||
|
NodeKind.INTEGRATION_SERVICE,
|
||||||
|
NodeKind.BOT,
|
||||||
|
NodeKind.INTERFACE,
|
||||||
|
NodeKind.FULL_TEXT_SEARCH_DICTIONARY,
|
||||||
|
NodeKind.PALETTE_COLOR,
|
||||||
|
NodeKind.STYLE_ITEM,
|
||||||
|
NodeKind.STYLE,
|
||||||
|
NodeKind.LANGUAGE,
|
||||||
|
NodeKind.XDTO_PACKAGE,
|
||||||
|
NodeKind.EXTENSION,
|
||||||
|
NodeKind.ROLE,
|
||||||
}
|
}
|
||||||
_PATH_METADATA_ALIASES = {
|
_PATH_METADATA_ALIASES = {
|
||||||
"catalogs": ("Справочник", NodeKind.CATALOG),
|
"catalogs": ("Справочник", NodeKind.CATALOG),
|
||||||
@@ -120,6 +151,69 @@ _PATH_METADATA_ALIASES = {
|
|||||||
"бизнеспроцессы": ("БизнесПроцесс", NodeKind.BUSINESS_PROCESS),
|
"бизнеспроцессы": ("БизнесПроцесс", NodeKind.BUSINESS_PROCESS),
|
||||||
"tasks": ("Задача", NodeKind.TASK),
|
"tasks": ("Задача", NodeKind.TASK),
|
||||||
"задачи": ("Задача", NodeKind.TASK),
|
"задачи": ("Задача", NodeKind.TASK),
|
||||||
|
"subsystems": ("Подсистема", NodeKind.SUBSYSTEM),
|
||||||
|
"подсистемы": ("Подсистема", NodeKind.SUBSYSTEM),
|
||||||
|
"roles": ("Роль", NodeKind.ROLE),
|
||||||
|
"роли": ("Роль", NodeKind.ROLE),
|
||||||
|
"sequences": ("Последовательность", NodeKind.SEQUENCE),
|
||||||
|
"последовательности": ("Последовательность", NodeKind.SEQUENCE),
|
||||||
|
"documentnumerators": ("НумераторДокументов", NodeKind.DOCUMENT_NUMERATOR),
|
||||||
|
"нумераторыдокументов": ("НумераторДокументов", NodeKind.DOCUMENT_NUMERATOR),
|
||||||
|
"eventsubscriptions": ("ПодпискаНаСобытие", NodeKind.EVENT_SUBSCRIPTION),
|
||||||
|
"подпискинасобытия": ("ПодпискаНаСобытие", NodeKind.EVENT_SUBSCRIPTION),
|
||||||
|
"sessionparameters": ("ПараметрСеанса", NodeKind.SESSION_PARAMETER),
|
||||||
|
"параметрысеанса": ("ПараметрСеанса", NodeKind.SESSION_PARAMETER),
|
||||||
|
"commonattributes": ("ОбщийРеквизит", NodeKind.COMMON_ATTRIBUTE),
|
||||||
|
"общиереквизиты": ("ОбщийРеквизит", NodeKind.COMMON_ATTRIBUTE),
|
||||||
|
"filtercriteria": ("КритерийОтбора", NodeKind.FILTER_CRITERION),
|
||||||
|
"критерииотбора": ("КритерийОтбора", NodeKind.FILTER_CRITERION),
|
||||||
|
"functionaloptions": ("ФункциональнаяОпция", NodeKind.FUNCTIONAL_OPTION),
|
||||||
|
"функциональныеопции": ("ФункциональнаяОпция", NodeKind.FUNCTIONAL_OPTION),
|
||||||
|
"functionaloptionsparameters": ("ПараметрФункциональнойОпции", NodeKind.FUNCTIONAL_OPTION_PARAMETER),
|
||||||
|
"параметрыфункциональныхопций": ("ПараметрФункциональнойОпции", NodeKind.FUNCTIONAL_OPTION_PARAMETER),
|
||||||
|
"definedtypes": ("ОпределяемыйТип", NodeKind.DEFINED_TYPE),
|
||||||
|
"определяемыетипы": ("ОпределяемыйТип", NodeKind.DEFINED_TYPE),
|
||||||
|
"settingsstorages": ("ХранилищеНастроек", NodeKind.SETTINGS_STORAGE),
|
||||||
|
"хранилищанастроек": ("ХранилищеНастроек", NodeKind.SETTINGS_STORAGE),
|
||||||
|
"commoncommands": ("ОбщаяКоманда", NodeKind.COMMON_COMMAND),
|
||||||
|
"общиекоманды": ("ОбщаяКоманда", NodeKind.COMMON_COMMAND),
|
||||||
|
"commandgroups": ("ГруппаКоманд", NodeKind.COMMAND_GROUP),
|
||||||
|
"группыкоманд": ("ГруппаКоманд", NodeKind.COMMAND_GROUP),
|
||||||
|
"commonforms": ("ОбщаяФорма", NodeKind.COMMON_FORM),
|
||||||
|
"общиеформы": ("ОбщаяФорма", NodeKind.COMMON_FORM),
|
||||||
|
"commontemplates": ("ОбщийМакет", NodeKind.COMMON_LAYOUT),
|
||||||
|
"commonlayouts": ("ОбщийМакет", NodeKind.COMMON_LAYOUT),
|
||||||
|
"общиемакеты": ("ОбщийМакет", NodeKind.COMMON_LAYOUT),
|
||||||
|
"commonpictures": ("ОбщаяКартинка", NodeKind.COMMON_PICTURE),
|
||||||
|
"общиекартинки": ("ОбщаяКартинка", NodeKind.COMMON_PICTURE),
|
||||||
|
"xdtopackages": ("XDTO", NodeKind.XDTO_PACKAGE),
|
||||||
|
"xdtoпакеты": ("XDTO", NodeKind.XDTO_PACKAGE),
|
||||||
|
"webservices": ("WebСервис", NodeKind.WEB_SERVICE),
|
||||||
|
"webсервисы": ("WebСервис", NodeKind.WEB_SERVICE),
|
||||||
|
"httpservices": ("HTTPСервис", NodeKind.HTTP_SERVICE),
|
||||||
|
"httpсервисы": ("HTTPСервис", NodeKind.HTTP_SERVICE),
|
||||||
|
"wsreferences": ("WSСсылка", NodeKind.WS_REFERENCE),
|
||||||
|
"wsссылки": ("WSСсылка", NodeKind.WS_REFERENCE),
|
||||||
|
"websocketclients": ("WebSocketКлиент", NodeKind.WEBSOCKET_CLIENT),
|
||||||
|
"websocketклиенты": ("WebSocketКлиент", NodeKind.WEBSOCKET_CLIENT),
|
||||||
|
"integrationservices": ("СервисИнтеграции", NodeKind.INTEGRATION_SERVICE),
|
||||||
|
"сервисыинтеграции": ("СервисИнтеграции", NodeKind.INTEGRATION_SERVICE),
|
||||||
|
"bots": ("Бот", NodeKind.BOT),
|
||||||
|
"боты": ("Бот", NodeKind.BOT),
|
||||||
|
"interfaces": ("Интерфейс", NodeKind.INTERFACE),
|
||||||
|
"интерфейсы": ("Интерфейс", NodeKind.INTERFACE),
|
||||||
|
"fulltextsearchdictionaries": ("СловарьПолнотекстовогоПоиска", NodeKind.FULL_TEXT_SEARCH_DICTIONARY),
|
||||||
|
"словариполнотекстовогопоиска": ("СловарьПолнотекстовогоПоиска", NodeKind.FULL_TEXT_SEARCH_DICTIONARY),
|
||||||
|
"palettecolors": ("ЦветПалитры", NodeKind.PALETTE_COLOR),
|
||||||
|
"цветапалитры": ("ЦветПалитры", NodeKind.PALETTE_COLOR),
|
||||||
|
"styleitems": ("ЭлементСтиля", NodeKind.STYLE_ITEM),
|
||||||
|
"элементыстиля": ("ЭлементСтиля", NodeKind.STYLE_ITEM),
|
||||||
|
"styles": ("Стиль", NodeKind.STYLE),
|
||||||
|
"стили": ("Стиль", NodeKind.STYLE),
|
||||||
|
"languages": ("Язык", NodeKind.LANGUAGE),
|
||||||
|
"языки": ("Язык", NodeKind.LANGUAGE),
|
||||||
|
"extensions": ("Расширение", NodeKind.EXTENSION),
|
||||||
|
"расширения": ("Расширение", NodeKind.EXTENSION),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -348,6 +442,36 @@ def index_project(path: str | Path, *, project_id: str | None = None, structure_
|
|||||||
NodeKind.SCHEDULED_JOB,
|
NodeKind.SCHEDULED_JOB,
|
||||||
NodeKind.BUSINESS_PROCESS,
|
NodeKind.BUSINESS_PROCESS,
|
||||||
NodeKind.TASK,
|
NodeKind.TASK,
|
||||||
|
NodeKind.SUBSYSTEM,
|
||||||
|
NodeKind.SEQUENCE,
|
||||||
|
NodeKind.DOCUMENT_NUMERATOR,
|
||||||
|
NodeKind.EVENT_SUBSCRIPTION,
|
||||||
|
NodeKind.SESSION_PARAMETER,
|
||||||
|
NodeKind.COMMON_ATTRIBUTE,
|
||||||
|
NodeKind.FILTER_CRITERION,
|
||||||
|
NodeKind.FUNCTIONAL_OPTION,
|
||||||
|
NodeKind.FUNCTIONAL_OPTION_PARAMETER,
|
||||||
|
NodeKind.DEFINED_TYPE,
|
||||||
|
NodeKind.SETTINGS_STORAGE,
|
||||||
|
NodeKind.COMMON_COMMAND,
|
||||||
|
NodeKind.COMMAND_GROUP,
|
||||||
|
NodeKind.COMMON_FORM,
|
||||||
|
NodeKind.COMMON_LAYOUT,
|
||||||
|
NodeKind.COMMON_PICTURE,
|
||||||
|
NodeKind.WEB_SERVICE,
|
||||||
|
NodeKind.HTTP_SERVICE,
|
||||||
|
NodeKind.WS_REFERENCE,
|
||||||
|
NodeKind.WEBSOCKET_CLIENT,
|
||||||
|
NodeKind.INTEGRATION_SERVICE,
|
||||||
|
NodeKind.BOT,
|
||||||
|
NodeKind.INTERFACE,
|
||||||
|
NodeKind.FULL_TEXT_SEARCH_DICTIONARY,
|
||||||
|
NodeKind.PALETTE_COLOR,
|
||||||
|
NodeKind.STYLE_ITEM,
|
||||||
|
NodeKind.STYLE,
|
||||||
|
NodeKind.LANGUAGE,
|
||||||
|
NodeKind.XDTO_PACKAGE,
|
||||||
|
NodeKind.EXTENSION,
|
||||||
NodeKind.ROLE,
|
NodeKind.ROLE,
|
||||||
NodeKind.FORM,
|
NodeKind.FORM,
|
||||||
NodeKind.TABULAR_SECTION,
|
NodeKind.TABULAR_SECTION,
|
||||||
@@ -958,7 +1082,33 @@ def _xml_node_kind(object_kind: str) -> NodeKind | None:
|
|||||||
"BUSINESS_PROCESS": NodeKind.BUSINESS_PROCESS,
|
"BUSINESS_PROCESS": NodeKind.BUSINESS_PROCESS,
|
||||||
"TASK": NodeKind.TASK,
|
"TASK": NodeKind.TASK,
|
||||||
"SUBSYSTEM": NodeKind.SUBSYSTEM,
|
"SUBSYSTEM": NodeKind.SUBSYSTEM,
|
||||||
|
"SEQUENCE": NodeKind.SEQUENCE,
|
||||||
|
"DOCUMENT_NUMERATOR": NodeKind.DOCUMENT_NUMERATOR,
|
||||||
|
"EVENT_SUBSCRIPTION": NodeKind.EVENT_SUBSCRIPTION,
|
||||||
|
"SESSION_PARAMETER": NodeKind.SESSION_PARAMETER,
|
||||||
|
"COMMON_ATTRIBUTE": NodeKind.COMMON_ATTRIBUTE,
|
||||||
|
"FILTER_CRITERION": NodeKind.FILTER_CRITERION,
|
||||||
|
"FUNCTIONAL_OPTION": NodeKind.FUNCTIONAL_OPTION,
|
||||||
|
"FUNCTIONAL_OPTION_PARAMETER": NodeKind.FUNCTIONAL_OPTION_PARAMETER,
|
||||||
|
"DEFINED_TYPE": NodeKind.DEFINED_TYPE,
|
||||||
|
"SETTINGS_STORAGE": NodeKind.SETTINGS_STORAGE,
|
||||||
|
"COMMON_COMMAND": NodeKind.COMMON_COMMAND,
|
||||||
|
"COMMAND_GROUP": NodeKind.COMMAND_GROUP,
|
||||||
|
"COMMON_FORM": NodeKind.COMMON_FORM,
|
||||||
|
"COMMON_LAYOUT": NodeKind.COMMON_LAYOUT,
|
||||||
|
"COMMON_PICTURE": NodeKind.COMMON_PICTURE,
|
||||||
|
"WEB_SERVICE": NodeKind.WEB_SERVICE,
|
||||||
"HTTP_SERVICE": NodeKind.HTTP_SERVICE,
|
"HTTP_SERVICE": NodeKind.HTTP_SERVICE,
|
||||||
|
"WS_REFERENCE": NodeKind.WS_REFERENCE,
|
||||||
|
"WEBSOCKET_CLIENT": NodeKind.WEBSOCKET_CLIENT,
|
||||||
|
"INTEGRATION_SERVICE": NodeKind.INTEGRATION_SERVICE,
|
||||||
|
"BOT": NodeKind.BOT,
|
||||||
|
"INTERFACE": NodeKind.INTERFACE,
|
||||||
|
"FULL_TEXT_SEARCH_DICTIONARY": NodeKind.FULL_TEXT_SEARCH_DICTIONARY,
|
||||||
|
"PALETTE_COLOR": NodeKind.PALETTE_COLOR,
|
||||||
|
"STYLE_ITEM": NodeKind.STYLE_ITEM,
|
||||||
|
"STYLE": NodeKind.STYLE,
|
||||||
|
"LANGUAGE": NodeKind.LANGUAGE,
|
||||||
"XDTO_PACKAGE": NodeKind.XDTO_PACKAGE,
|
"XDTO_PACKAGE": NodeKind.XDTO_PACKAGE,
|
||||||
"EXTENSION": NodeKind.EXTENSION,
|
"EXTENSION": NodeKind.EXTENSION,
|
||||||
"LAYOUT": NodeKind.LAYOUT,
|
"LAYOUT": NodeKind.LAYOUT,
|
||||||
|
|||||||
@@ -70,6 +70,43 @@ def test_index_project_extracts_1c_metadata_objects(tmp_path: Path):
|
|||||||
assert any(edge.kind == EdgeKind.HAS_COMMAND for edge in snapshot.edges)
|
assert any(edge.kind == EdgeKind.HAS_COMMAND for edge in snapshot.edges)
|
||||||
|
|
||||||
|
|
||||||
|
def test_index_project_keeps_extended_1c_metadata_objects(tmp_path: Path):
|
||||||
|
xml = tmp_path / "metadata.xml"
|
||||||
|
xml.write_text(
|
||||||
|
"""
|
||||||
|
<Configuration>
|
||||||
|
<Subsystem name="Продажи" qualifiedName="Подсистема.Продажи" />
|
||||||
|
<Role name="Менеджер" qualifiedName="Роль.Менеджер" />
|
||||||
|
<Sequence name="ПроведениеДокументов" qualifiedName="Последовательность.ПроведениеДокументов" />
|
||||||
|
<DocumentNumerator name="ОбщийНумератор" qualifiedName="НумераторДокументов.ОбщийНумератор" />
|
||||||
|
<CommonForm name="ФормаПодбора" qualifiedName="ОбщаяФорма.ФормаПодбора" />
|
||||||
|
<FunctionalOption name="ДоступностьСкидок" qualifiedName="ФункциональнаяОпция.ДоступностьСкидок" />
|
||||||
|
<WebService name="Обмен" qualifiedName="WebСервис.Обмен" />
|
||||||
|
<WSReference name="ВнешнийСервис" qualifiedName="WSСсылка.ВнешнийСервис" />
|
||||||
|
<WebSocketClient name="Чат" qualifiedName="WebSocketКлиент.Чат" />
|
||||||
|
<IntegrationService name="Интеграция" qualifiedName="СервисИнтеграции.Интеграция" />
|
||||||
|
</Configuration>
|
||||||
|
""",
|
||||||
|
encoding="utf-8",
|
||||||
|
)
|
||||||
|
|
||||||
|
snapshot = index_project(tmp_path, project_id="extended-metadata")
|
||||||
|
by_kind = {node.kind for node in snapshot.nodes}
|
||||||
|
|
||||||
|
assert {
|
||||||
|
NodeKind.SUBSYSTEM,
|
||||||
|
NodeKind.ROLE,
|
||||||
|
NodeKind.SEQUENCE,
|
||||||
|
NodeKind.DOCUMENT_NUMERATOR,
|
||||||
|
NodeKind.COMMON_FORM,
|
||||||
|
NodeKind.FUNCTIONAL_OPTION,
|
||||||
|
NodeKind.WEB_SERVICE,
|
||||||
|
NodeKind.WS_REFERENCE,
|
||||||
|
NodeKind.WEBSOCKET_CLIENT,
|
||||||
|
NodeKind.INTEGRATION_SERVICE,
|
||||||
|
}.issubset(by_kind)
|
||||||
|
|
||||||
|
|
||||||
def test_index_project_remaps_edges_from_duplicate_metadata_nodes(tmp_path: Path):
|
def test_index_project_remaps_edges_from_duplicate_metadata_nodes(tmp_path: Path):
|
||||||
first = tmp_path / "first.xml"
|
first = tmp_path / "first.xml"
|
||||||
first.write_text(
|
first.write_text(
|
||||||
|
|||||||
@@ -26,6 +26,32 @@ class NodeKind(str, Enum):
|
|||||||
BUSINESS_PROCESS = "BUSINESS_PROCESS"
|
BUSINESS_PROCESS = "BUSINESS_PROCESS"
|
||||||
TASK = "TASK"
|
TASK = "TASK"
|
||||||
SUBSYSTEM = "SUBSYSTEM"
|
SUBSYSTEM = "SUBSYSTEM"
|
||||||
|
SEQUENCE = "SEQUENCE"
|
||||||
|
DOCUMENT_NUMERATOR = "DOCUMENT_NUMERATOR"
|
||||||
|
EVENT_SUBSCRIPTION = "EVENT_SUBSCRIPTION"
|
||||||
|
SESSION_PARAMETER = "SESSION_PARAMETER"
|
||||||
|
COMMON_ATTRIBUTE = "COMMON_ATTRIBUTE"
|
||||||
|
FILTER_CRITERION = "FILTER_CRITERION"
|
||||||
|
FUNCTIONAL_OPTION = "FUNCTIONAL_OPTION"
|
||||||
|
FUNCTIONAL_OPTION_PARAMETER = "FUNCTIONAL_OPTION_PARAMETER"
|
||||||
|
DEFINED_TYPE = "DEFINED_TYPE"
|
||||||
|
SETTINGS_STORAGE = "SETTINGS_STORAGE"
|
||||||
|
COMMON_COMMAND = "COMMON_COMMAND"
|
||||||
|
COMMAND_GROUP = "COMMAND_GROUP"
|
||||||
|
COMMON_FORM = "COMMON_FORM"
|
||||||
|
COMMON_LAYOUT = "COMMON_LAYOUT"
|
||||||
|
COMMON_PICTURE = "COMMON_PICTURE"
|
||||||
|
WEB_SERVICE = "WEB_SERVICE"
|
||||||
|
WS_REFERENCE = "WS_REFERENCE"
|
||||||
|
WEBSOCKET_CLIENT = "WEBSOCKET_CLIENT"
|
||||||
|
INTEGRATION_SERVICE = "INTEGRATION_SERVICE"
|
||||||
|
BOT = "BOT"
|
||||||
|
INTERFACE = "INTERFACE"
|
||||||
|
FULL_TEXT_SEARCH_DICTIONARY = "FULL_TEXT_SEARCH_DICTIONARY"
|
||||||
|
PALETTE_COLOR = "PALETTE_COLOR"
|
||||||
|
STYLE_ITEM = "STYLE_ITEM"
|
||||||
|
STYLE = "STYLE"
|
||||||
|
LANGUAGE = "LANGUAGE"
|
||||||
HTTP_SERVICE = "HTTP_SERVICE"
|
HTTP_SERVICE = "HTTP_SERVICE"
|
||||||
XDTO_PACKAGE = "XDTO_PACKAGE"
|
XDTO_PACKAGE = "XDTO_PACKAGE"
|
||||||
EXTENSION = "EXTENSION"
|
EXTENSION = "EXTENSION"
|
||||||
|
|||||||
@@ -287,6 +287,37 @@ _ACCESS_TARGET_KINDS = {
|
|||||||
NodeKind.SCHEDULED_JOB,
|
NodeKind.SCHEDULED_JOB,
|
||||||
NodeKind.BUSINESS_PROCESS,
|
NodeKind.BUSINESS_PROCESS,
|
||||||
NodeKind.TASK,
|
NodeKind.TASK,
|
||||||
|
NodeKind.SUBSYSTEM,
|
||||||
|
NodeKind.SEQUENCE,
|
||||||
|
NodeKind.DOCUMENT_NUMERATOR,
|
||||||
|
NodeKind.EVENT_SUBSCRIPTION,
|
||||||
|
NodeKind.SESSION_PARAMETER,
|
||||||
|
NodeKind.COMMON_ATTRIBUTE,
|
||||||
|
NodeKind.FILTER_CRITERION,
|
||||||
|
NodeKind.FUNCTIONAL_OPTION,
|
||||||
|
NodeKind.FUNCTIONAL_OPTION_PARAMETER,
|
||||||
|
NodeKind.DEFINED_TYPE,
|
||||||
|
NodeKind.SETTINGS_STORAGE,
|
||||||
|
NodeKind.COMMON_COMMAND,
|
||||||
|
NodeKind.COMMAND_GROUP,
|
||||||
|
NodeKind.COMMON_FORM,
|
||||||
|
NodeKind.COMMON_LAYOUT,
|
||||||
|
NodeKind.COMMON_PICTURE,
|
||||||
|
NodeKind.WEB_SERVICE,
|
||||||
|
NodeKind.HTTP_SERVICE,
|
||||||
|
NodeKind.WS_REFERENCE,
|
||||||
|
NodeKind.WEBSOCKET_CLIENT,
|
||||||
|
NodeKind.INTEGRATION_SERVICE,
|
||||||
|
NodeKind.BOT,
|
||||||
|
NodeKind.INTERFACE,
|
||||||
|
NodeKind.FULL_TEXT_SEARCH_DICTIONARY,
|
||||||
|
NodeKind.PALETTE_COLOR,
|
||||||
|
NodeKind.STYLE_ITEM,
|
||||||
|
NodeKind.STYLE,
|
||||||
|
NodeKind.LANGUAGE,
|
||||||
|
NodeKind.XDTO_PACKAGE,
|
||||||
|
NodeKind.EXTENSION,
|
||||||
|
NodeKind.ROLE,
|
||||||
}
|
}
|
||||||
if _EVENT_SUBSCRIPTION_KIND is not None:
|
if _EVENT_SUBSCRIPTION_KIND is not None:
|
||||||
_ACCESS_TARGET_KINDS.add(_EVENT_SUBSCRIPTION_KIND)
|
_ACCESS_TARGET_KINDS.add(_EVENT_SUBSCRIPTION_KIND)
|
||||||
@@ -299,6 +330,18 @@ _OWNERSHIP_TARGET_KINDS = {
|
|||||||
NodeKind.SCHEDULED_JOB,
|
NodeKind.SCHEDULED_JOB,
|
||||||
NodeKind.BUSINESS_PROCESS,
|
NodeKind.BUSINESS_PROCESS,
|
||||||
NodeKind.TASK,
|
NodeKind.TASK,
|
||||||
|
NodeKind.SUBSYSTEM,
|
||||||
|
NodeKind.SEQUENCE,
|
||||||
|
NodeKind.DOCUMENT_NUMERATOR,
|
||||||
|
NodeKind.COMMON_FORM,
|
||||||
|
NodeKind.COMMON_COMMAND,
|
||||||
|
NodeKind.HTTP_SERVICE,
|
||||||
|
NodeKind.WEB_SERVICE,
|
||||||
|
NodeKind.WS_REFERENCE,
|
||||||
|
NodeKind.WEBSOCKET_CLIENT,
|
||||||
|
NodeKind.INTEGRATION_SERVICE,
|
||||||
|
NodeKind.BOT,
|
||||||
|
NodeKind.ROLE,
|
||||||
}
|
}
|
||||||
if _EVENT_SUBSCRIPTION_KIND is not None:
|
if _EVENT_SUBSCRIPTION_KIND is not None:
|
||||||
_OWNERSHIP_TARGET_KINDS.add(_EVENT_SUBSCRIPTION_KIND)
|
_OWNERSHIP_TARGET_KINDS.add(_EVENT_SUBSCRIPTION_KIND)
|
||||||
@@ -3905,6 +3948,43 @@ _FLOWCHART_KIND_LABELS = {
|
|||||||
NodeKind.REGISTER: "Регистры",
|
NodeKind.REGISTER: "Регистры",
|
||||||
NodeKind.REPORT: "Отчеты",
|
NodeKind.REPORT: "Отчеты",
|
||||||
NodeKind.DATA_PROCESSOR: "Обработки",
|
NodeKind.DATA_PROCESSOR: "Обработки",
|
||||||
|
NodeKind.CONSTANT: "Константы",
|
||||||
|
NodeKind.DOCUMENT_JOURNAL: "Журналы документов",
|
||||||
|
NodeKind.ENUM: "Перечисления",
|
||||||
|
NodeKind.CHART_OF_CHARACTERISTIC_TYPES: "Планы видов характеристик",
|
||||||
|
NodeKind.CHART_OF_ACCOUNTS: "Планы счетов",
|
||||||
|
NodeKind.CHART_OF_CALCULATION_TYPES: "Планы видов расчета",
|
||||||
|
NodeKind.EXCHANGE_PLAN: "Планы обмена",
|
||||||
|
NodeKind.EXTERNAL_DATA_SOURCE: "Внешние источники данных",
|
||||||
|
NodeKind.BUSINESS_PROCESS: "Бизнес-процессы",
|
||||||
|
NodeKind.TASK: "Задачи",
|
||||||
|
NodeKind.SUBSYSTEM: "Подсистемы",
|
||||||
|
NodeKind.SEQUENCE: "Последовательности",
|
||||||
|
NodeKind.DOCUMENT_NUMERATOR: "Нумераторы документов",
|
||||||
|
NodeKind.EVENT_SUBSCRIPTION: "Подписки на события",
|
||||||
|
NodeKind.SESSION_PARAMETER: "Параметры сеанса",
|
||||||
|
NodeKind.COMMON_ATTRIBUTE: "Общие реквизиты",
|
||||||
|
NodeKind.FILTER_CRITERION: "Критерии отбора",
|
||||||
|
NodeKind.FUNCTIONAL_OPTION: "Функциональные опции",
|
||||||
|
NodeKind.FUNCTIONAL_OPTION_PARAMETER: "Параметры функциональных опций",
|
||||||
|
NodeKind.DEFINED_TYPE: "Определяемые типы",
|
||||||
|
NodeKind.SETTINGS_STORAGE: "Хранилища настроек",
|
||||||
|
NodeKind.COMMON_COMMAND: "Общие команды",
|
||||||
|
NodeKind.COMMAND_GROUP: "Группы команд",
|
||||||
|
NodeKind.COMMON_FORM: "Общие формы",
|
||||||
|
NodeKind.COMMON_LAYOUT: "Общие макеты",
|
||||||
|
NodeKind.COMMON_PICTURE: "Общие картинки",
|
||||||
|
NodeKind.WEB_SERVICE: "Web-сервисы",
|
||||||
|
NodeKind.WS_REFERENCE: "WS-ссылки",
|
||||||
|
NodeKind.WEBSOCKET_CLIENT: "WebSocket-клиенты",
|
||||||
|
NodeKind.INTEGRATION_SERVICE: "Сервисы интеграции",
|
||||||
|
NodeKind.BOT: "Боты",
|
||||||
|
NodeKind.INTERFACE: "Интерфейсы",
|
||||||
|
NodeKind.FULL_TEXT_SEARCH_DICTIONARY: "Словари полнотекстового поиска",
|
||||||
|
NodeKind.PALETTE_COLOR: "Цвета палитры",
|
||||||
|
NodeKind.STYLE_ITEM: "Элементы стиля",
|
||||||
|
NodeKind.STYLE: "Стили",
|
||||||
|
NodeKind.LANGUAGE: "Языки",
|
||||||
NodeKind.HTTP_SERVICE: "HTTP-сервисы",
|
NodeKind.HTTP_SERVICE: "HTTP-сервисы",
|
||||||
NodeKind.INTEGRATION_ENDPOINT: "Интеграции",
|
NodeKind.INTEGRATION_ENDPOINT: "Интеграции",
|
||||||
NodeKind.SCHEDULED_JOB: "Регламентные задания",
|
NodeKind.SCHEDULED_JOB: "Регламентные задания",
|
||||||
|
|||||||
@@ -19,6 +19,10 @@ _EVENT_SUBSCRIPTION_KIND = getattr(NodeKind, "EVENT_SUBSCRIPTION", None)
|
|||||||
_METADATA_ICON_BY_NODE_KIND = {
|
_METADATA_ICON_BY_NODE_KIND = {
|
||||||
NodeKind.EXCHANGE_PLAN: "exchange-plan",
|
NodeKind.EXCHANGE_PLAN: "exchange-plan",
|
||||||
NodeKind.SCHEDULED_JOB: "scheduled-job",
|
NodeKind.SCHEDULED_JOB: "scheduled-job",
|
||||||
|
NodeKind.SUBSYSTEM: "subsystem",
|
||||||
|
NodeKind.SEQUENCE: "sequence",
|
||||||
|
NodeKind.DOCUMENT_NUMERATOR: "numbering",
|
||||||
|
NodeKind.EVENT_SUBSCRIPTION: "event",
|
||||||
NodeKind.ATTRIBUTE: "attribute",
|
NodeKind.ATTRIBUTE: "attribute",
|
||||||
NodeKind.COMMAND: "command",
|
NodeKind.COMMAND: "command",
|
||||||
NodeKind.FORM: "form",
|
NodeKind.FORM: "form",
|
||||||
@@ -52,6 +56,36 @@ _METADATA_SPEC_PREFIXES = {
|
|||||||
"EXCHANGE_PLAN": "ПланОбмена.",
|
"EXCHANGE_PLAN": "ПланОбмена.",
|
||||||
"EVENT_SUBSCRIPTION": "ПодпискаНаСобытие.",
|
"EVENT_SUBSCRIPTION": "ПодпискаНаСобытие.",
|
||||||
"SCHEDULED_JOB": "РегламентноеЗадание.",
|
"SCHEDULED_JOB": "РегламентноеЗадание.",
|
||||||
|
"SUBSYSTEM": "Подсистема.",
|
||||||
|
"ROLE": "Роль.",
|
||||||
|
"SEQUENCE": "Последовательность.",
|
||||||
|
"DOCUMENT_NUMERATOR": "НумераторДокументов.",
|
||||||
|
"EXTENSION": "Расширение.",
|
||||||
|
"SESSION_PARAMETER": "ПараметрСеанса.",
|
||||||
|
"COMMON_ATTRIBUTE": "ОбщийРеквизит.",
|
||||||
|
"FILTER_CRITERION": "КритерийОтбора.",
|
||||||
|
"FUNCTIONAL_OPTION": "ФункциональнаяОпция.",
|
||||||
|
"FUNCTIONAL_OPTION_PARAMETER": "ПараметрФункциональнойОпции.",
|
||||||
|
"DEFINED_TYPE": "ОпределяемыйТип.",
|
||||||
|
"SETTINGS_STORAGE": "ХранилищеНастроек.",
|
||||||
|
"COMMON_COMMAND": "ОбщаяКоманда.",
|
||||||
|
"COMMAND_GROUP": "ГруппаКоманд.",
|
||||||
|
"COMMON_FORM": "ОбщаяФорма.",
|
||||||
|
"COMMON_LAYOUT": "ОбщийМакет.",
|
||||||
|
"COMMON_PICTURE": "ОбщаяКартинка.",
|
||||||
|
"XDTO_PACKAGE": "XDTO.",
|
||||||
|
"WEB_SERVICE": "WebСервис.",
|
||||||
|
"HTTP_SERVICE": "HTTPСервис.",
|
||||||
|
"WS_REFERENCE": "WSСсылка.",
|
||||||
|
"WEBSOCKET_CLIENT": "WebSocketКлиент.",
|
||||||
|
"INTEGRATION_SERVICE": "СервисИнтеграции.",
|
||||||
|
"BOT": "Бот.",
|
||||||
|
"INTERFACE": "Интерфейс.",
|
||||||
|
"FULL_TEXT_SEARCH_DICTIONARY": "СловарьПолнотекстовогоПоиска.",
|
||||||
|
"PALETTE_COLOR": "ЦветПалитры.",
|
||||||
|
"STYLE_ITEM": "ЭлементСтиля.",
|
||||||
|
"STYLE": "Стиль.",
|
||||||
|
"LANGUAGE": "Язык.",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -67,6 +101,36 @@ _METADATA_SPEC_NODE_KINDS = {
|
|||||||
"TASK": {NodeKind.TASK},
|
"TASK": {NodeKind.TASK},
|
||||||
"EXCHANGE_PLAN": {NodeKind.EXCHANGE_PLAN},
|
"EXCHANGE_PLAN": {NodeKind.EXCHANGE_PLAN},
|
||||||
"SCHEDULED_JOB": {NodeKind.SCHEDULED_JOB},
|
"SCHEDULED_JOB": {NodeKind.SCHEDULED_JOB},
|
||||||
|
"SUBSYSTEM": {NodeKind.SUBSYSTEM},
|
||||||
|
"ROLE": {NodeKind.ROLE},
|
||||||
|
"SEQUENCE": {NodeKind.SEQUENCE},
|
||||||
|
"DOCUMENT_NUMERATOR": {NodeKind.DOCUMENT_NUMERATOR},
|
||||||
|
"EXTENSION": {NodeKind.EXTENSION},
|
||||||
|
"SESSION_PARAMETER": {NodeKind.SESSION_PARAMETER},
|
||||||
|
"COMMON_ATTRIBUTE": {NodeKind.COMMON_ATTRIBUTE},
|
||||||
|
"FILTER_CRITERION": {NodeKind.FILTER_CRITERION},
|
||||||
|
"FUNCTIONAL_OPTION": {NodeKind.FUNCTIONAL_OPTION},
|
||||||
|
"FUNCTIONAL_OPTION_PARAMETER": {NodeKind.FUNCTIONAL_OPTION_PARAMETER},
|
||||||
|
"DEFINED_TYPE": {NodeKind.DEFINED_TYPE},
|
||||||
|
"SETTINGS_STORAGE": {NodeKind.SETTINGS_STORAGE},
|
||||||
|
"COMMON_COMMAND": {NodeKind.COMMON_COMMAND},
|
||||||
|
"COMMAND_GROUP": {NodeKind.COMMAND_GROUP},
|
||||||
|
"COMMON_FORM": {NodeKind.COMMON_FORM},
|
||||||
|
"COMMON_LAYOUT": {NodeKind.COMMON_LAYOUT},
|
||||||
|
"COMMON_PICTURE": {NodeKind.COMMON_PICTURE},
|
||||||
|
"XDTO_PACKAGE": {NodeKind.XDTO_PACKAGE},
|
||||||
|
"WEB_SERVICE": {NodeKind.WEB_SERVICE},
|
||||||
|
"HTTP_SERVICE": {NodeKind.HTTP_SERVICE},
|
||||||
|
"WS_REFERENCE": {NodeKind.WS_REFERENCE},
|
||||||
|
"WEBSOCKET_CLIENT": {NodeKind.WEBSOCKET_CLIENT},
|
||||||
|
"INTEGRATION_SERVICE": {NodeKind.INTEGRATION_SERVICE},
|
||||||
|
"BOT": {NodeKind.BOT},
|
||||||
|
"INTERFACE": {NodeKind.INTERFACE},
|
||||||
|
"FULL_TEXT_SEARCH_DICTIONARY": {NodeKind.FULL_TEXT_SEARCH_DICTIONARY},
|
||||||
|
"PALETTE_COLOR": {NodeKind.PALETTE_COLOR},
|
||||||
|
"STYLE_ITEM": {NodeKind.STYLE_ITEM},
|
||||||
|
"STYLE": {NodeKind.STYLE},
|
||||||
|
"LANGUAGE": {NodeKind.LANGUAGE},
|
||||||
}
|
}
|
||||||
if _EVENT_SUBSCRIPTION_KIND is not None:
|
if _EVENT_SUBSCRIPTION_KIND is not None:
|
||||||
_METADATA_SPEC_NODE_KINDS["EVENT_SUBSCRIPTION"] = {_EVENT_SUBSCRIPTION_KIND}
|
_METADATA_SPEC_NODE_KINDS["EVENT_SUBSCRIPTION"] = {_EVENT_SUBSCRIPTION_KIND}
|
||||||
|
|||||||
@@ -1471,6 +1471,8 @@ def test_import_supports_structure_only_indexing(tmp_path: Path):
|
|||||||
<Configuration>
|
<Configuration>
|
||||||
<HTTPService name="ПубличныйAPI" qualifiedName="HTTPСервис.ПубличныйAPI" />
|
<HTTPService name="ПубличныйAPI" qualifiedName="HTTPСервис.ПубличныйAPI" />
|
||||||
<Subsystem name="Продажи" qualifiedName="Подсистема.Продажи" />
|
<Subsystem name="Продажи" qualifiedName="Подсистема.Продажи" />
|
||||||
|
<Sequence name="ПроведениеДокументов" qualifiedName="Последовательность.ПроведениеДокументов" />
|
||||||
|
<DocumentNumerator name="ОбщийНумератор" qualifiedName="НумераторДокументов.ОбщийНумератор" />
|
||||||
<Role name="Менеджер" qualifiedName="Роль.Менеджер">
|
<Role name="Менеджер" qualifiedName="Роль.Менеджер">
|
||||||
<Right object="HTTPСервис.ПубличныйAPI" read="true" />
|
<Right object="HTTPСервис.ПубличныйAPI" read="true" />
|
||||||
</Role>
|
</Role>
|
||||||
@@ -1491,7 +1493,7 @@ def test_import_supports_structure_only_indexing(tmp_path: Path):
|
|||||||
assert payload["status"] == "structure_indexed"
|
assert payload["status"] == "structure_indexed"
|
||||||
assert payload["snapshot"]["project_id"] == project_id
|
assert payload["snapshot"]["project_id"] == project_id
|
||||||
assert payload["object_count"] >= 2
|
assert payload["object_count"] >= 2
|
||||||
assert payload["normalized_summary"]["group_count"] >= 3
|
assert payload["normalized_summary"]["group_count"] >= 5
|
||||||
assert payload["normalized_summary"]["rights_count"] == 1
|
assert payload["normalized_summary"]["rights_count"] == 1
|
||||||
|
|
||||||
setup = client.get(f"/projects/{project_id}/setup")
|
setup = client.get(f"/projects/{project_id}/setup")
|
||||||
@@ -1513,7 +1515,7 @@ def test_import_supports_structure_only_indexing(tmp_path: Path):
|
|||||||
normalized = client.get(f"/projects/{project_id}/normalized")
|
normalized = client.get(f"/projects/{project_id}/normalized")
|
||||||
assert normalized.status_code == 200
|
assert normalized.status_code == 200
|
||||||
groups = {group["name"] for group in normalized.json()["configuration"]["groups"]}
|
groups = {group["name"] for group in normalized.json()["configuration"]["groups"]}
|
||||||
assert {"HTTP-сервисы", "Подсистемы", "Роли"}.issubset(groups)
|
assert {"HTTP-сервисы", "Подсистемы", "Роли", "Последовательности", "Нумераторы документов"}.issubset(groups)
|
||||||
|
|
||||||
detail = client.get(
|
detail = client.get(
|
||||||
f"/projects/{project_id}/normalized/object",
|
f"/projects/{project_id}/normalized/object",
|
||||||
@@ -1535,7 +1537,8 @@ def test_import_supports_structure_only_indexing(tmp_path: Path):
|
|||||||
]
|
]
|
||||||
main_configuration = root["children"][0]
|
main_configuration = root["children"][0]
|
||||||
common = next(item for item in main_configuration["children"] if item["label"] == "Общие")
|
common = next(item for item in main_configuration["children"] if item["label"] == "Общие")
|
||||||
assert any(item["label"] == "HTTP-сервисы" for item in common["children"])
|
common_labels = {item["label"] for item in common["children"]}
|
||||||
|
assert {"HTTP-сервисы", "Подсистемы", "Последовательности", "Нумераторы документов"}.issubset(common_labels)
|
||||||
|
|
||||||
|
|
||||||
def test_import_full_replace_replaces_current_normalized_project(tmp_path: Path):
|
def test_import_full_replace_replaces_current_normalized_project(tmp_path: Path):
|
||||||
|
|||||||
Reference in New Issue
Block a user