1 %RegisteredObject 0 Kenmerk_MaatwerkFramework_Plugin TECH.Events.KenmerkenModifiedEventData 1 KenmerkenModifiedEventData:TECH.Events.KenmerkenModifiedEventData 1 1 %Status GroepID:%String 1 %String GroepID:%String %Boolean 1 KenmerkModifiedEventData:TECH.Events.KenmerkModifiedEventData 1 0)) { // Er zijn al waarden aanwezig. We gaan de lijst kopiëren van objecten. // Alle kopiën zijn de objecten waar we onze nieuwe waarde moeten voor invullen. // Het is voldoende om de objecten te kopiëren in de index van 1 waarde van het kenmerk Set Lijst = PropertiesIndex.GetAt(Kenmerk).GetNext("") For i=1:1:Lijst.Count() // Lijst van 1 waarde pakken en deze construct-clonen! { Set Kopie = Lijst.GetAt(i).%ConstructClone(0) Set $zobjproperty(Kopie,Kenmerk) = GewijzigdeWaarde Do ObjectenLijst.Insert(Kopie) Do TeBewarenObjecten.Insert(Kopie) Do NieuweObjecten.Insert(Kopie) } } ElseIf (('$IsObject(WaardenIndexVoorKenmerk)) || ('WaardenIndexVoorKenmerk.IsDefined(GewijzigdeWaarde))) { // Er waren nooit eerder waarden voor deze property gekend. // We hoeven dus geen kopie te maken en kunnen rechtstreeks de nieuwe waarde invullen in de reeds bestaande objecten For i=1:1:ObjectenLijst.Count() { Set Object = ObjectenLijst.GetAt(i) Set $zobjproperty(Object,Kenmerk) = GewijzigdeWaarde Do TeBewarenObjecten.Insert(Object) Do NieuweObjecten.Insert(Object) } } If (NieuweObjecten.Count() > 0) { // Onze index up-to-date houden If ('PropertiesIndex.IsDefined(Kenmerk)) { Set WaardenIndexVoorKenmerk = ##class(%ArrayOfDataTypes).%New() Do PropertiesIndex.SetAt(WaardenIndexVoorKenmerk,Kenmerk) } Do WaardenIndexVoorKenmerk.SetAt(NieuweObjecten,GewijzigdeWaarde) } } } } Set OperatieScope = ##class(TECH.OperatieScope).StartMetTx() Set Iterator = ##class(TECH.ListIterator).%New(TeBewarenObjecten) While (Iterator.HasNext()) { Set Object = Iterator.Next() Set Status = Object.%Save() If ($$$ISERR(Status)) { Do ##class(TECH.ExceptionHandler).Throw(##class(TECH.Exceptions.StatusException).%New(##class(TECH.enu.ExceptionCode).SaveFailed(),"Halffab voor UnID """_UnID_""" en kenmerk """_Kenmerk_""" kon niet worden opgeslagen.",Status)) } } Set Iterator = ##class(TECH.ListIterator).%New(ObjectenTeVerwijderenLijst) While (Iterator.HasNext()) { Set Object = Iterator.Next() Set Status = Object.%DeleteId(Object.%Id()) } Do OperatieScope.Gelukt() ]]> Object:%Persistent,PropertyNaam:%String 1 %String GroepID:%String 1 %String 1 KenmerkenModifiedEvent:TECH.Events.KenmerkenModifiedEvent 1 KenmerkModifiedEvent:TECH.Events.KenmerkModifiedEvent 1 Do ##class(APPS.PM.KenmMWFPlugin).ResyncMFWIndex() 1