Histórico da Página
HTML |
---|
<div id="main-content" class="wiki-content group"> <script type='text/javascript'> //<![CDATA[ AJS.toInit(function() { if (Cloak) { Cloak.closeHTML = "<span class=\'cloakDefaultClose\'/>"; Cloak.openHTML = "<span class=\'cloakDefaultOpen\'/>"; Cloak.toggleZone = true; Cloak.memoryDuration = 0; Cloak.memoryPrefix = "contentId:108661156"; Cloak.memoryPath = "/"; } });// ]]> </script> <script type='text/javascript'> //<![CDATA[ AJS.toInit(function() { if (jQuery.composition && jQuery.composition.deck) { jQuery.composition.deck.memoryDuration = 0; } });// ]]> </script> <h1 id="id-5.Widgetdeconsultarápida-Objetivo"> <span style="color: rgb(0, 51, 102);">Objetivo<>Objective</span> </h1> <p> LaQuick consultaquery rápidais esresponsible responsablefor deshowing presentarthe aluser usuariodata losof datosindicators deto indicadoresbe definidosdefined porby lasthe áreasbusiness deareas negociofor paraeach cadaof unothe deTOTVS los ERPs TOTVS. La obtención de estas informaciones esThis realizada a través de servicios REST implementados por cada uno de los segmentosinformation is obtained through REST services implemented by each of the segments. <span style="font-size: 10.0pt; line-height: 13.0pt;">El>The <em>widget</em>quick dequery consulta<em>widget</em> rápidawill serábe semejantesimilar alto dethe la figura a continuaciónfigure below: </span> </p> <p> <span style="font-size: 10.0pt; line-height: 13.0pt;"><img class="confluence-embedded-image image-center" width="600" src="http://tdn.totvs.com/download/attachments/108661156/QVWidget.jpg?version=1&modificationDate=1408537173000&api=v2" data-image-src="http://tdn.totvs.com/download/attachments/108661156/QVWidget.jpg?version=1&modificationDate=1408537173000&api=v2"></span> </p> <h1 id="id-5.Widgetdeconsultarápida-Cadastrandoasconsultas"> <span style="color: rgb(0, 51, 102);">Registro>Registering de consultas<queries</span> </h1> <p> ElQuick registroqueries demust consultabe rápidaregistered debethrough realizarsethe a través del formularioform <strong>FRM0015 <strong>FRM0015 - Indicadores<Indicators</strong>. EnThis esteregistration registromust es necesario llenar con la información de la consultabe filled out with the query information. </p> <div class="aui-message warning shadowed information-macro"> <span class="aui-icon icon-warning">Icon</span> <div class="message-content"> <p style="text-align: center;">Para que sea posible la>For the query to be viewed in visualizaciónFluig, deit lamust consulta rápida en el Fluigbe released, la misma debe estar liberadathat is, esits decir,development el desarrollo de la misma debe ser finalizada amust be travéscompleted dethrough lathe herramientaGOLD GOLDtool.</p> </div> </div> <p> </p> <p> </p> <blockquote> <p>El<p>The name nombreof dethe laquery consultamust debefollow seguirthe elstandard estándarcomposed compuestoof porthe elLogix código del sistema Logixsystem code, lathe letraletter "i" yand lathe secuenciaindicator deidentification identificación del indicadorsequence.</p> </blockquote> <p> <img class="confluence-embedded-image image-center" src="http://tdn.totvs.com/download/attachments/108661156/indicador.jpg?version=1&modificationDate=1404247516000&api=v2" data-image-src="http://tdn.totvs.com/download/attachments/108661156/indicador.jpg?version=1&modificationDate=1404247516000&api=v2"> </p> <h2 id="id-5.Widgetdeconsultarápida-Desenvolvimento"> <span style="color: rgb(0, 51, 102);">Desarrollo<>Development</span> </h2> <p> <span style="color: rgb(0, 0, 0);">Después>After decreation, la creación, debethe 4GL desarrollarsesource must labe fuentedeveloped 4GLwith conthe lasdefault funcionesfunctions estándaresfor paraquick laquery ejecución de la consulta rápida enexecution on Fluig. </span><span style="color: rgb(0, 0, 0); font-size: 10.0pt; line-height: 13.0pt;">Actualmente>Currently, tresthree funcionesfunctions sonare necesariasrequired parafor cada indicador, siendoeach indicator:</span> </p> <ol> <li><span style="color: rgb(0, 0, 0); font-size: 10.0pt; line-height: 13.0pt;"><strong>START:</strong> funciónfunction responsableresponsible porfor retornarreturning datosinitial inicialesquick de la consulta rápidaquery data;</span></li> <li><span style="color: rgb(0, 0, 0); font-size: 10.0pt; line-height: 13.0pt;"><strong>SEARCH:</strong> funciónfunction responsableresponsible parafor retornarreturning los datos de la consultaquery data; y<and</span></li> <li><span style="color: rgb(0, 0, 0); font-size: 10.0pt; line-height: 13.0pt;"><strong>AUTO_COMPLETE:</strong> funciónfunction responsableresponsible porfor retornarreturning lasthe informacionesauto-complete delinformation autocompletarof delthe <em>widget</em> enin Fluig.</span><span style="color: rgb(0, 0, 0); font-size: 10.0pt; line-height: 13.0pt;"><br /></span><br /> <span style="color: rgb(0, 0, 0); font-size: 10.0pt; line-height: 13.0pt;"><br /></span></li> </ol> <div class="aui-message warning shadowed information-macro"> <span class="aui-icon icon-warning">Icon</span> <div class="message-content"> <p style="text-align: center;">Hasta>So ahorafar, no será posible it will not be possible to efectuaropen laa llamadadefault delsecurity LOG decall seguridadof estándarLOGIX delin LOGIXthe enquick lasquery funciones de la consulta rápida. Estas consultas no se registran enfunctions. These queries are not registered on the menu and are not elgiven menúpermissions y no se dan permisos en el in the ERP, apenasonly víavia Fluig Identity. Therefore, if Porthe estefunctions motivohave siLOG lassecurity funcionescalls, poseenquery llamadasexecution delwill LOG debe seguridad, la ejecución de la consulta será interrumpidainterrupted.</p> </div> </div> <p> <span style="color: rgb(0, 0, 0); font-size: 10.0pt; line-height: 13.0pt;"><br /></span> </p> <h2 id="id-5.Widgetdeconsultarápida-FunçãodeSTART"> <span style="color: rgb(0, 51, 102);">Función>START de START<Function</span> </h2> <p> <span style="color: rgb(0, 0, 0);">En>In elthe 4GL, elthe nombrename deof estathis funciónfunction debemust tenerhave elthe sufijosuffix <strong>_indicator_start, </strong>nostrong>cannot podráhave parameters poseerand parámetrosmust yreturn deberáa retornarRECORD paravariable elto Fluig unawith variablethe RECORDassembly coninformation lasfor informacionesthe dequick montajequery del <em>widget</em>, desuch as: consulta rápida, como: <</span> </p> <ul> <li><span style="color: rgb(0, 0, 0);">los>the filtrosfilters que sethat podráncan be realizarperformed;</span></li> <li><span style="color: rgb(0, 0, 0);">las>the columnascolumns quethat compondránwill lacompose grillathe congrid loswith datosthe dequery la consultadata;</span></li> <li><span style="color: rgb(0, 0, 0);">la>the listalist de filtrosof predefinidospredefined filters quethat secan podránbe utilizarused; y<and</span></li> <li><span style="color: rgb(0, 0, 0);">la>a listalist conwith elthe nombrenames deof losthe programasprograms quethat secan podránbe ejecutarrun afrom partir de la consultathe query.</span></li> </ul> <h5 id="id-5.Widgetdeconsultarápida-Exemplo"> <span style="color: rgb(0, 51, 102);">Exemplo<>Example</span> </h5> <div class="code panel pdl" style="border-width: 1px;"> <div class="codeContent panelContent pdl"> <pre class="theme: Eclipse; brush: plain; gutter: false" style="font-size: 12px;">#------------------------------# FUNCTION logi1_indicator_start() #------------------------------# DEFINE lr_start RECORD filters ARRAY[2] OF RECORD table_name LIKE frm_column.table_name, column_name LIKE frm_column.column_name END RECORD, columns ARRAY[3] OF RECORD table_name LIKE frm_column.table_name, column_name LIKE frm_column.column_name, can_order SMALLINT END RECORD, selection ARRAY[3] OF RECORD code CHAR(03), label CHAR(50) END RECORD, actions ARRAY[2] OF RECORD code CHAR(08), label CHAR(50) END RECORD END RECORD #Define#Defines lasthe columnasquick dequery filtro de la consulta rápidafilter columns LET lr_start.filters[1].table_name = 'log_grupos' LET lr_start.filters[1].column_name = 'grupo' LET lr_start.filters[2].table_name = 'log_grupos' LET lr_start.filters[2].column_name = 'des_grupo' #Define#Defines lasthe columnasquick de la consulta rápidaquery columns LET lr_start.columns[1].table_name = 'usuarios' LET lr_start.columns[1].column_name = 'cod_usuario' LET lr_start.columns[1].can_order = TRUE LET lr_start.columns[2].table_name = 'usuarios' LET lr_start.columns[2].column_name = 'nom_funcionario' LET lr_start.columns[2].can_order = TRUE LET lr_start.columns[3].table_name = 'usuarios' LET lr_start.columns[3].column_name = 'ind_admlog' LET lr_start.columns[3].can_order = FALSE #Define#Defines cuáleswhich valoresvalues estaránwill enbe lain selecciónfilter de filtrosselection LET lr_start.selection[1].code = '*' LET lr_start.selection[1].label = 'Todos losos usuariosusuários' LET lr_start.selection[2].code = 'S' LET lr_start.selection[2].label = 'SolamenteSomente administradores' LET lr_start.selection[3].code = 'N' LET lr_start.selection[3].label = 'SolamenteSomente usuariosusuários comunescomuns' #Define#Defines cuáleswhich programasprograms podráncan serbe llamadoscalled porby lathe consultaquery LET lr_start.actions[1].code = 'log02700' LET lr_start.actions[1].label = 'UsuariosUsuários' LET lr_start.actions[2].code = 'log02720' LET lr_start.actions[2].label = 'Grupos deldo usuariousuário' RETURN lr_start END FUNCTION</pre> </div> </div> <p> <span style="color: rgb(0, 0, 0); font-size: 10.0pt; line-height: 13.0pt;">La>Execution ejecuciónof the deabove lafunction funciónwill anteriorallow permitiráthe lainitialization iniciaciónof del </the quick query </span><em style="color: rgb(0, 0, 0); font-size: 10.0pt; line-height: 13.0pt;">widget</em><span style="color: rgb(0, 0, 0); font-size: 10.0pt; line-height: 13.0pt;"> deand consultawill rápidacreate yit loaccording crearáto semejantethe a la pantalla a continuaciónscreen below:</span> </p> <p> <span style="color: rgb(0, 0, 0);"><img class="confluence-embedded-image image-center" width="600" src="http://tdn.totvs.com/download/attachments/108661156/QVWIDGET2.jpg?version=1&modificationDate=1408538629000&api=v2" data-image-src="http://tdn.totvs.com/download/attachments/108661156/QVWIDGET2.jpg?version=1&modificationDate=1408538629000&api=v2"></span> </p> <h2 id="id-5.Widgetdeconsultarápida-FunçãodeSEARCH"> <span style="color: rgb(0, 0, 0);"><span style="color: rgb(0, 51, 102);">Función>SEARCH de SEARCH<Function</span></span> </h2> <p> En elIn 4GL, elthe nombrename deof estathis funciónfunction debemust tenerhave elthe sufijosuffix <strong>_indicator_search</strong>, debe tener como parámetroswhich must have the following parameters: </p> <ol> <li>nombre<li>name deof lathe columnafilter decolumn filtroselected seleccionada por el usuarioby user;</li> <li>valor<li>value delof filtrofilter informadoentered porby el usuariouser;</li> <li>valor<li>value delof filtropre-defined predefinidofilter seleccionadoselected;</li> <li>nombre<li>name deof la columna de ordenaciónsorting column;</li> <li>tipo<li>sorting de ordenacióntype;</li> <li>cantidad<li>amount deof líneaslines porper páginapage; y<and</li> <li>número<li>number deof lapages páginaof decurrent consulta actualquery.</li> </ol> <p>Todos<p>All these estosparameters parámetrosmust debenbe serconsidered consideradoswhen alperforming ejecutara laquery consultaon enthe eldata bancobank deand datosthe yreturn elmust retornobe debea serRECORD una variable RECORD conwith:</p> <ol> <li>los datos de la consulta;<li>query data;</li> <li>cantidad<li>total totalamount deof registrosrecords encontradosfound enin elthe bancodata de datosbank;</li> <li>cantidad<li>total amount totalof derecords registrosthat quewill sebe retornaránreturned alto Fluig;</li> <li>número<li>total totalnumber deof páginaspages conformeaccording ato lathe consultaquery efectuadamade; y<and</li> <li>número<li>page denumber laof página actual de consultacurrent query.</li> </ol> <h5 id="id-5.Widgetdeconsultarápida-Exemplo.1"> <span style="color: rgb(0, 51, 102);">Ejemplo<>Example</span> </h5> <div class="code panel pdl" style="border-width: 1px;"> <div class="codeContent panelContent pdl"> <pre class="theme: Eclipse; brush: plain; gutter: false" style="font-size: 12px;">#---------------------------------------------------------------------------------------------------------------# FUNCTION logi1_indicator_search(l_filter_column,l_filter_value,l_selection,l_sort_col,l_sort_order,l_rows,l_page) #---------------------------------------------------------------------------------------------------------------# DEFINE l_filter_column CHAR(50), #Coluna#Filter de filtrocolumn (opcionaloptional) l_filter_value CHAR(300), #Valor#Value delof filtrofilter decolumn la columnaabove anterior (opcionaloptional) l_selection CHAR(01), #Valor#Selected seleccionadovalue enof la lista de filtrosfilter list (opcionaloptional) l_sort_col CHAR(50), #Columna#Sorting de ordenacióncolumn (opcionaloptional) l_sort_order CHAR(04), #Tipo#Sorting de ordenacióntype ASC oor DESC (opcionaloptional) l_rows SMALLINT, #Máximo#Maximum derecords registrosper por páginapage l_page SMALLINT #Página#Current actualsearch de investigaciónpage DEFINE l_sql_stmt CHAR(500), l_sql_count CHAR(500), l_where_clause CHAR(250) DEFINE l_ind SMALLINT, l_position INTEGER DEFINE lr_search RECORD data ARRAY[60] OF RECORD #Lista#List conwith los resultados de la consultaquery results cod_usuario LIKE usuarios.cod_usuario, nom_funcionario LIKE usuarios.nom_funcionario, ind_admlog LIKE usuarios.ind_admlog END RECORD, count SMALLINT, #Total amount of derecords registrosthat quewill sebe retornaránreturned total INTEGER, #Total deamount registrosof encontradosrecords enfound lain consultaquery (sinwithout lapage paginaciónnumber) cpage INTEGER, #Página#Current derecords registros actualpage pages SMALLINT #Total denumber páginasof resultantespages deresulting lafrom consultaquery END RECORD INITIALIZE lr_search.* TO NULL #Verifica#Checks lacolumn columnaand yfilter elentered filtro informado por parámetrofor parameter IF l_filter_column IS NOT NULL AND l_filter_value IS NOT NULL THEN LET l_where_clause = "UPPER(g."||l_filter_column CLIPPED||") LIKE '%"||UPSHIFT(l_filter_value) CLIPPED||"%'" ELSE LET l_where_clause = "1=1" END IF #Adiciona#Adds ela filtroselected conforme seleccionadofilter IF l_selection IS NOT NULL AND l_selection <> "*" THEN LET l_where_clause = l_where_clause CLIPPED," AND u.ind_admlog = '",l_selection CLIPPED,"'" END IF #Monta#Assembles elthe SQL deof lathe consultaquick rápidaquery LET l_sql_stmt = "SELECT DISTINCT", " u.cod_usuario,", " u.nom_funcionario,", " u.ind_admlog", " FROM usuarios u", " LEFT OUTER JOIN log_usu_grupos l", " ON l.usuario = u.cod_usuario", " LEFT OUTER JOIN log_grupos g", " ON g.grupo = l.grupo", " WHERE ",l_where_clause #Assembles #Montathe elCOUNT SQL de COUNT (escannot necesariocontain ser sin ORDER BY) LET l_sql_count = "SELECT COUNT(*) FROM ("||l_sql_stmt CLIPPED||") t" #Atribuye el#Attributes ORDER BY parafor elthe SQLquick de la consulta rápidaquery SQL IF l_sort_col IS NOT NULL AND l_sort_order IS NOT NULL THEN LET l_sql_stmt = l_sql_stmt CLIPPED||" ORDER BY "||l_sort_col CLIPPED||" "||l_sort_order ELSE LET l_sql_stmt = l_sql_stmt CLIPPED||" ORDER BY 1" END IF WHENEVER ERROR CONTINUE PREPARE var_indicator_count FROM l_sql_count WHENEVER ERROR STOP IF sqlca.sqlcode <> 0 THEN CALL QS_consoleDebugMessage(l_sql_count) CALL log0030_processa_err_sql("PREPARE SQL","var_indicator_count",1) RETURN NULL END IF WHENEVER ERROR CONTINUE EXECUTE var_indicator_count INTO lr_search.total WHENEVER ERROR STOP IF sqlca.sqlcode <> 0 THEN CALL log0030_processa_err_sql("EXECUTE SQL","var_indicator_count",1) FREE var_indicator_count RETURN NULL END IF #Cuenta#Counts lathe cantidadnumber deof páginapages quethat resultóthe laquery consultaproduced LET lr_search.pages = LOG_round(lr_search.total/l_rows,0) #Verifica#Checks siof lathe páginapage informadainformed excedióexceeded elthe totalnumber deof páginaspages IF lr_search.pages > 0 THEN IF l_page > lr_search.pages THEN LET lr_search.cpage = lr_search.pages ELSE LET lr_search.cpage = l_page END IF ELSE LET lr_search.pages = 1 LET lr_search.cpage = l_page END IF WHENEVER ERROR CONTINUE FREE var_indicator_count PREPARE var_indicator_search FROM l_sql_stmt WHENEVER ERROR STOP IF sqlca.sqlcode <> 0 THEN CALL QS_consoleDebugMessage(l_sql_stmt) CALL log0030_processa_err_sql("PREPARE SQL","var_indicator_search",1) RETURN NULL END IF WHENEVER ERROR CONTINUE DECLARE cq_indicator_search CURSOR FOR var_indicator_search WHENEVER ERROR STOP IF sqlca.sqlcode <> 0 THEN CALL log0030_processa_err_sql("DECLARE CURSOR","cq_indicator_search",1) FREE var_indicator_search RETURN NULL END IF WHENEVER ERROR CONTINUE OPEN cq_indicator_search WHENEVER ERROR STOP IF sqlca.sqlcode <> 0 THEN CALL log0030_processa_err_sql("OPEN CURSOR","cq_indicator_search",1) FREE var_indicator_search RETURN NULL END IF #Calculates the #Calculaposition laof posiciónthe delcurrent registrorecord actualaccording comoto lathe páginapage yand lathe cantidadamount deof #líneas#lines porper páginapage LET l_ind = 1 LET l_position = ((l_rows * l_page) - l_rows) + 1 WHILE TRUE WHENEVER ERROR CONTINUE FETCH ABSOLUTE l_position cq_indicator_search INTO lr_search.data[l_ind].* WHENEVER ERROR STOP IF sqlca.sqlcode <> 0 THEN IF sqlca.sqlcode <> NOTFOUND THEN CALL log0030_processa_err_sql("FETCH CURSOR","cq_indicator_search",1) END IF EXIT WHILE END IF LET l_ind = l_ind + 1 LET l_position = l_position + 1 #No#Cannot puedeexceed excederthe ellimit límiteof derecords registrosof por páginapage IF l_ind > l_rows THEN EXIT WHILE END IF END WHILE WHENEVER ERROR CONTINUE CLOSE cq_indicator_search FREE cq_indicator_search WHENEVER ERROR STOP LET lr_search.count = l_ind - 1 RETURN lr_search END FUNCTION</pre> </div> </div> <h2 id="id-5.Widgetdeconsultarápida-FunçãoAUTO-COMPLETE"> <span style="color: rgb(0, 51, 102);">Función AUTO-COMPLETE<>AUTO-COMPLETE Function</span> </h2> <p> <span style="color: rgb(0, 0, 0);">En el>In 4GL, elthe nombrename deof estathis funciónfunction debemust tenerhave elthe sufijosuffix <strong>_indicator_autocomplete</strong>, debe tener como parámetrowhich must have the following parameters: </span> </p> <ol> <li><span style="color: rgb(0, 0, 0);">nombre>name deof lacolumn columnaselected seleccionadofor parathe filtrofilter; y<and</span></li> <li><span style="color: rgb(0, 0, 0);">y>value elof valor delfilter filtroentered informado por el usuarioby user.</span></li> </ol> <p> <span style="color: rgb(0, 0, 0);">La>The return devoluciónmust debebe sera unaRECORD variable RECORD conwith:</span> </p> <ol> <li><span style="color: rgb(0, 0, 0);">los datos de la consulta>query data; y<and</span></li> <li><span style="color: rgb(0, 0, 0);">el>total totalamount deof registrosrecords encontradosfound enin elthe banco de datosdata bank..</span></li> </ol> <h5 id="id-5.Widgetdeconsultarápida-Exemplo.2"> <span style="color: rgb(0, 51, 102);">Ejemplo<>Example</span> </h5> <div class="code panel pdl" style="border-width: 1px;"> <div class="codeContent panelContent pdl"> <pre class="theme: Confluence; brush: plain; gutter: true" style="font-size: 12px;">#-------------------------------------------------------------------# FUNCTION logi1_indicator_autocomplete(l_filter_column,l_filter_value) #-------------------------------------------------------------------# DEFINE l_filter_column CHAR(50), #Columna#Filter decolumn filtro (opcionaloptional) l_filter_value CHAR(300) #Valor#Value delof filtrofilter decolumn laabove columna anterior (opcionaloptional) DEFINE l_sql_stmt CHAR(500), l_sql_count CHAR(500), l_where_clause CHAR(250) DEFINE l_ind SMALLINT, l_position INTEGER DEFINE lr_autocomplete RECORD fechadata ARRAY[500] OF CHAR(200), count SMALLINT END RECORD INITIALIZE lr_autocomplete.* TO NULL #Verifica#Checks lacolumn columnaand yfilter elentered filtro informado por parámetrofor parameter IF l_filter_column IS NOT NULL AND l_filter_value IS NOT NULL THEN LET l_where_clause = "UPPER(g."||l_filter_column CLIPPED||") LIKE '%"||UPSHIFT(l_filter_value) CLIPPED||"%'" ELSE LET l_where_clause = "1=1" END IF #Assembles #Montathe elauto-complete SQLof delthe autocompletarSQL LET l_sql_stmt = "SELECT g.",l_filter_column CLIPPED, " FROM log_grupos g", " WHERE ",l_where_clause CLIPPED, " ORDER BY 1" WHENEVER ERROR CONTINUE PREPARE var_indicator_autocomplete FROM l_sql_stmt WHENEVER ERROR STOP IF sqlca.sqlcode <> 0 THEN CALL QS_consoleDebugMessage(l_sql_stmt) CALL log0030_processa_err_sql("PREPARE SQL","var_indicator_autocomplete",1) RETURN NULL END IF WHENEVER ERROR CONTINUE DECLARE cq_indicator_autocomplete CURSOR FOR var_indicator_autocomplete WHENEVER ERROR STOP IF sqlca.sqlcode <> 0 THEN CALL log0030_processa_err_sql("DECLARE CURSOR","cq_indicator_autocomplete",1) FREE var_indicator_autocomplete RETURN NULL END IF WHENEVER ERROR CONTINUE LET l_ind = 1 FOREACH cq_indicator_autocomplete INTO lr_autocomplete.data[l_ind] IF sqlca.sqlcode <> 0 THEN CALL log0030_processa_err_sql("FOREACH CURSOR","cq_indicator_autocomplete",1) EXIT FOREACH END IF LET l_ind = l_ind + 1 IF l_ind > 500 THEN EXIT FOREACH END IF END FOREACH FREE cq_indicator_autocomplete WHENEVER ERROR STOP LET lr_autocomplete.count = l_ind - 1 RETURN lr_autocomplete END FUNCTION</pre> </div> </div> <p> <span style="color: rgb(0, 51, 102);"><span style="color: rgb(0, 0, 0);">Esta>This funciónfunction esis ejecutadaexecuted cuandowhen elthe usuariouser informaenters algúna filtroquery enin lathe consultafilter, as comoshown sein muestrathe enexample el ejemplo a seguirbelow:</span></span> </p> <p> <span style="color: rgb(0, 51, 102);"><img class="confluence-embedded-image image-center" width="600" src="http://tdn.totvs.com/download/attachments/108661156/QVWidget3.jpg?version=1&modificationDate=1408539017000&api=v2" data-image-src="http://tdn.totvs.com/download/attachments/108661156/QVWidget3.jpg?version=1&modificationDate=1408539017000&api=v2"></span> </p> <h2 id="id-5.Widgetdeconsultarápida-Posicionamentoautomáticonoregistroselecionado"> <span style="color: rgb(0, 51, 102);">Posicionamiento>Automatic positioning in automáticothe en el registro seleccionado<selected record</span> </h2> <p> CuandoWhen elthe usuariouser, in the enquick elquery <em>widget</em>, selects dea consultarecord rápida,in seleccionethe ungrid registroand enclicks laone grillaof ythe hagaactions clicselected, enthe unaexecution deof las accionesthe seleccionadasselected Logix esprogram necesariomust quealready ladisplay ejecuciónthe delselected programarecord Logixhas seleccionado ya exhiba el registro seleccionado ya consultadobeen queried. </p> <p> ParaFor quethat esoto puedaoccur, serthe realizado es necesario alterar los programas que son informados como acciones en la función de <strong>START</strong>. En estos programas se debe incluir una verificación para obtener los parámetros de ejecución utilizando la funciónprograms that are reported as actions in the <strong>START</strong> function must be changed. These programs must include a verification to obtain the execution parameters, using the <strong>APPLICATION_getNumArgs</strong> yfunction, yaalready efectuarperforming laa operaciónquery de consultaoperation. </p> <h5 id="id-5.Widgetdeconsultarápida-Exemplo.3"> <span style="color: rgb(0, 51, 102);">Ejemplo<>Example</span> </h5> <div class="code panel pdl" style="border-width: 1px;"> <div class="codeContent panelContent pdl"> <pre class="theme: Confluence; brush: plain; gutter: true" style="font-size: 12px;">#-----------------# FUNCTION log02720() #-----------------# DEFINE l_usuario LIKE log_usu_grupos.usuario IF LOG_initApp("PADRAO") > 0 THEN RETURN END IF LET m_form_reference = _ADVPL_create_component(NULL,"LFORMMETADATA",m_container_reference) CALL _ADVPL_set_property(m_form_reference,"FORM","log02720",mr_log_usu_grupos,ma_log_usu_grupos) #Verifica#Checks siif haythere unis argumentoan deexecution ejecuciónargument parafor elthe programaprogram IF APPLICATION_getNumArgs() > 0 THEN IF APPLICATION_getArg("action") = "INDICATOR" AND UPSHIFT(APPLICATION_getArg("indicator")) = "LOGI1" THEN LET l_usuario = DOWNSHIFT(APPLICATION_getArg("cod_usuario")) END IF END IF IF l_usuario IS NOT NULL THEN CALL _ADVPL_get_property(m_form_reference,"EXECUTE_OPERATION","FIND","a.usuario='"||l_usuario CLIPPED||"'") ELSE CALL _ADVPL_set_property(m_form_reference,"ACTIVATE",TRUE) END IF END FUNCTION</pre> </div> </div> <p> <span style="color: rgb(0, 0, 0);">Cuando>When seexecuted ejecutathrough a travésthe del widget de consulta rápida del Fluig, la funciónFluig quick query widget, the <strong>APPLICATION_getNumArgs </strong>siemprestrong>function devolverá como mínimo tres parámetros, siendowill always return at least three parameters, which are: </span> </p> <ol> <li><span style="color: rgb(0, 0, 0);"><strong>ACTION: </strong>lastrong>the palabraword "INDICATOR", parato identificarindicate quethat seit tratais dean laaction acciónby de un indicadoran indicator;</span></li> <li><span style="color: rgb(0, 0, 0);"><strong>INDICATOR: </strong>elstrong>code códigoof delindicator indicador registrado en elregistered in <strong>FRM0015</strong>.</span></li> </ol> <p> <span style="color: rgb(0, 0, 0);">A>Starting partirwith delthe segundosecond parámetroparameter, sethe columns envíanare lassent columnaswith conthe losvalues valoresselected seleccionados por el usuarioby the user.</span> </p> </div> |
Visão Geral
Import HTML Content
Conteúdo das Ferramentas