= move()
:description: Verschiebt ein Dokument oder Register an einen neuen Speicherort (dms.XMLMove). Gibt die aktualisierte object_id zurück. Ordner können nicht verschoben werden.
:keywords: move, XMLMove, verschieben, object_id, Dokument, Register
:page-tags: api, dms

Verschiebt ein Dokument oder Register in einen neuen Ordner/Register-Speicherort
über `dms.XMLMove`. Das Verschieben eines Registers verschiebt auch alle enthaltenen
Kindobjekte rekursiv.

Bei `wf_to_user_tray=True` wird das Dokument vom Workflow-Tray in den Benutzer-Tray
verschoben. In diesem Fall dürfen keine Speicherortparameter gesetzt werden.

== Signatur

[tabs]
====
Sync::
+
[source,python]
----
ecm.dms.move(
    model: ECMDocumentModel | ECMRegisterModel | int,
    object_type: int | str | None = None,
    *,
    folder_id: int | ECMFolderModel | None = None,
    register_id: int | ECMRegisterModel | None = None,
    register_type: int | None = None,
    wf_to_user_tray: bool = False,
) -> None
----

Async::
+
[source,python]
----
await ecm.dms.move(
    model: ECMDocumentModel | ECMRegisterModel | int,
    object_type: int | str | None = None,
    *,
    folder_id: int | ECMFolderModel | None = None,
    register_id: int | ECMRegisterModel | None = None,
    register_type: int | None = None,
    wf_to_user_tray: bool = False,
) -> None
----
====

== Parameter

[cols="1,1,1,3"]
|===
|Parameter |Typ |Standard |Beschreibung

|`model`
|`ECMDocumentModel \| ECMRegisterModel \| int`
|—
|Das zu verschiebende Objekt. Entweder eine Modellinstanz (muss `id` gesetzt haben) oder eine numerische Objekt-ID (erfordert `object_type`).

|`object_type`
|`int \| str \| None`
|`None`
|Nur erforderlich, wenn `model` ein einfacher `int` ist. Entweder eine numerische Typ-ID oder der interne Name des Objekttyps.

|`folder_id`
|`int \| ECMFolderModel \| None`
|`None`
|Zielordner — eine numerische ID oder eine `ECMFolderModel`-Instanz, deren `id` verwendet wird. Erforderlich, außer bei `wf_to_user_tray=True`.

|`register_id`
|`int \| ECMRegisterModel \| None`
|`None`
|Zielregister — eine numerische ID oder eine `ECMRegisterModel`-Instanz, deren `id` verwendet wird. `-1` übergeben, um das Objekt direkt im Ordner ohne übergeordnetes Register abzulegen.

|`register_type`
|`int \| None`
|`None`
|Typ-ID des Zielregisters. Wird automatisch ermittelt, wenn `register_id` eine `ECMRegisterModel`-Instanz ist, deren Klasse `_type_id_` definiert.

|`wf_to_user_tray`
|`bool`
|`False`
|Bei `True` wird das Dokument vom Workflow-Tray in den Benutzer-Tray verschoben. In diesem Fall dürfen keine Speicherortparameter gesetzt werden.
|===

== Ausnahmen

[cols="1,3"]
|===
|Ausnahme |Bedingung

|`ValueError`
|`model` ist ein einfacher `int` und `object_type` ist `None`.

|`ValueError`
|`model` ist eine Modellinstanz mit `id` gleich `None`.
|===

== Beispiele

=== Dokument in einen anderen Ordner verschieben

[tabs]
====
Sync::
+
[source,python]
----
doc = ecm.dms.select(RechnungsDokument).where(RechnungsDokument.Titel == "Entwurf").execute()[0]
ziel = ecm.dms.select(RechnungsOrdner).where(RechnungsOrdner.Jahr == 2024).execute()[0]

ecm.dms.move(doc, folder_id=ziel, register_id=-1)
----

Async::
+
[source,python]
----
doc = (await ecm.dms.select(RechnungsDokument).where(RechnungsDokument.Titel == "Entwurf").execute())[0]
ziel = (await ecm.dms.select(RechnungsOrdner).where(RechnungsOrdner.Jahr == 2024).execute())[0]

await ecm.dms.move(doc, folder_id=ziel, register_id=-1)
----
====

=== Verschieben mit numerischer ID und Typname

[tabs]
====
Sync::
+
[source,python]
----
ecm.dms.move(
    42,
    "RechnungsDokument",
    folder_id=100,
    register_id=-1,
)
----

Async::
+
[source,python]
----
await ecm.dms.move(
    42,
    "RechnungsDokument",
    folder_id=100,
    register_id=-1,
)
----
====

=== Aus dem Workflow-Tray in den Benutzer-Tray verschieben

[tabs]
====
Sync::
+
[source,python]
----
ecm.dms.move(doc, wf_to_user_tray=True)
----

Async::
+
[source,python]
----
await ecm.dms.move(doc, wf_to_user_tray=True)
----
====

== Siehe auch

* xref:api/dms/copy.adoc[copy()] — Objekt an einen neuen Speicherort kopieren
* xref:api/dms/delete.adoc[delete()] — Objekt löschen
