go to post Sylvain Guilbaud · Sep 26, 2023 Wonderful photograph !! NB to all future participants: having a beard has never been a criterion facilitating access to the first prize 🏆
go to post Sylvain Guilbaud · Sep 26, 2023 Thanks for the advice @Dmitry Maslennikov I added direct links to the 4 subsections
go to post Sylvain Guilbaud · Sep 25, 2023 15 applications of real quality 😀 Thanks to all participants for their involvement and ideas.
go to post Sylvain Guilbaud · Sep 18, 2023 Hi @Jimmy Christian another simpler sample : XData DTL [ XMLNamespace = "http://www.intersystems.com/dtl" ] { <transform sourceClass='formation.RM.personne.Batch' targetClass='common.person' create='new' language='objectscript' > <foreach property='source.Records()' key='k1' > <assign value='source.Records.(k1).Nom' property='target.names.(k1)' action='set' /> </foreach> </transform> }
go to post Sylvain Guilbaud · Sep 18, 2023 Hi @Jimmy Christian, the syntax in XML is : XData DTL [ XMLNamespace = "http://www.intersystems.com/dtl" ] { <transform sourceClass='formation.RM.personne.Batch' targetClass='formation.msg.mysql.batch' create='new' language='objectscript' > <foreach property='source.Records()' key='k1' > <subtransform class='formation.transfo.personne' targetObj='target.list.(k1)' sourceObj='source.Records.(k1)' /> </foreach> </transform> }
go to post Sylvain Guilbaud · Sep 13, 2023 Looking forward to seeing who the winners of the InterSystems awards are 😀
go to post Sylvain Guilbaud · Sep 12, 2023 IRISAPP>set obj1 = ##class(dc.data.Country).%OpenId(1) IRISAPP>set obj2 = obj1.%ConstructClone(1) IRISAPP>w obj1=<OBJECT REFERENCE>[4@dc.data.Country] obj2=<OBJECT REFERENCE>[5@dc.data.Country] IRISAPP>set obj2.name="ANDORRA" IRISAPP>w obj1.name Andorra IRISAPP>w obj2.%Id() IRISAPP>w obj1.%Id() 1
go to post Sylvain Guilbaud · Sep 12, 2023 Use %ConstructClone (from %RegisteredObject) Method %ConstructClone(deep As %Integer = 0, ByRef cloned As %String, location As %String) as %RegisteredObject Clone the current object to a new object. If deep is 1 then this does a deep copy which will also copy any subobjects and if deep is 0 then it will create another reference to any subobjects and increment the reference count appropriately. It returns the new cloned object. Note that even if deep=0 when you clone a parent object in a parent child relationship or a one object of a one to many relationship then it will construct clones of all the child/many objects. This is because a child/many object can only point at a single parent and so if we did not create a clone of these then you would have a relationship with zero items in it. If you really just want to clone the object without these child/many objects then pass deep=-1 to this method. After the clone is constructed it will call %OnConstructClone(object,deep,.cloned) on the clone if it is defined so that you can perform any additional steps e.g. taking out a lock. This works just the same way as %OnNew() does. The object is the oref of the original object that was cloned. The cloned array is just used internally when doing a deep clone to prevent recursive loops, do not pass anything in at all for this parameter on the initial call. If you write a %OnConstructClone and from here you wish to call %ConstructClone on another object pass in the cloned array, e.g. 'Do oref.%ConstructClone(1,.cloned)' so that it can prevent recursive loops. The location is used internally to pass the new location for stream objects.
go to post Sylvain Guilbaud · Sep 12, 2023 It even works with all objects in a namespace : GRANT SELECT ON * TO ROLE|USER
go to post Sylvain Guilbaud · Sep 12, 2023 Thanks to the Developer Community Team for allowing us to communicate together.
go to post Sylvain Guilbaud · Sep 11, 2023 Many thanks for pointing me towards this feature that I simply hadn't thought of.
go to post Sylvain Guilbaud · Sep 11, 2023 And the cool thing is that as soon as your user has received a GRANT on a schema, when you edit afterwards the user in the Security Management portal, you can see on the SQL Tables tab all the tables appear as they are created :