Harden 1C saved-state writes and cache consistency

This commit is contained in:
2026-07-26 16:44:53 +03:00
parent aed134d817
commit 9fd4e1ff99
3 changed files with 440 additions and 16 deletions
+34 -1
View File
@@ -75,7 +75,7 @@ def declared_attribute_tree(*, include_new: bool = False) -> dict[str, Any]:
seq(atom(1), atom(0), atom(new_guid)),
string("КодПоставщика"),
seq(atom(1), string("ru"), string("Код поставщика")),
string("Комментарий реквизита"),
string(""),
atom("type-settings"),
)
)
@@ -437,9 +437,42 @@ def test_object_member_add_plan_clones_attribute_and_generates_guid(monkeypatch)
assert result["requested_member"]["guid"] == new_guid
assert result["requested_member"]["ref"] == "Catalog.Номенклатура.Attribute.КодПоставщика"
assert result["container"] == {"ref": "Catalog.Номенклатура", "scope": "object"}
assert result["requested_member"]["comment"] == ""
assert result["clone_validation"]["settings_preserved"] is True
assert result["clone_validation"]["stale_references"] == []
assert append["parent_path"] == "4"
assert cloned_identities[new_guid]["name"] == "КодПоставщика"
assert cloned_identities[new_guid]["synonyms"]["ru"] == "Код поставщика"
cloned_comment = adapter.config_tree_identity_property_target(
append["node"],
new_guid,
"comment",
)
assert cloned_comment["current"] == ""
def test_object_member_clone_blocks_template_identity_references_outside_identity_fields() -> None:
template = seq(
seq(atom(1), atom(0), atom("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee")),
string("Артикул"),
seq(atom(1), string("ru"), string("Артикул товара")),
string("Комментарий реквизита"),
seq(atom("type-settings"), string("Артикул")),
)
cloned, validation = adapter.clone_metadata_member_record(
template,
template_guid="aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
new_guid="bbbbbbbb-cccc-dddd-eeee-ffffffffffff",
new_name="КодПоставщика",
new_synonym="Код поставщика",
new_comment="",
)
assert cloned is None
assert validation["status"] == "blocked"
assert validation["error"] == "template_identity_referenced_outside_identity_fields"
assert validation["stale_references"] == [{"path": "4.1", "value": "Артикул"}]
def test_object_member_add_scopes_tabular_column_guid_and_ref(monkeypatch) -> None: