Domino 9 und frühere Versionen > ND9: Entwicklung
Bei erzeugtem Kalendereintrag ist letzter Tag nicht belegt?
schroederk:
Hallo,
seit einigen Jahren läuft bei uns im Intranet ein Workflow-Tool, um Urlaub zu beantragen und zu genehmigen. Der genehmigte Urlaub wird dann auch im Kalender desjeinigen eingetragen.
Im Kalender sieht der Eintrag eigentlich super aus (für mich sowohl optisch als auch inhaltlich), es ist aber erst jetzt aufgefallen, dass immer nur bei mehrtägigem Urlaub immer nur der letzte Eintrag weiterhin als nicht belegt zu gelten scheint und damit von Kollegen zu Besprechungen eingeladen werden kann.
Hat jemand von Euch eine Idee? Ich hatte vermutet, dass es mit EndDate und EndTime liegen könnte. Ich hatte dafür testweise mal 23:59 eingetragen, hatte aber keine Auswirkungen.
Hier mal der Code, der den Eintrag erstellt. Die Parameter werden dem Script beim Aufruf übergeben.
Aufruf z.B. über: CalendarTasks?OpenAgent&neu&mail/testdb.nsf&10.88.11.22&4&09.03.2020&13.03.2020&12345678&Urlaub+von+Max+Tester
Die Parameter werden als Array gelesen und in die Variablen geschoben:
--- Code: --- argaction = argarray(0)
argdb = argarray(1)
argserver = argarray(2)
argtype = argarray(3)
argvdat = argarray(4)
argbdat = argarray(5)
arguid = argarray(6)
argtext = urlDecode(argarray(7))
--- Ende Code ---
--- Code: --- Dim starttime As String
Dim endtime As String
Dim startDate As Variant
Dim endDate As Variant
Dim aExcludeView(1) As String
Dim cprofile As NotesDocument
Dim mailowner As String
Dim vDates As Variant
Dim iLoop As Integer
Dim atCSWISL (0 To 4) As String
atCSWISL(0)="$S:1"
atCSWISL(1)="$L:1"
atCSWISL(2)="$B:1"
atCSWISL(3)="$R:1"
atCSWISL(4)="$E:1"
Dim atWatched (0 To 4) As String
atWatched(0)="$S"
atWatched(1)="$L"
atWatched(2)="$B"
atWatched(3)="$R"
atWatched(4)="$E"
aExcludeView(0) = "D"
aExcludeView(1) = "S"
starttime = "07:00:00"
endtime = "20:00:00"
Set db = s.GetDatabase(argserver, argdb, False)
If Not db.IsOpen Then Call db.Open("", "")
Set cprofile = db.GetProfileDocument("CalendarProfile")
mailowner = cprofile.GetItemValue("Owner")(0)
Set view = db.GetView("Calendar")
startdate = CDat(argvdat)
enddate = CDat(argbdat)
Set doc = db.Createdocument()
docid = doc.UniversalID
doc.form = "Appointment"
doc.Subject = argtext
doc.Location = " "
doc.SequenceNum = "1"
doc.StartDate = startdate
doc.StartTime = startdate
doc.StartDateTime = startdate
doc.EndDate = enddate
doc.EndTime = enddate
doc.EndDateTime = enddate
iLoop = enddate - startdate
ReDim vDates (0 To iLoop)
vDates (0) = startdate
For iLoop = 1 To UBound (vDates)
vDates (iLoop) = startdate + iLoop
Next
doc.CalendarDateTime = vDates
doc.Repeats = "1"
doc.RepeatFor = iLoop
doc.RepeatHow = "F" ' U=repeat until, F=repeat for
doc.RepeatForUnit = "D" ' repeat in days (W=weekly,M=monthly,Y=yearly)
doc.RepeatWeekends = "X" ' Do nothing if on a weekend
doc.RepeatUnit = "D"
doc.RepeatInterval = "1" ' dayly
doc.RepeatAdjust = "1" ' only used if weekly or monthly
doc.RepeatStartDate = startdate
doc.RepeatDates = vDates
doc.ExcludeFromView = aExcludeView
doc.MeetingType = "1"
doc.AppointmentType = argtype
doc.MessageType = "Not a draft"
doc.Logo = "StdNotesLtr3"
doc.OrgTable = "P0"
doc.SchedulerSwitcher = "1"
doc.Notes = ""
doc.Body = "Erzeugt durch den Urlaubsplaner im Intranet.**ID=" & arguid & "**"
doc.~_ViewIcon = "9"
doc.EndTimeZone = "Z=-1$DO=1$DL=3 -1 1 10 -1 1$ZX=71$ZN=W. Europe"
doc.StartTimeZone = "Z=-1$DO=1$DL=3 -1 1 10 -1 1$ZX=71$ZN=W. Europe"
doc.UpdateSeq = 1
doc.WebDateTimeInit = 1
doc.~$AlarmDisaOObled = "1"
doc.~$PublicAccess = "1"
doc.~$CSWISL = atCSWISL
doc.~$WatchedItems = atWatched
doc.~$CSFlags = "m"
doc.OrgRepeat = "1"
doc.~$CSVersion = "2"
doc.Chair = mailowner
doc.AltChair = mailowner
doc.From = mailowner
doc.Principal = mailowner
If argtype = "2" Then
doc.BookFreeTime = "0"
doc.~$BusyName = mailowner
doc.~$BusyPriority = "1"
End If
doc.ApptUNID = docid
Call doc.Save( True, True )
--- Ende Code ---
schroederk:
Hat niemand eine Idee? :-[
Ein Ticket bei HCL kann ich wohl nicht aufmachen, das Thema ist da sicherlich out-of-scope. :-:
Bastel123:
Was gibt dir
iLoop = enddate - startdate
für einen Wert aus? 13.03.2020 - 09.03.2020?
Da könntest du mal ansetzen.
Gruß
Sebastian
schroederk:
im Loop wird vDates befüllt und im Anschluss in das Feld CalendarDateTime geschrieben.
Das Ergebnis sieht meiner Meinung nach gut aus (siehe angehängte Screenshots)
Es ist auch immer nur der letzte Tag, der zwar nicht anders aussieht als alle anderen, aber von Kollegen dennoch als verfügbar angezeigt wird.
Bei Einzeltagen funktioniert es auch korrekt.
jBubbleBoy:
das "Calendaring & Scheduling" Dokument schon gelesen?
https://web.archive.org/web/20120905054315/http://www-12.lotus.com/ldd/doc/uafiles.nsf/docs/WPNotesCSSchema/$File/csschema.pdf
oder man erstellt einen Kalendereintrag, mit den gewünschten Eigenschaften und vergleicht das mit dem vom Code generierten Dokument
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln