move()

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.

1. Signatur

  • Sync

  • Async

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
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

2. Parameter

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. Optional, aber mitgeben ist schneller: Der Server identifiziert das Zielregister über das Paar aus ID und Typ, deshalb wird ein fehlender Typ automatisch ermittelt. Das kostet pro Aufruf einen zusätzlichen dms.GetObjectTypeByID-Roundtrip, sofern er nicht aus einer geladenen ECMRegisterModel-Instanz gelesen werden kann. Siehe Register-Typ mitgeben (schneller).

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.

3. Ausnahmen

Ausnahme Bedingung

ValueError

model ist ein einfacher int und object_type ist None.

ValueError

model ist eine Modellinstanz mit id gleich None.

4. Beispiele

4.1. Dokument in einen anderen Ordner verschieben

  • Sync

  • Async

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)
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)

4.2. Verschieben mit numerischer ID und Typname

  • Sync

  • Async

ecm.dms.move(
    42,
    "RechnungsDokument",
    folder_id=100,
    register_id=-1,
)
await ecm.dms.move(
    42,
    "RechnungsDokument",
    folder_id=100,
    register_id=-1,
)

4.3. Dokument in ein vorhandenes Register verschieben

  • Sync

  • Async

register = ecm.dms.select(PersonRegister).where(PersonRegister.Name == "Verträge").execute()[0]

ecm.dms.move(doc, folder_id=ziel_ordner, register_id=register)
register = (await ecm.dms.select(PersonRegister).where(PersonRegister.Name == "Verträge").execute())[0]

await ecm.dms.move(doc, folder_id=ziel_ordner, register_id=register)

4.4. Register-Typ mitgeben (schneller)

Der Server identifiziert das Zielregister über das Paar register_id + register_type. Fehlt register_type, ermittelt der Client ihn selbst: aus der übergebenen ECMRegisterModel-Instanz, sonst über einen zusätzlichen dms.GetObjectTypeByID-Aufruf. Dieser Roundtrip fällt pro move() an. Wer viele Objekte in dasselbe Register umhängt, ermittelt den Typ einmal und gibt ihn mit — das spart einen Serveraufruf je Dokument.

register = ecm.dms.select(PersonRegister).where(PersonRegister.Name == "Verträge").execute()[0]
register_type = register.system.type_id  # oder: ecm.dms.get_object_type_by_id(register_id)

for doc in dokumente:
    ecm.dms.move(
        doc.system.id,
        object_type=PersonDok._internal_name_,
        folder_id=ziel_ordner_id,
        register_id=register.system.id,
        register_type=register_type,
    )

4.5. Aus dem Workflow-Tray in den Benutzer-Tray verschieben

  • Sync

  • Async

ecm.dms.move(doc, wf_to_user_tray=True)
await ecm.dms.move(doc, wf_to_user_tray=True)

5. Siehe auch

  • copy() — Objekt an einen neuen Speicherort kopieren

  • delete() — Objekt löschen