Für Entwickler
Willkommen in der Entwicklerdokumentation von time cockpit! Dieser Bereich enthält alles, was Sie brauchen, um das Datenmodell anzupassen, Integrationen zu erstellen, Abläufe zu automatisieren und die Funktionalität von time cockpit zu erweitern.
🚀 Schnellstart
Neu in der Entwicklung mit time cockpit?
- Entwickler-FAQ - Häufige Fragen und kurze Antworten
- Datenmodell: Überblick - Die Struktur der Entitäten verstehen
- Web API: Überblick - Programmgesteuert auf time cockpit zugreifen
- TCQL: Überblick - Die Abfragesprache lernen
Beliebte Anwendungsfälle
📊 Datenmodell
Verstehen Sie die Datenstruktur und die Beziehungen in time cockpit.
Grundkonzepte
Entitätsbeziehungen - Visuelle ER-Diagramme für alle Bereiche
- Bereich Projekte & Rechnungslegung
- Bereich Zeit & Anwesenheit
- Sicherheit & Benutzerverwaltung
- Stammdaten & Konfiguration
Referenz der Standardentitäten - Vollständige Dokumentation der Entitäten
- APP_Timesheet, APP_Project, APP_Task
- Eigenschaften, Beziehungen, Berechtigungen
- Beispiele für TCQL und Web API
Leitfaden zu Berechtigungen & Sicherheit - Sicherheitsarchitektur
- Rollenbasierte Zugriffskontrolle (RBAC)
- Muster für Sicherheit auf Zeilenebene
- Named Sets
- Häufige Berechtigungsszenarien
Anpassung
- Anpassung des Datenmodells: Überblick
- Eigene Entitäten anlegen
- Eigene Listen
- Eigene Formulare
- Berechtigungen konfigurieren
- Navigation anpassen
- Dashboards
- Feature Flags
🔍 TCQL - Time Cockpit Query Language
TCQL ist die ausdrucksbasierte Abfragesprache, mit der Sie auf Daten in time cockpit zugreifen und sie bearbeiten.
Grundlegende Syntax
- Überblick - Einführung in TCQL
- From-Klausel - Auswahl der Datenquelle
- Where-Klausel - Daten filtern
- Select-Klausel - Projektionen und Aggregationen
- Order-By-Klausel - Ergebnisse sortieren
- Ausdruckssprache - Operatoren und Funktionen
Spezielle Funktionen
- Funktionen für Arbeitszeit & Feiertage
:GetWorkTime()- Arbeitsstunden berechnen:GetWeeklyHoursOfWork()- Sollstunden:BookingCompletionDateOfUser()- Buchungsabschlussdatum:FirstOfMonth(),:LastOfMonth()- Datumshilfen
Fortgeschrittene Themen
- TCQL AST API - Abfragen programmgesteuert aufbauen
Beispielabfragen
Nicht verrechnete Stunden pro Projekt ermitteln:
From T In APP_Timesheet
Where T.APP_Billable = True And T.APP_Billed = False
Select New With {
.ProjectCode = T.APP_Project.APP_Code,
.TotalHours = Sum(T.APP_DurationInHours),
.Revenue = Sum(T.APP_Revenue)
}
Zeitbuchungen in der falschen Abteilung finden:
From T In APP_Timesheet
Where
T.APP_Project <> Null And
T.APP_UserDetail.APP_Department <> T.APP_Project.APP_Customer.APP_Department
Select T
Weitere Beispiele → Entwickler-FAQ
🔌 Web API
Greifen Sie über die REST/OData-API auf Daten in time cockpit zu.
API-Dokumentation
- Überblick - API-Architektur
- Authentifizierung - OAuth, Bearer-Tokens
- OData-Endpunkt - REST-CRUD-Operationen
- Query-Endpunkt - TCQL über HTTP ausführen
- ExecuteList-Endpunkt - Vordefinierte Listen ausführen
- ExecuteAction-Endpunkt - Aktionen auslösen
- Reporting-Endpunkt - Berichte erzeugen
- Beispielimplementierung - Client-Bibliothek
Kurze Beispiele
Zeitbuchungen des aktuellen Benutzers abrufen:
GET https://api.timecockpit.com/odata/APP_Timesheet
?$filter=APP_UserDetailUuid eq current-user-uuid
&$expand=APP_Project,APP_Task
&$orderby=APP_BeginTime desc
&$top=50
Eine Zeitbuchung anlegen:
POST https://api.timecockpit.com/odata/APP_Timesheet
Content-Type: application/json
{
"APP_BeginTime": "2026-02-09T09:00:00Z",
"APP_EndTime": "2026-02-09T12:30:00Z",
"APP_Description": "Development work",
"APP_ProjectUuid": "...",
"APP_UserDetailUuid": "..."
}
TCQL-Abfrage ausführen:
POST https://api.timecockpit.com/query
Content-Type: application/json
{
"query": "From T In APP_Timesheet Where T.APP_BeginTime >= @StartDate Select T",
"parameters": {
"@StartDate": "2026-02-01T00:00:00Z"
}
}
Weitere Beispiele → Web-API-Dokumentation
⚙️ Scripting & Automatisierung
Automatisieren Sie Abläufe und erweitern Sie die Funktionalität mit Python (IronPython).
Grundkonzepte
- Scripting: Überblick - Einführung in das Scripting
- Aktionen - Vom Benutzer ausgelöste Operationen
- Trigger - Ereignisgesteuerte Automatisierung
- Skripte automatisieren - Zeitgesteuerte Ausführung
Häufige Szenarien
Anleitungen:
- Eine Dateieigenschaft hinzufügen
- Feiertage per Skript hinzufügen
- Daten nach Excel exportieren
- Daten aus CSV importieren
- Aus SQL Server importieren
- Das Datenmodell ändern
- E-Mails bei Budgetüberschreitung senden
- .NET-Framework-Klassen verwenden
- Mit C# auf die API zugreifen
- XML in Skripten verwenden
Beispiel: Urlaub automatisch genehmigen
def approveVacationTrigger(actionContext):
dc = actionContext.DataContext
vacation = actionContext.InputSet.First()
# Auto-approve if less than 1 day
if vacation.APP_BeginTime == vacation.APP_EndTime:
vacation.APP_ApprovedTimestampUtc = DateTime.UtcNow
vacation.APP_Approver = dc.Environment.CurrentUser
dc.SaveObject(vacation)
Weitere Beispiele → Scripting-Anleitungen
📈 Berichte
Erstellen Sie eigene Berichte und Datenvisualisierungen.
- Überblick - Architektur der Berichte
- Standard-Druckansicht - Integrierte Vorlagen
- Eigene Berichte - Selbst erstellen
- Integrierte Berichte - Verfügbare Berichte
💡 Anwendungsfälle & Beispiele
Umsetzungsbeispiele aus der Praxis:
- Budgetkontrolle - Überwachung von Projektbudgets mit berechneten Kennzahlen
- Gebuchte vs. budgetierte Stunden
- Analyse von Umsatz vs. Kosten
- Effektive Stundensätze
- Listenimplementierung auf Python-Basis
Weitere Anwendungsfälle folgen in Kürze!
📦 Integrationsmuster
Häufige Integrationsszenarien
1. Externes Projektmanagement (JIRA, Azure DevOps)
- Projekte/Tätigkeiten nach time cockpit synchronisieren
- Zeitbuchungen an das externe System zurückspielen → Beispiel für eine JIRA-Integration
2. Buchhaltungssysteme (DATEV, SAP)
- Rechnungen und verrechenbare Stunden exportieren
- Stammdaten zu Kunden/Projekten importieren → Datenexport
3. HR-Systeme
- Mitarbeiterstammdaten synchronisieren
- Arbeitszeit für die Lohnverrechnung exportieren → Datenimport/-export
4. Eigene Dashboards (Power BI, Tableau)
- Zeitbuchungsdaten über OData abfragen
- Echtzeit-Dashboards erstellen → OData-Endpunkt
🔐 Sicherheit für Entwickler
- Leitfaden zu Berechtigungen - Eigene Sicherheitslogik umsetzen
- Migration der Standardberechtigungen - Das neue Sicherheitsmodell aktivieren
- AAD-Integration - Authentifizierung für Unternehmen
🛠️ Entwicklungswerkzeuge
Änderungen testen
TCQL-Konsole: Abfragen interaktiv im Web-Client testen Skript-Debugger: Im Vollclient für die Skriptentwicklung verfügbar API-Tests: Postman oder ähnliche Werkzeuge mit Bearer-Authentifizierung verwenden
Best Practices
- Berechtigungen immer testen - Prüfen Sie, dass Benutzer nicht auf Daten ohne Berechtigung zugreifen können
- Transaktionen verwenden - Fassen Sie mehrstufige Operationen in
BeginTransaction()/CommitTransaction()ein - Fehler sauber behandeln - Verwenden Sie try/catch-Blöcke in Skripten
- Eigenen Code dokumentieren - Erklären Sie die Geschäftslogik in Kommentaren
- Versionsverwaltung - Exportieren Sie Änderungen am Datenmodell regelmäßig
📞 Hilfe erhalten
Ressourcen
- Entwickler-FAQ - Kurze Antworten auf häufige Fragen
- Release Notes - Bleiben Sie über Änderungen an der API auf dem Laufenden
- Support - Wenden Sie sich für technische Unterstützung an den time cockpit Support
Community
- Eigene Skripte und Lösungen teilen
- Von den Umsetzungen anderer lernen
- Anwendungsfälle und Beispiele beitragen
Suchen Sie die Anwenderdokumentation?
Wenn Sie Informationen suchen, wie Sie time cockpit als Anwender verwenden: → Für Anwender