The "repr(ex)" Python method also prints a bit more information about the exception:

        except Exception as ex:
            print("Exception: %s" % str(ex))
            print(repr(ex))

The "repr(ex)" Python method also prints a bit more information about the exception (e.g., the type of Error):

Exception: division by zero
ZeroDivisionError('division by zero')

If the goal is to have the method return an instance of %Exception.PythonException, the method could create one with "_New(str) method, supplying the "ex" string as the "str" parameter. The "except" clause would then return the instance.

Not sure of the syntax, but it's likely something like this:

newex = iris.cls('%Exception.PythonException')._New(ex) 
return newex

If, instead of returning that exception, the method would rather "raise" the exception,  there are some helpful hints here:

https://stackoverflow.com/questions/2052390/manually-raising-throwing-an...

Hello Rochdi,

Have you resolved this? If not, are you using a report that is derived from %ZEN.Report.reportPage? If you are, you can use the "GenerateReport()" instance method to create an "xlsx" Excel file, which can then be exported to ".csv" after opening it from Excel.

https://docs.intersystems.com/latest/csp/documatic/%25CSP.Documatic.cls?...

Alternatively, the following code highlights how to generate a CSV file containing the results of a query:

ClassMethod ExportCSV(/* some args */) As %String [ ZenMethod ]
{
/* get a results set named "rs" from a query (sql statement, or, in this example a query class):
Set rs=##class(%ResultSet).%New("<some query class")
Do rs.Prepare()
Do rs.Execute(/*some args*/)
*/
// Define the delimeter to be used in CSV file (usually comma)
Set Delim = ","

// Define the file and its name
Set File = ##class(%FileCharacterStream).%New()
Set Filename = "filename.csv"
Set File.BOM = $C(239,187,191)
Set File.Filename = "C:\temp\"_Filename 
Set File.TranslateTable = "UTF8" 
// Define the names of the columns (should match up with the values in each row of the result 
// set. In this example, there are 3 columns
Set FileHeader = $LB("Name","Rank","","SerialNumber")

Do File.WriteLine($ZCVT($LTS(FileHeader, Delim), "O", "UTF8")) 
While rs.%Next()
{
    Set Row = ""
    For = 1:1:$LL(FileHeader) 
    {
        Set col = $LG(FileHeader, i) 
        Set Data = rs.%Get(col)
        // Replace characters that may mess up the CSV file (e.g., embedded commas in a data field)
        Set Data = $REPLACE(Data, $C(13), " ")
        Set Data = $REPLACE(Data, $C(10), " ")
        Set Data = $REPLACE(Data, """", "'")
        Set:(Data [ ",") Data = """"_Data_"""" 
        Set Data = $ZCVT(Data, "O", "UTF8") 
        // Add the datum to the row's list
        Set Row = Row_$LB(Data)
     } 
     // Each element in the "row list" is written, separated by "Delim" (comma) on one line 
     // in the file 
     Do File.WriteLine($LTS(Row, Delim))
} 
// Set attributes of the file for easier reading by the right apps later.
Do File.SetAttribute("ContentType","application/octet-stream; charset=utf-8")
Do File.SetAttribute("ContentDisposition","attachment; filename="""_Filename_"""")
Do File.SetAttribute("Expires",600)
    Do File.SetAttribute("Content-Length",File.Size)
        
    Do File.%Save()
 // Return the name of the full path to the CSV file
 Quit File.Filename
}

Please confirm if this is helpful or if you have other questions.

Thank you 

Hi Pravin,

I'm 98% sure that a custom component that uses the %ZEN textarea as a superclass, adds a "maxlength" Property, and overwrites the %DrawHTML() method is the best (only?) way to go. Here's a code smippet that worked (but you likely already have such code :-)).

<codesnippet>

Class ZenApp.Component.TextArea Extends %ZEN.Component.textarea 
{
........

/// Maximum number of characters allowed within the textarea control.
Property maxlength As %ZEN.Datatype.integer(MINVAL = 0);


Method %DrawHTML()
{

.....

&html<<textarea id="#(..%MakeId("control"))#class="#(..controlClass)##(..%Attr("title",..title))# #(..%Name())# #(..%Attr("cols",..cols))# #(..%Attr("maxlength",..maxlength))# #(..%Attr("rows",..rows))# #(disabled)# #(ro)# #(spellcheck)# #(tStyle)# #(..%Attr("tabindex",..tabIndex))# #(..%GetEventHandlers())#>#(tValue)#</textarea>>
}

 

</codesnippet>

 

Hope this helps.

Jean

Thank you Jamie, your suggestion has helped me make progress in getting the Atelier plugin into my Eclipse Neon instance on WIndows 7 machine. After clicking "Select All" to get "Atelier IDE" and "Atelier IDE HDPI Support" from the "Uncategorized" tree of Available Software and clicking "Next",  I now see an "Install Remediation Page" with 3 options; any suggestions as to what is best?

I can't seem to insert a JPEG file or paste a clipboard image into this editor, but the 3 options from the Page are:

"Keep my installation the same and modify the items being installed to be compatible."

"Update my installation to be compatible with the items being installed"

"Show original error and build my own solution"

Thanks again.

Jean