objeto programable del informe actualHola,
¿Cuál es la mejor manera de obtener el objeto programable del informe actual?
Si es un objeto Graph Builder, puedo usarlo
gb = Current Report()["Graph Builder"] << get scriptable object
Esto es sorprendentemente sólido, pero solo funciona con objetos de Graph Builder. Funciona incluso cuando el usuario cambia el título.
Si no hay Graph Builder, puedo probar
so = Current Report()[Outline Box( 1 )] << get scriptable object
Funcionará si no hay ningún filtro de datos local .
Sin conmutador de columnas [ah, el conmutador de columnas es un ColumnSwitcherContextOutlineBox , no un OutlineBox ]
y ningún usuario define el Dashboard [ah, el Dashboard se crea a través de TabPageBox , no de OutlineBox ]
Para el caso del Filtro de Datos Locales , pude consultar el título:
ob = Current Report()[Outline Box( 1 )];
If( (ob << Get Title) == "Local Data Filter",
ob = Current Report()[Outline Box( 2 )]
);<BR />ob << get scriptable object;
Este enfoque solo funciona con la configuración de idioma inglés y solo si el usuario no cambió el título de OutlineBox .
Entonces, es mejor verificar si el objeto programable es un filtro de datos:
Try (so = Current Report()[Outline Box( 1 )] << get scriptable object;
if (Char(Head(so)) == "Data Filter[]" ,
so = Current Report()[Outline Box( 2 )] << Get Scriptable Object),
Caption("failed to get a scriptable object") // user defined Dashboard
)
Automatización y scriptingRe: objeto programable del informe actualUtilice el atributo XML "@helpKey"
Names Default To Here(1);
obs = Current Report() << XPath("//OutlineBox[@helpKey and not(@helpKey = 'Data Filter')]");
If(N Items(obs) > 0,
obj = obs[1] << Get Scriptable Object;
Show(obj);
);
Write();
La consulta XPath puede necesitar modificaciones adicionales según dónde deba funcionar. Tenga en cuenta que con XPath puede encontrarse con problemas en los que la consulta XPath de JMP no pueda manejar el XML ( ¿Cómo habilitar XML_PARSE_HUGE para << XPath()? ).
Re: objeto programable del informe actualAh, qué bien. Gracias.
Re: objeto programable del informe actualToda la cuestión puede resultar discutible si en lugar de utilizar
Distribution(
Continuous Distribution( Column( :height ), Process Capability( 0 ) ),
Local Data Filter
);
ob = Current Report()[Outline Box( 1 )];
If( (so << Get Title) == "Local Data Filter",
ob = Current Report()[Outline Box( 2 )]
);
ob << get scriptable object;
Si el objeto programable se obtiene cuando se ejecuta la plataforma
ob = Distribution(
Continuous Distribution( Column( :height ), Process Capability( 0 ) ),
Local Data Filter
);
Incluso si se ejecutan múltiples plataformas y se hace referencia al objeto programable mediante la misma variable JSL, se puede usar una lista JMP simple para reunir el objeto programable, evitando toda la confusión que Current Report() puede generar.
Utilizando la tabla de datos de muestra Big Class, el siguiente script ilustra cómo la obtención del objeto programable en el punto de ejecución evita el problema de Current Report()
names default to here(1);
dt=current data table();
objectList = {};
dis = Distribution(
Continuous Distribution( Column( :height ), Process Capability( 0 ) )
);
insert into(objectList, dis);
show(current report()[outlinebox(1)]<<GET title=""></GET>
<P>Un elemento de la lista de deseos para una nueva función llamada</P>
<CODE class=" language-jsl"><< Get Current Report Scriptable Object
Podría estar justificado
Re: objeto programable del informe actualMi aplicación principal:
Un comando para sintonizar/interactuar con cualquier informe "existente".
Entonces no hay posibilidad de llenar una lista.
@txnelson wrote:
Un elemento de la lista de deseos para una nueva función llamada
<< Get Current Report Scriptable Object
Podría estar justificado
OK:
mensaje: Obtener objeto programable del informe actual
ob & so -> corregido en el post principal