Probably the web server is only directing requests with a .csp extension to IRIS.Because the URL of the REST service does not end in .csp it shows the 404 error.
In my case, to solve this it was necessary to add the "CSP On" in httpd.conf of the web server, example:

<Location "/REST/CRM/">
    CSP On
    SetHandler csp-handler-sa
</Location>

Hello Maik


Perhaps using the command "zenSynchronousMode = 1" will solve your problem. It tells ZEN to call the methods synchronously, so it will only call your method when refreshTable () is finished. Stays like this:
zenSynchronousMode 1;
refreshTable();
initializeTableFeatures();
zenSynchronousMode
= 0; //returns to the original value
 

Hello Guilherme
I have already done something like this yes. To work it is necessary to place a select that returns only 1 result in the <report> tag. And in my case I also needed to place a <group> below the <group> where the CreateResultSet is. Stays like this:
XData ReportDefinition [ XMLNamespace = "http://www.intersystems.com/zen/report/definition]
{
<report xmlns="http://www.intersystems.com/zen/report/definitionname="rReport" sql="Select TOP 1 ID FROM anytable">
 
<group name="gTest1" OnCreateResultSet="CreateRS1">
     <group name="gTest1A">
        <attribute name="name"  field='name'/>
   
 </group>
 </group>
 
 <group name="gTest2" OnCreateResultSet="CreateRS2">
     <group name="gTest2B">
        <attribute name="name"  field='name'/>
   
 </group>
 </group>

You can use pdfbox which is already used by ZEN for some pdf conversions. To make a pdf require a password, just run this command with $ZF(-100):
java -cp /opt/cachesys/fop/lib/pdfbox-app-1_7_1.jar org.apache.pdfbox.Encrypt -U 12345 /arquivos/file.pdf

It didn't work. It shows an UNDEFINED error in the %source variable. It's strange, we imagine that %source is an object that stores the fields, but it isn't; we can't access the %source variable directly.