Autor Thema: Bei erzeugtem Kalendereintrag ist letzter Tag nicht belegt?  (Gelesen 4370 mal)

Offline schroederk

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.924
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
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))

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 )
Ich wäre ja gerne weniger egoistisch, aber was hab ich davon?

Offline schroederk

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.924
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Bei erzeugtem Kalendereintrag ist letzter Tag nicht belegt?
« Antwort #1 am: 11.02.20 - 14:08:59 »
Hat niemand eine Idee?  :-[
Ein Ticket bei HCL kann ich wohl nicht aufmachen, das Thema ist da sicherlich out-of-scope.  :-:
Ich wäre ja gerne weniger egoistisch, aber was hab ich davon?

Offline Bastel123

  • Senior Mitglied
  • ****
  • Beiträge: 355
  • Geschlecht: Männlich
Re: Bei erzeugtem Kalendereintrag ist letzter Tag nicht belegt?
« Antwort #2 am: 11.02.20 - 16:50:40 »
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

Gruß Sebastian
-----------------------------------------------------
Kaum macht man's richtig, schon funktioniert's.

Offline schroederk

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.924
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Bei erzeugtem Kalendereintrag ist letzter Tag nicht belegt?
« Antwort #3 am: 11.02.20 - 17:09:42 »
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.

Ich wäre ja gerne weniger egoistisch, aber was hab ich davon?

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.290
  • Geschlecht: Männlich
Re: Bei erzeugtem Kalendereintrag ist letzter Tag nicht belegt?
« Antwort #4 am: 11.02.20 - 17:59:45 »
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
Gruss Erik :: Freelancer :: KI-Dev, Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16 / OLI 2.0

--
Nur ein toter Bug, ist ein guter Bug!

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Bei erzeugtem Kalendereintrag ist letzter Tag nicht belegt?
« Antwort #5 am: 12.02.20 - 08:06:25 »
Einige Dinge, die mir sofort auffallen, und die gegen das von Erik gepostete Schema verstossen:

1. Repeating Entries bestehen immer aus mindestens 2 Dokumenten: Dem "Hauptdokument" und einem Antwortdokument mit den Terminen... Das Hauptdokument wird im Kalender nicht angezeigt.
2. StartDate, StartTime und StartDateTime enthalten eigentlich unterschiedliche Werte und nicht alle das selbe...
3. Ganztägige Termine gehen von 04:00 - 20:00 Uhr, nicht von 07:00 - 20:00 Uhr.
4. Der richtige Wert für BookFreeTime ist "" nicht "0"

Einen direkten Grund, warum der letzte Tag nicht als Busy gilt, kann ich aber nicht erkennen...
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline CarstenH

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 669
  • Geschlecht: Männlich
Re: Bei erzeugtem Kalendereintrag ist letzter Tag nicht belegt?
« Antwort #6 am: 12.02.20 - 17:56:34 »
Laut dem Script wird keinerlei Uhrzeit eingetragen und in der Beispiel-URL wird AppointmentType 4 benutzt (argtype = argarray(3) und wenn ich richtig zähle steht da eine 4).

AppointmentType 4 sind aber keine Termine oder ganztägige Ereignisse sondern lediglich Erinnerungen und damit immer ohne Reservierung, eine Erinnerung hat nur einen Zeitpunkt (der nie festgelegt wird da die Uhrzeiten gar nicht übernommen werden).
Eine Erinnerung hat keine Dauer und kann damit per Definition keine Zeit belegen - das kann man gerne mal ausprobieren: legt euch eine Erinnerung im Kalender an und die Maske sperrt automatisch das Feld "als verfügbar markieren". Wenn man das versucht mit Script auszutricksen ist das Ergebnis im besten Fall "undefiniert".

Also entweder stimmt das Script oder das Beispiel nicht, so kann das jedenfalls nicht wirklich (seit Jahren!) funktionieren.

HTH
Carsten

Offline schroederk

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.924
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Bei erzeugtem Kalendereintrag ist letzter Tag nicht belegt?
« Antwort #7 am: 13.02.20 - 07:45:33 »
Hallo Carsten,

Du hast recht, der Parameter hätte "2" anstelle von "4" heißen müssen. Da habe ich versehentlich einen Aufruf kopiert, der den Eintrag auch in einem gemeinsamen Kalender erzeugt. Hier hatte natürlich nur Erinnerung Sinn gemacht.
Das Script lief seit mehr als 3 Jahren unverändert.

Ich hatte als erstes auch die Uhrzeiten in Verdacht. Ich hatte vermutet, dass EndTime und EndDateTime bei 0:00 Uhr bedeuten könnten, dass er dann um 07:00 Uhr natürlich wieder verfügbar wäre.
In einem Test habe ich dann die Ende-Zeit auf 23:59:59 gesetzt, aber das hat keinen Unterschied gemacht. Der letzte Tag bleibt weiterhin verfügbar.

@jBubbleBoy: Ich habe mir das PDF angeschaut, konnte aber auch hier keinen verursachenden Fehler finden.
@Tode:
- In den bisher gefundenen Beispielen im Netz wurde auch bei StartDate, StartTime und StartDateTime immer derselbe Wert geschrieben.
- Die beiden Variablen starttime und endtime werde aktuell gar nicht verwendet.
- Wenn ich BookFreeTime = "" setze, wird die Variable aus dem Dokument entfernt. Vermutlich hatte ich damals deshalb den Wert "0" gesetzt. Hat aber auch leider keinen Einfluss auf das Ergebnis.
- Ich habe bisher kein Beispiel-Script gefunden, um mehrtägige Einträge, also 2 Dokumente, zu erzeugen. Hast Du vielleicht eins?
« Letzte Änderung: 13.02.20 - 07:56:26 von schroederk »
Ich wäre ja gerne weniger egoistisch, aber was hab ich davon?

Offline maxritti

  • Senior Mitglied
  • ****
  • Beiträge: 490
Re: Bei erzeugtem Kalendereintrag ist letzter Tag nicht belegt?
« Antwort #8 am: 13.02.20 - 07:50:17 »
oder man erstellt einen Kalendereintrag, mit den gewünschten Eigenschaften und vergleicht das mit dem vom Code generierten Dokument

Hast Du das mal gemacht?
Wäre ja ein Versuch, einen manuellen korrekten Eintrag auf Feldebene mit deinem "Problemeintrag" zu vergleichen.

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.290
  • Geschlecht: Männlich
Re: Bei erzeugtem Kalendereintrag ist letzter Tag nicht belegt?
« Antwort #9 am: 13.02.20 - 08:38:56 »
oder man erstellt einen Kalendereintrag, mit den gewünschten Eigenschaften und vergleicht das mit dem vom Code generierten Dokument

Hast Du das mal gemacht?
Wäre ja ein Versuch, einen manuellen korrekten Eintrag auf Feldebene mit deinem "Problemeintrag" zu vergleichen.

Ja klar - ein Kalenderdokument hat etwa 80 Notes-Felder und es gibt Werkzeuge die Dokumente vergleichen können.
Gruss Erik :: Freelancer :: KI-Dev, Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16 / OLI 2.0

--
Nur ein toter Bug, ist ein guter Bug!

Offline schroederk

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.924
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Bei erzeugtem Kalendereintrag ist letzter Tag nicht belegt?
« Antwort #10 am: 13.02.20 - 10:22:48 »
Ich denke, dass ich den Fehler gefunden habe. Es lag wohl doch an den angebenen Zeiten (00:00 Uhr) bei Start und Ende.
Nachdem ich die korrekten Zeiten (4 Uhr - 20 Uhr) eingetragen und den Loop zum Füllen der Werte angepasst habe, wird jetzt auch der letzte Tag als belegt angezeigt.
Ein paar andere Kleinigkeiten hatte ich auch noch ergänzt (z.B. doc.~$IconSwitcher = "AllDayEvent"), auch wenn ich nicht denke, dass diese ausschlaggebend waren.

Herzlichen Dank für Eure Unterstützung.  :)
Ich wäre ja gerne weniger egoistisch, aber was hab ich davon?

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz