Hi Edmara!

Which IRIS version are you trying?

I did a test using the version "IRIS for UNIX (Ubuntu Server LTS for x86-64 Containers) 2022.2 (Build 368U) Fri Oct 21 2022 17:18:04 EDT" and all worked fine.

Please, checkout the example below on your IRIS version. It shows the index global value (^dado.TblTesteI) in order to get more visibility of what is going on.

dado.TblTeste:

 
Spoiler

dado.TblFieldOne:

 
Spoiler

dado.TblFieldTwo:

 
Spoiler

dado.TblFieldThree:

 
Spoiler

Output of OpenCompositeIndexTest() method:

IRISAPP>d ##class(dado.TblTeste).OpenCompositeIndexTest()
IRIS version: IRIS for UNIX (Ubuntu Server LTS for x86-64 Containers) 2022.2 (Build 368U) Fri Oct 21 2022 17:18:04 EDT

Cleaning up tables...
Populating tables...

---
Test with FieldThreeId using SQL DML:
Ok
Index global: 
^dado.TblTesteI("idxFieldOneFieldTwoFieldThree",1,2,3,1)=""

---
Test with no FieldThreeId using SQL DML:
Ok
Index global: 
^dado.TblTesteI("idxFieldOneFieldTwoFieldThree",1,2,-100000000000000,2)=""
^dado.TblTesteI("idxFieldOneFieldTwoFieldThree",1,2,3,1)=""

---
Test with no FieldThreeId using object:
Ok
Index global: 
^dado.TblTesteI("idxFieldOneFieldTwoFieldThree",1,2,-100000000000000,2)=""
^dado.TblTesteI("idxFieldOneFieldTwoFieldThree",1,2,3,1)=""
^dado.TblTesteI("idxFieldOneFieldTwoFieldThree",2,1,-100000000000000,3)=""

HTH,

José

For those who are looking for unziping features, Embedded Python (for IRIS 2021.2+) allows you to use zipfile Python lib. For instance:

ClassMethod UnZip(pZipFileName As %String, pExtractToDir As %String) [ Language = python ]
{
    #; solution based on this one: https://stackoverflow.com/a/3451150/345422
    import zipfile
    with zipfile.ZipFile(pZipFileName, 'r') as zip_ref:
        zip_ref.extractall(pExtractToDir)
}

Or

ClassMethod UnZip2(pZipFileName As %String, pExtractToDir As %String)
{
    Set zipfile = $SYSTEM.Python.Import("zipfile")
    Do zipfile.ZipFile(pZipFileName, "r").extractall(pExtractToDir)
}

Tested on iris-ml-community:2021.2.0.617.0-zpm

Hi!

Thanks for your code, but I tried it and can't get a file in the directory in the end. In order to get it working, I had to call the method %Save() before the %Close() one:

...
d file.CopyFrom(request.HttpResponse.Data)
d file.%Save()
w file.%Close()

I found that by this article by @Gevorg Arutiunianhttps://community.intersystems.com/post/save-file-using-nethttprequest