Hallo,
ich finde irgendwie keinen Weg um in die UserFields eines Benutzers rein zu schreiben.
Ich finde auch den Typ Benutzer nicht, so dass ich einen Item erstellen kann.
Was ich machen möchte ist kurzgefasst:
Mir den ersten Bearbeiter eines Termins holen, einen Double Wert ausrechnen und diesen in ein benutzerdefiniertes Feld des Benutzers rein schreiben.
Bisher habe ich das:
Code
- var
- activeUserIdList,firstUserList: TFbmIntegerList;
- i,iUserIndex: Integer;
- iFirstUserRef: Integer;
- iNumberOfDays: Double;
- oBenutzer: TFbmItem;
- oUserField: TFbmUserFieldItem;
- oUserFields: TFbmUserFieldItemList;
- sNumberOfDays: string;
- begin
- Item.AddToProtocol('Eingangsverarbeitung: Urlaub');
- if (Item.Kind = ikAppointment) then
- begin
- iFirstUserRef := Item.FirstUserRef;
- Item.AddToProtocol(IntToStr(iFirstUserRef));
- firstUserList := TFbmIntegerList.Create;
- firstUserList.Add(iFirstUserRef);
- oUserFields := TFbmUserFieldItemList.Create;
- oUserField := TFbmUserFieldItem.Create;
- Item.UserCache.GetUserFields(iFirstUserRef, oUserFields);//wird direkt oUserFields zugewiesen.
- oUserField := oUserFields.Find('restliche_Urlaubstage',iUserIndex);
- Item.AddToProtocol(oUserField.Value);
- //oBenutzer.Load(iFirstUserRef);
- Item.AddToProtocol('Ist Termin.');
- if (Assigned(Item.TopicCache) and (AnsiSameText(Item.TopicCache.GetNameById(Item.TopicRef), 'Urlaubsantrag'))) then
- begin
- if (Item.UserFields.Exists('HatErinnerung') and (Item.UserFields.ItemsByName['HatErinnerung'].AsInteger = 0)) then
- begin
- activeUserIdList := TFbmIntegerList.Create;
- //Liste von allen Benutzern die erinnert werden sollen,zur Zeit nur Ali
- activeUserIdList.add(3);
- activeUserIdList.Sort;//wichtig
- Item.RemindDate := Now ;
- for i := 0 to activeUserIdList.Count -1 do begin
- Item.RemindUsers.Add(activeUserIdList[i]);
- end;
- //numberOfDays := Item.EndDate - Item.StartDate;
- //Item.UserFields.ItemsByName['Restliche_Urlaubstage'].asFloat := Item.EndDate - Item.StartDate;
- //Item.AddToProtocol(Item.UserFields.ItemsByName['Restliche_Urlaubstage'].Value);
- //Item.AddToProtocol(sNumberOfDays);
- activeUserIdList.free;
- Item.AddToProtocol('Erinnerung gesetzt');
- try
- if Item.UserFields.Exists('HatErinnerung') then
- Item.UserFields.ItemsByName['HatErinnerung'].DataTypeValue := '1';
- except
- end;
- end;
- end
- else
- begin
- if not (Item.TopicRef = 72) then
- begin
- if (Item.TopicRef = 71) then
- begin
- Item.AddToProtocol('Ist genehmigt');
- if (Item.LastUserRef = 3) then
- begin
- if (Item.UserFields.Exists('UrlaubstageBerechnet') and (Item.UserFields.ItemsByName['UrlaubstageBerechnet'].AsInteger = 0)) then
- begin
- Item.AddToProtocol('Noch nicht Berechnet');
- iNumberOfDays := Item.EndDate - Item.StartDate + 1.0;
- Item.AddToProtocol(FloatToStr(iNumberOfDays));
- oUserField.asFloat := oUserField.asFloat - iNumberOfDays;
- Item.AddToProtocol('Jetzt sollte es berechnet sein');
- try
- if Item.UserFields.Exists('UrlaubstageBerechnet') then
- Item.UserFields.ItemsByName['UrlaubstageBerechnet'].DataTypeValue := '1';
- except
- end;
- end;
- end
- else
- begin
- Item.TopicRef := 70;
- end;
- end;
- end;
- end;
- end
- else
- begin
- Item.AddToProtocol('Ist kein Termin.');
- end;
- end.
Kann mir jemand einen Tip geben ?
Gruß,
Ara