go to post Eduard Lebedyuk · Jun 21, 2017 Can you execute in SMP: SELECT cast('0x1F' AS varbinary(1549)) Not sure why 0x1F8B08000000... is unescaped though.
go to post Eduard Lebedyuk · Jun 19, 2017 That was fast.I'm assuming you don't want spoilers here beyond that?Yes, for now.
go to post Eduard Lebedyuk · Jun 19, 2017 I would like to, on every file change export the whole project to XMLWhat do you want to achieve with that?
go to post Eduard Lebedyuk · Jun 18, 2017 Then stored sql procedures/custom queries or result sets are the way to go.You'll need to write a method that returns what you need and expose it to SQL via one of the abovementioned methods.
go to post Eduard Lebedyuk · Jun 17, 2017 You can project collection property as a child table. Property MyList as list of Object(STORAGEDEFAULT="array"); Note that it changes class storage, so existing data should be moved to the correct new place. Several months ago I wrote a small utility class to accomplish exactly that. Or if you don't have a lot of different classes and data dependencies, you can just export to XML, add STORAGEDEFAULT and import XML.
go to post Eduard Lebedyuk · Jun 15, 2017 Is it possible to change underlying data model so that 1 row = 1 main object? Class UserPrefs { Property Username; /// Color/Number are keys, and this can be indexed Property Preferences As Array Of %String(SQLPROJECTION = "table/column"); Parameter ROWLEVELSECURITY = 1; ///Updated for each row when the property 'Preferences' changes Property %READERLIST As %String [ SqlComputeCode = {set {*} = ##class(Users).%SecurityPolicy()}, SqlComputed, SqlComputeOnChange = Preferences ]; } You can use SQL to insert into child table. Not sure if it would actually trigger a %READERLIST recalculation (maybe try %%INSERT) but worth a try.
go to post Eduard Lebedyuk · Jun 15, 2017 16.2 has %ZEN.Auxiliary.altJSONProvider, which has same method signatures but may be preferable (faster).
go to post Eduard Lebedyuk · Jun 13, 2017 Traced stuff to %SOAP.WebBase and for example in WriteSOAPHeaders there are these lines: $$$XMLSetBuffer(" </"_..#SOAPPREFIX_":Header>") $$$XMLWriteLine I guess there's really no way to remove new lines without a very heavy customization.
go to post Eduard Lebedyuk · Jun 13, 2017 Using SQLComputeCode and SQLComputeOnChange %READERLIST property is stored but gets recalculated on every SQL and Object INSERT/UPDATE/%Save: Class Utils.RLS Extends %Persistent { Parameter ROWLEVELSECURITY = 1; Property %READERLIST As %String [ SqlComputeCode = {set {*} = ##class(Utils.RLS).GetAccess({%%ID})}, SqlComputed, SqlComputeOnChange = (%%INSERT, %%UPDATE) ]; Property data As %String; ClassMethod GetAccess(Id) As %String { return:Id>3 "_SYSTEM" return "%All" } /// do ##class(Utils.RLS).Fill() ClassMethod Fill(N = 5) { do ..%KillExtent() for i=1:1:N { &sql(insert into Utils.RLS(data) values(:i)) } zw ^demo.testD,^demo.testI do ##class(%SQL.Statement).%ExecDirect(,"select * from "_$classname()).%Display() }
go to post Eduard Lebedyuk · Jun 13, 2017 Target system is very fastidious about XML. I aim to eliminate all possible variables that may affect XML processing.
go to post Eduard Lebedyuk · Jun 13, 2017 What's the use case for iterating over all (or even a big slice of) objects?
go to post Eduard Lebedyuk · Jun 13, 2017 Custom queries can be used. Check the examples there. Or you can just iterate over data global and call %OpenId.
go to post Eduard Lebedyuk · Jun 12, 2017 To get user/pass? Sure: set sc = #class(Ens.Config.Credentials).GetCredentialsObj(.cred, "caller.class", "Ens.Config.Credentials", "CredentialsId") write cred.Username write cred.PasswordGet()