vhLib.Class TECH.RegisteredObject %String list 1 %ListOfDataTypes Object1:%RegisteredObject,Object2:%RegisteredObject,flagOverwrite:%Boolean=0 TECH.ObjectUtils.KopieerWaardenResultaat "_Object2.%ClassName(1)) do ##class(TECH.ExceptionHandler).Throw(Exception) } #dim arrProperties As %String = "" do arrProperties^vhLib.Class(Object1.%ClassName(1),.arrProperties,"A","A","A") set itProperties = ##class(TECH.ArrayOneDimIterator).%New(.arrProperties) while itProperties.HasNext() { #dim PropertyInfo As %List = itProperties.Next() #dim PropertyName As %String = itProperties.Key() #dim WaardePropertyObject1 As %String = ..GeefPropertyWaarde(Object1,PropertyName) #dim WaardePropertyObject2 As %String = ..GeefPropertyWaarde(Object2,PropertyName) #dim PropertyIsCollection As %String = $listget(PropertyInfo,$$$fldCollection) #dim MagOverschrijven As %Boolean = 0 if ..WaardenVerschillen(WaardePropertyObject1 , WaardePropertyObject2 , PropertyIsCollection ) { if ##class(TECH.ClassUtils).IsDataType($listget(PropertyInfo,$$$fldClassName)) { if $length(PropertyIsCollection) { set MagOverschrijven = ..MagOverschrijven(PropertyName , (WaardePropertyObject1.Count()=0) , (WaardePropertyObject2.Count()=0), flagOverwrite) if MagOverschrijven { if (WaardePropertyObject2.Count()>0) { if PropertyIsCollection = "list" set WaardePropertyObject1 = ##class(TECH.ListUtils).CopyListOfDataTypes(WaardePropertyObject2) if PropertyIsCollection = "array" set WaardePropertyObject1 = ##class(TECH.ListUtils).CopyArrayOfDataTypes(WaardePropertyObject2) } } } else { set MagOverschrijven = ..MagOverschrijven(PropertyName , (WaardePropertyObject1="") , (WaardePropertyObject2="" ) , flagOverwrite) if MagOverschrijven { set WaardePropertyObject1 = WaardePropertyObject2 } } if MagOverschrijven { do ..ZetPropertyWaarde(Object1,PropertyName,WaardePropertyObject1) do ..ZetGewijzigdeProperty(PropertyName) } } } } Quit ..GeefKopieerWaardenResultaat() ]]> Value1:%CacheString,Value2:%CacheString,PropertyIsCollection:%Boolean PropertyName:%String,OudeWaardeIsLeeg:%Boolean,NieuweWaardeIsLeeg:%Boolean,flagOverwrite:%Boolean 1 %Boolean 1 TECH.ObjectUtils.KopieerWaardenResultaat Object:%Library.Base,Property:%String 1 0 %CacheString Object:%Library.Base,Property:%String,Value:%CacheString 1 0 PropertyName:%String 1