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 |
|---|---|---|---|
|
|
— |
Das zu verschiebende Objekt. Entweder eine Modellinstanz (muss |
|
|
|
Nur erforderlich, wenn |
|
|
|
Zielordner — eine numerische ID oder eine |
|
|
|
Zielregister — eine numerische ID oder eine |
|
|
|
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 |
|
|
|
Bei |
3. Ausnahmen
| Ausnahme | Bedingung |
|---|---|
|
|
|
|
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,
)