go to post Vitaliy Serdtsev · Dec 7, 2021 Try the following: enable "Retain cached query source" as described above compile your class/project with addition flags "k /compileembedded=1" (see Validating Embedded SQL Code) open the code of the generated program from the Studio or System Portal like %sqlcq.[YOURNAMESPACE].xETs3uMe2Ehn2LY5inuZiK4xgwnS.1.int Note: at the same time, do not forget to specify checkbox for system items Profit!
go to post Vitaliy Serdtsev · Dec 6, 2021 That's what I expected to see. But need remember that This method is only available for stored properties. In other words, if the storage changes tomorrow, will have to rewrite a bunch of code.
go to post Vitaliy Serdtsev · Dec 6, 2021 I meant the length of the code. I can write like this: <..> select a->b->c->d into :r from table where %ID=:id <..>Can you give a complete code example for a->b->c->d using GetStored?
go to post Vitaliy Serdtsev · Dec 3, 2021 And if you need to get a->b->c->d and they at the same time can be null?
go to post Vitaliy Serdtsev · Dec 3, 2021 See this. Note: For Caché, there will be a "\Intersystems\Cache\" instead of "\Intersystems\IRIS\". Also note that for the 32-bit version, the paths in the registry will be slightly different from those specified in the example.
go to post Vitaliy Serdtsev · Dec 3, 2021 stop IRIS close IRIS Launcher (aka Cube) open regedit (run as Administrator) rename instance name (let's say "ABC") [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Intersystems\IRIS\Configurations\ABC] [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Intersystems\IRIS\Configurations\ABC\Manager\PreferredServer] @="ABC" run IRIS Launcher (aka Cube) and rename server names. If you want, you can also do this through the registry: [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Intersystems\CACHE\Servers\ABC] [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Intersystems\CACHE\Servers] "DefaultServer"="ABC" start IRIS Profit! Now the instance name is ABC.
go to post Vitaliy Serdtsev · Dec 3, 2021 Another option /// This sample persistent class represents an employee.<br> Class Sample.Employee Extends Person { ... /// The company this employee works for. Relationship Company As Company [ Cardinality = one, Inverse = Employees ]; Property Cname As %String [ Calculated, SqlComputeCode = {n id,r s id={%%ID} &sql(select Company->Name into :r from Sample.Employee where %ID=:id) s {*}=r}, SqlComputed ]; ... }
go to post Vitaliy Serdtsev · Nov 24, 2021 In this case, you should wait for IRIS 2021.2 with built-in Python and use Jinja directly. In the meantime, there is the following: Developing Custom Tags Making Your Own Studio Templates
go to post Vitaliy Serdtsev · Nov 23, 2021 There is a ready-made method for this: getFileslink Usage example: s path="C:\Temp" s pExtension=1 s pExtension(1)="*" s pTempNode=$i(^CacheTemp) k ^CacheTemp(pTempNode) d ##class(%SQL.Util.Import).getFiles(path,.pExtension,pTempNode,1) m dirlist=^CacheTemp(pTempNode) k ^CacheTemp(pTempNode) zw dirlist
go to post Vitaliy Serdtsev · Nov 19, 2021 It's okay, I already have a minus. It looks like this is my last comment here. UPD: w $$Iso8601ToTimeStamp("2021-10-22T08:00:00+0900"),! w $$Iso8601ToTimeStamp("2021-11-04T11:10:00+0100"),! w $$Iso8601ToTimeStamp("2021-11-04T11:10:00+0200"),! w $$Iso8601ToTimeStamp("2021-11-04T11:10:00-0140"),! Iso8601ToTimeStamp(ts) { s r=##class(%TimeStamp).XSDToLogical($e(ts,1,22)_":"_$e(ts,*-1,*)) w r," => " q $zdth(r,3) }Output: USER>do ^test 2021-10-21 23:00:00 => 66038,82800 2021-11-04 10:10:00 => 66052,36600 2021-11-04 09:10:00 => 66052,33000 2021-11-04 12:50:00 => 66052,46200
go to post Vitaliy Serdtsev · Nov 4, 2021 I know, that's why I gave a link to the documentation so that the author would do the rest of the work himself, since ISO 8601 has many forms. Here is another variant of the ISO8601ToDateTime method.
go to post Vitaliy Serdtsev · Nov 4, 2021 $zdth() USER>w $zdth("2021-11-04T11:10:00+0100",3,5) 66052,40200
go to post Vitaliy Serdtsev · Nov 3, 2021 In this case, you can do this: SELECT %TSQL.ZRAND(%ID+1e16) rnd, ID, Citizenship, DOB, FirstName, Gender, IDNumber, LastName, PatientNumber, PhoneNumber FROM CDR.PatientType of rnd - DOUBLE. Of course, you can convert it to NUMERIC or STRING
go to post Vitaliy Serdtsev · Nov 3, 2021 For debugging purposes and further query optimization, why not? I have a legacy code that I need to optimize.
go to post Vitaliy Serdtsev · Nov 3, 2021 Try calling the ClearBuffers in the GLOBUFF system routine, e.g.: USER>d ClearBuffers^|"%SYS"|GLOBUFF() Removed 65303 blocks
go to post Vitaliy Serdtsev · Nov 3, 2021 Try Built-in Modal Groups E.g.: Class dc.test Extends %ZEN.Component.page { XData Contents [ XMLNamespace = "http://www.intersystems.com/zen" ] { <page xmlns="http://www.intersystems.com/zen"> <tablePane id="tp" sql="select 1 id, '2021-11-03' DT union select 2, '2022-01-24'"> <column colName="id"/> <column colName="DT" link="javascript:zenPage.modalGroupCalendar('#(%query.DT)#');"/> </tablePane> </page> } ClientMethod modalGroupCalendar(val) [ Language = javascript ] { var group = zenPage.createComponent('modalGroup'); group.setProperty('onaction','zenPage.calendarAction(group);'); group.show('Select a date:','calendar',val); } ClientMethod calendarAction(group) [ Language = javascript ] { alert("You selected: " + group.getValue()); // SaveOnServer(); ! } }
go to post Vitaliy Serdtsev · Nov 3, 2021 Try this: Class dc.test Extends %ZEN.Component.page { XData Contents [ XMLNamespace = "http://www.intersystems.com/zen" ] { <page xmlns="http://www.intersystems.com/zen"> <tablePane id="tp" sql="select 1 id, 'a' FollowUp union select 2,'b'"> <column colName="id"/> <column colName="FollowUp" header="FollowUp Comments" width="9%" style="text-align:left;" OnDrawCell="txtFollowUp"/> </tablePane> </page> } Method txtFollowUp( pTable As %ZEN.Component.tablePane, pName As %String, pSeed As %String) As %Status { &html<<textarea name="followup" rows="3" style=" width: 95%;" onchange="zenPage.saveFollowUp(this.value,#(%query("id"))#);">#(%query(pName))#</textarea>> Quit $$$OK } ClientMethod saveFollowUp( val, id) [ Language = javascript ] { zenAlert(val,' <-> ',id); } }
go to post Vitaliy Serdtsev · Nov 3, 2021 This functionality is available when working with ActiveX (however, ActiveX is not recommended for use in new applications): Using Callback Functionality SetOutput() PS: in the Caché distribution there was even a special library DelphiCallback.dll for Delphi, an example of working with which is in my blog.