Exemplo n.º 1
0
        }
        //Si es un informe lo llama con sus parámetros
        if ($partes_objeto[0] == "inf") {
            if (@$partes_objeto[2] != "") {
                $en_ventana = $partes_objeto[2];
            }
            if (@$partes_objeto[3] != "") {
                $formato = $partes_objeto[3];
            }
            if (@$partes_objeto[4] != "") {
                $estilo = $partes_objeto[4];
            }
            if (@$partes_objeto[5] != "") {
                $embebido = $partes_objeto[5];
            }
            cargar_informe($partes_objeto[1], @$en_ventana);
        }
    } else {
        echo '<form name="cancelar" action="' . $ArchivoCORE . '" method="POST">
						<input type="Hidden" name="PCO_Accion" value="Ver_menu">
						<input type="Hidden" name="PCO_ErrorTitulo" value="' . $MULTILANG_ErrorTiempoEjecucion . '">
						<input type="Hidden" name="PCO_ErrorDescripcion" value="' . $mensaje_error . '">
						</form>
						<script type="" language="JavaScript"> document.cancelar.submit();  </script>';
    }
}
/* ################################################################## */
/* ################################################################## */
if ($PCO_Accion == "guardar_configuracion") {
    /*
    	Function: guardar_configuracion
Exemplo n.º 2
0
function cargar_formulario($formulario, $en_ventana = 1, $PCO_CampoBusquedaBD = "", $PCO_ValorBusquedaBD = "", $anular_form = 0)
{
    global $ConexionPDO, $ArchivoCORE, $TablasCore;
    global $PCO_InformeFiltro;
    global $_SeparadorCampos_;
    // Carga variables de definicion de tablas
    global $ListaCamposSinID_formulario, $ListaCamposSinID_formulario_objeto, $ListaCamposSinID_formulario_boton;
    global $MULTILANG_ErrorTiempoEjecucion, $MULTILANG_ObjetoNoExiste, $MULTILANG_ContacteAdmin, $MULTILANG_Formularios, $MULTILANG_VistaImpresion, $MULTILANG_InfRetornoFormFiltrado;
    // Busca datos del formulario
    $consulta_formulario = ejecutar_sql("SELECT id," . $ListaCamposSinID_formulario . " FROM " . $TablasCore . "formulario WHERE id=?", "{$formulario}");
    $registro_formulario = @$consulta_formulario->fetch();
    echo '
				<script type="text/javascript">
					function AgregarElemento(columna,fila,elemento)
						{
							//carga dinamicamente objetos html a marcos
							var capa = document.getElementById(ubicacion);
							var zona = document.createElement("po");
							zona.innerHTML = elemento;
							capa.appendChild(zona);
						}

					function ImprimirMarco(nombre)
						{
						  var marco_contenidos = document.getElementById(nombre);
						  var ventana_impresion = window.open(" ", "PopUpImpresion");
						  
						  //Agrega estilos basicos
                            //ventana_impresion.document.write( \'<link rel="stylesheet" type="text/css" href="general.css">\' );
						  
						  //Agrega titulo del formulario
							ventana_impresion.document.write( \'<div align=CENTER><b>' . $registro_formulario["titulo"] . '</b></div><hr>\' );

						  //Agrega el concenito del DIV al documento
							ventana_impresion.document.write( marco_contenidos.innerHTML );
							ventana_impresion.document.close();
						  
						  //Abre ventana de impresion
							ventana_impresion.print( );
						  
						  //Cierra ventana de impresion
							ventana_impresion.close();
						}

				</script>
				<!--<input type=button onclick=\'AgregarElemento("1","1","hello world");\'>-->';
    //Si no encuentra formulario presenta error
    if ($registro_formulario["id"] == "") {
        mensaje($MULTILANG_ErrorTiempoEjecucion, $MULTILANG_ObjetoNoExiste . " " . $MULTILANG_ContacteAdmin . "<br>(" . $MULTILANG_Formularios . " {$formulario})", '', 'fa fa-times fa-5x icon-red texto-blink', 'alert alert-danger alert-dismissible');
    }
    // En caso de recibir un campo base y valor base se hace la busqueda para recuperar la informacion
    if ($PCO_CampoBusquedaBD != "" && $PCO_ValorBusquedaBD != "") {
        $consulta_datos_formulario = $ConexionPDO->prepare("SELECT * FROM " . $registro_formulario["tabla_datos"] . " WHERE {$PCO_CampoBusquedaBD}='{$PCO_ValorBusquedaBD}'");
        $consulta_datos_formulario->execute();
        $registro_datos_formulario = $consulta_datos_formulario->fetch();
    }
    // Define la barra de herramientas mini superior (en barra de titulo)
    @($barra_herramientas_mini .= '
						<a href="#" title="' . $MULTILANG_VistaImpresion . '" name="">
							<i class="fa fa-print" OnClick="ImprimirMarco(\'MARCO_IMPRESION\');"></i>
						</a>');
    // Establece color de fondo para el form
    $color_fondo = "#f2f2f2";
    // Crea ventana si aplica para el form
    if ($en_ventana) {
        abrir_ventana($registro_formulario["titulo"], 'panel-primary', '', $barra_herramientas_mini);
    }
    // Muestra ayuda en caso de tenerla
    $imagen_ayuda = 'fa fa-info-circle fa-5x texto-azul';
    if ($registro_formulario["ayuda_titulo"] != "" || $registro_formulario["ayuda_texto"] != "") {
        mensaje($registro_formulario["ayuda_titulo"], $registro_formulario["ayuda_texto"], '100%', $imagen_ayuda, 'alert alert-info alert-dismissible');
    }
    //Inicia el formulario de datos
    echo '<div id="MARCO_IMPRESION">';
    //Si se quiere anular el formulario y su accion cuando se trata de un sub-formulario de consulta
    if (!$anular_form) {
        echo '<form id="datos" name="datos" action="' . $ArchivoCORE . '" method="POST" enctype="multipart/form-data" style="display:inline; height: 0px; border-width: 0px; width: 0px; padding: 0; margin: 0;">
						<input type="Hidden" name="formulario" value="' . $formulario . '">
						<input type="Hidden" name="id_registro_datos" value="' . @$registro_datos_formulario["id"] . '">
						<input type="Hidden" name="PCO_FormularioActivo" value="' . $formulario . '">
						<input type="Hidden" name="PCO_Accion" value="guardar_datos_formulario">
						<input type="Hidden" name="PCO_ErrorIcono" value="' . @$PCO_ErrorIcono . '">
						<input type="Hidden" name="PCO_ErrorEstilo" value="' . @$PCO_ErrorEstilo . '">
						<input type="Hidden" name="PCO_ErrorTitulo" value="' . @$PCO_ErrorTitulo . '">
						<input type="Hidden" name="PCO_ErrorDescripcion" value="' . @$PCO_ErrorDescripcion . '">
                        <input type="Hidden" name="Presentar_FullScreen" value="' . @$Presentar_FullScreen . '">
                        <input type="Hidden" name="Precarga_EstilosBS" value="' . @$Precarga_EstilosBS . '">
                        <input type="Hidden" name="objeto" value=""> <!--Requerido si se va a transferir el control a un objeto FRM o INF-->
						';
    }
    // Inicio de la generacion de encabezados pestanas
    //Cuenta las pestanas segun los objetos del form y ademas mira si es solo una con valor vacio (sin pestanas)
    $consulta_conteo_pestanas = ejecutar_sql("SELECT id," . $ListaCamposSinID_formulario_objeto . " FROM " . $TablasCore . "formulario_objeto WHERE formulario=? GROUP BY pestana_objeto ORDER BY pestana_objeto", "{$formulario}");
    $conteo_pestanas = 0;
    while ($registro_conteo_pestanas = @$consulta_conteo_pestanas->fetch()) {
        $conteo_pestanas++;
        $ultimo_nombre_pestanas = $registro_conteo_pestanas["pestana_objeto"];
    }
    //Presenta barra de navegacion de pestanas si se encuentra al menos una
    if ($conteo_pestanas > 0 && $ultimo_nombre_pestanas != "") {
        $consulta_formulario_pestana = ejecutar_sql("SELECT id," . $ListaCamposSinID_formulario_objeto . " FROM " . $TablasCore . "formulario_objeto WHERE formulario=? GROUP BY pestana_objeto ORDER BY pestana_objeto", "{$formulario}");
        echo '<ul class="nav nav-tabs nav-justified">';
        //nav-pills
        $estado_activa_primera_pestana = ' class="active" ';
        $pestana_activa = 1;
        while ($registro_formulario_pestana = @$consulta_formulario_pestana->fetch()) {
            $titulo_pestana_formulario = $registro_formulario_pestana["pestana_objeto"];
            if ($titulo_pestana_formulario == "") {
                $titulo_pestana_formulario = "<i class='fa fa-stack-overflow'></i>";
            }
            echo '<li ' . $estado_activa_primera_pestana . '><a href="#pestana_formulario_' . $pestana_activa . '" data-toggle="tab">' . $titulo_pestana_formulario . '</a></li>';
            //Limpia para las siguientes pestanas
            $estado_activa_primera_pestana = '';
            $pestana_activa++;
        }
        echo '</ul>';
    }
    // Fin de la generacion de encabezados pestanas
    //Genera las pestanas con su contenido
    if ($conteo_pestanas > 0) {
        $consulta_formulario_pestana = ejecutar_sql("SELECT id," . $ListaCamposSinID_formulario_objeto . " FROM " . $TablasCore . "formulario_objeto WHERE formulario=? GROUP BY pestana_objeto ORDER BY pestana_objeto", "{$formulario}");
        $estado_activa_primera_pestana = 'in active';
        $pestana_activa = 1;
        //Inicio de los tab-content
        echo '<div class="tab-content">';
        while ($registro_formulario_pestana = @$consulta_formulario_pestana->fetch()) {
            $titulo_pestana_formulario = $registro_formulario_pestana["pestana_objeto"];
            //Genera el contenedor de la pestana
            echo '
                                <!-- INICIO de las pestanas No ' . $pestana_activa . ' -->
                                    <div class="tab-pane fade ' . $estado_activa_primera_pestana . '" id="pestana_formulario_' . $pestana_activa . '">';
            //Booleana que determina si se debe incluir el javascript de ckeditor
            $existe_campo_textoformato = 0;
            //DIAGRAMACION DE LA TABLA CON ELEMENTOS DEL FORMULARIO
            $limite_inferior = -9999;
            // Peso inferior a tener en cuenta en el query
            $constante_limite_superior = +9999;
            $limite_superior = $constante_limite_superior;
            // Peso superior a tener en cuenta en el query
            //Busca todos los objetos marcados como fila_unica=1 y agrega un registro mas con el limite superior
            $consulta_obj_fila_unica = ejecutar_sql("SELECT id,peso,visible FROM " . $TablasCore . "formulario_objeto WHERE pestana_objeto=? AND formulario=? AND fila_unica='1' AND visible=1 UNION SELECT 0,{$limite_superior},0 ORDER BY peso", "{$titulo_pestana_formulario}{$_SeparadorCampos_}{$formulario}");
            //Define si debe o no dibujar borde de las celdas
            $estilo_bordes = "table-unbordered";
            if ($registro_formulario["borde_visible"] == 1) {
                $estilo_bordes = "table-bordered";
            }
            while ($registro_obj_fila_unica = $consulta_obj_fila_unica->fetch()) {
                $limite_superior = $registro_obj_fila_unica["peso"];
                $ultimo_id = $registro_obj_fila_unica["id"];
                // Inicia la tabla con los campos
                echo '
                                                    <div class="table-responsive">
                                                    <table class="table table-responsive ' . $estilo_bordes . ' table-condensed btn-xs"><tr>';
                //Recorre todas las comunas definidas para el formulario buscando objetos
                for ($cl = 1; $cl <= $registro_formulario["columnas"]; $cl++) {
                    //Busca los elementos de la coumna actual del formulario con peso menor o igual al peso del objeto fila_unica de la fila unica_actual pero que no son fila_unica
                    $consulta_campos = ejecutar_sql("SELECT id," . $ListaCamposSinID_formulario_objeto . " FROM " . $TablasCore . "formulario_objeto WHERE pestana_objeto=? AND formulario=? AND columna=? AND visible=1 AND peso >? AND peso <=? ORDER BY peso", "{$titulo_pestana_formulario}{$_SeparadorCampos_}{$formulario}{$_SeparadorCampos_}{$cl}{$_SeparadorCampos_}{$limite_inferior}{$_SeparadorCampos_}{$limite_superior}");
                    //Inicia columna de formulario
                    $PCO_AnchoColumnas = round(100 / $registro_formulario["columnas"]);
                    echo '<td width="' . $PCO_AnchoColumnas . '%">';
                    // Crea los campos definidos por cada columna de formulario
                    while ($registro_campos = $consulta_campos->fetch()) {
                        //Determina si el estilo del objeto debe ser inline o no
                        $cadena_modo_inline = '';
                        if ($registro_campos["modo_inline"]) {
                            $cadena_modo_inline = 'display:inline;';
                        }
                        echo '<div style="' . $cadena_modo_inline . '">';
                        //Imprime el campo solamente si no es fila unica, si es fila_unica guarda en una variable para uso posterior
                        if ($registro_campos["fila_unica"] == "0") {
                            // Formatea cada campo de acuerdo a su tipo
                            // CUIDADO!!! Modificando las lineas de tipo siguientes debe modificar las lineas de tipo un poco mas abajo tambien
                            $tipo_de_objeto = @$registro_campos["tipo"];
                            if ($tipo_de_objeto == "texto_corto") {
                                $objeto_formateado = @cargar_objeto_texto_corto($registro_campos, @$registro_datos_formulario, $formulario, $en_ventana);
                            }
                            if ($tipo_de_objeto == "texto_clave") {
                                $objeto_formateado = @cargar_objeto_texto_corto($registro_campos, @$registro_datos_formulario, $formulario, $en_ventana);
                            }
                            if ($tipo_de_objeto == "texto_largo") {
                                $objeto_formateado = @cargar_objeto_texto_largo($registro_campos, @$registro_datos_formulario);
                            }
                            if ($tipo_de_objeto == "texto_formato") {
                                $objeto_formateado = @cargar_objeto_texto_formato($registro_campos, @$registro_datos_formulario, $existe_campo_textoformato);
                                $existe_campo_textoformato = 1;
                            }
                            if ($tipo_de_objeto == "area_responsive") {
                                $objeto_formateado = @cargar_objeto_area_responsive($registro_campos, @$registro_datos_formulario);
                            }
                            if ($tipo_de_objeto == "lista_seleccion") {
                                $objeto_formateado = @cargar_objeto_lista_seleccion($registro_campos, @$registro_datos_formulario, $formulario, $en_ventana);
                            }
                            if ($tipo_de_objeto == "lista_radio") {
                                $objeto_formateado = @cargar_objeto_lista_radio($registro_campos, @$registro_datos_formulario);
                            }
                            if ($tipo_de_objeto == "casilla_check") {
                                $objeto_formateado = @cargar_objeto_casilla_check($registro_campos, @$registro_datos_formulario);
                            }
                            if ($tipo_de_objeto == "etiqueta") {
                                $objeto_formateado = @cargar_objeto_etiqueta($registro_campos, @$registro_datos_formulario);
                            }
                            if ($tipo_de_objeto == "url_iframe") {
                                $objeto_formateado = @cargar_objeto_iframe($registro_campos, @$registro_datos_formulario);
                            }
                            if ($tipo_de_objeto == "informe") {
                                @cargar_informe($registro_campos["informe_vinculado"], $registro_campos["objeto_en_ventana"], "htm", "Informes", 1);
                            }
                            if ($tipo_de_objeto == "deslizador") {
                                $objeto_formateado = @cargar_objeto_deslizador($registro_campos, @$registro_datos_formulario);
                            }
                            if ($tipo_de_objeto == "campo_etiqueta") {
                                $objeto_formateado = @cargar_objeto_campoetiqueta($registro_campos, @$registro_datos_formulario);
                            }
                            if ($tipo_de_objeto == "archivo_adjunto") {
                                $objeto_formateado = @cargar_objeto_archivo_adjunto($registro_campos, @$registro_datos_formulario);
                            }
                            if ($tipo_de_objeto == "objeto_canvas") {
                                $objeto_formateado = @cargar_objeto_canvas($registro_campos, @$registro_datos_formulario);
                            }
                            if ($tipo_de_objeto == "objeto_camara") {
                                $objeto_formateado = @cargar_objeto_camara($registro_campos, @$registro_datos_formulario);
                            }
                            if ($tipo_de_objeto == "boton_comando") {
                                $objeto_formateado = @cargar_objeto_boton_comando($registro_campos, @$registro_datos_formulario);
                            }
                            //Carga SubFormulario solo si no es el mismo actual para evitar ciclos infinitos
                            //Ademas si es subformulario debe consultar en ese registro de ID buscado del form
                            //padre el valor del campo foraneo del form hijo para llamar a buscar form con
                            //el valor de Id correspondiente
                            if ($tipo_de_objeto == "form_consulta" && $registro_campos["formulario_vinculado"] != $formulario) {
                                //Busca la tabla principal del subformulario anidado
                                $PCO_ValorCampoBind = $registro_campos["formulario_vinculado"];
                                if ($PCO_ValorCampoBind == "") {
                                    $PCO_ValorCampoBind = "";
                                }
                                $consulta_tabla_subform = ejecutar_sql("SELECT tabla_datos FROM " . $TablasCore . "formulario WHERE id=? ", "{$PCO_ValorCampoBind}")->fetch();
                                $PCO_TablaSubform = $consulta_tabla_subform["tabla_datos"];
                                //Determina el valor del campo a vincular en el registro padre (el actual).  Deberia dar el id que se va a buscar
                                $PCO_ValorCampoPadre = @$registro_datos_formulario[$registro_campos["formulario_campo_vinculo"]];
                                //Si no se encuentra el dato o registro entonces mira si vienen desde un boton de busqueda y usa su valor
                                if ($PCO_ValorCampoPadre == "" && $PCO_ValorBusquedaBD != "") {
                                    //$PCO_ValorCampoPadre=$PCO_ValorBusquedaBD;
                                }
                                //Si no obtiene ningun valor entonces lo pone en cero para evitar error de sintaxis en Bind de SQL
                                if ($PCO_ValorCampoPadre == "") {
                                    $PCO_ValorCampoPadre = 0;
                                }
                                $PCO_CampoForaneoSubform = $registro_campos["formulario_campo_foraneo"];
                                //Busca el ID de registro correspondiente en la tabla de datos para llamar con el valor coincidente
                                $consulta_registro_subform = ejecutar_sql("SELECT {$PCO_CampoForaneoSubform} FROM {$PCO_TablaSubform} WHERE {$PCO_CampoForaneoSubform}=? ", "{$PCO_ValorCampoPadre}")->fetch();
                                @cargar_formulario($registro_campos["formulario_vinculado"], $registro_campos["objeto_en_ventana"], $registro_campos["formulario_campo_foraneo"], $PCO_ValorCampoPadre, 1);
                            }
                            //Imprime el objeto siempre y cuando no sea uno preformateado por practico (informes, formularios, etc)
                            if ($registro_campos["tipo"] != "informe" && $registro_campos["tipo"] != "form_consulta") {
                                echo $objeto_formateado;
                            }
                        }
                        //Cierra el marco para el estilo inline del objeto
                        echo '</div>';
                    }
                    echo '</td>';
                    //Fin columna de formulario
                }
                // Finaliza la tabla con los campos
                echo '</tr></table>
                                                    </div>';
                //Busca datos del registro de fila_unica
                $consulta_campos = ejecutar_sql("SELECT id," . $ListaCamposSinID_formulario_objeto . " FROM " . $TablasCore . "formulario_objeto WHERE formulario=? AND id=? ", "{$formulario}{$_SeparadorCampos_}{$ultimo_id}");
                $registro_campos = $consulta_campos->fetch();
                //Agrega el campo de fila unica cuando no se trata del agregado de peso 9999
                if ($registro_campos["visible"] == "1") {
                    //echo '&nbsp;&nbsp;'.$registro_campos["titulo"];
                    // Formatea cada campo de acuerdo a su tipo
                    // CUIDADO!!! Modificando las lineas de tipo siguientes debe modificar las lineas de tipo un poco mas arriba tambien
                    echo '
                                                        <div class="table-responsive">
                                                        <table class="table table-condensed btn-xs ' . $estilo_bordes . '"><tr><td>';
                    $tipo_de_objeto = @$registro_campos["tipo"];
                    if ($tipo_de_objeto == "texto_corto") {
                        $objeto_formateado = cargar_objeto_texto_corto($registro_campos, @$registro_datos_formulario, $formulario, $en_ventana);
                    }
                    if ($tipo_de_objeto == "texto_clave") {
                        $objeto_formateado = cargar_objeto_texto_corto($registro_campos, @$registro_datos_formulario, $formulario, $en_ventana);
                    }
                    if ($tipo_de_objeto == "texto_largo") {
                        $objeto_formateado = cargar_objeto_texto_largo($registro_campos, @$registro_datos_formulario);
                    }
                    if ($tipo_de_objeto == "texto_formato") {
                        $objeto_formateado = cargar_objeto_texto_formato($registro_campos, @$registro_datos_formulario, $existe_campo_textoformato);
                        $existe_campo_textoformato = 1;
                    }
                    if ($tipo_de_objeto == "area_responsive") {
                        $objeto_formateado = @cargar_objeto_area_responsive($registro_campos, @$registro_datos_formulario);
                    }
                    if ($tipo_de_objeto == "lista_seleccion") {
                        $objeto_formateado = cargar_objeto_lista_seleccion($registro_campos, @$registro_datos_formulario, $formulario, $en_ventana);
                    }
                    if ($tipo_de_objeto == "lista_radio") {
                        $objeto_formateado = cargar_objeto_lista_radio($registro_campos, @$registro_datos_formulario);
                    }
                    if ($tipo_de_objeto == "casilla_check") {
                        $objeto_formateado = @cargar_objeto_casilla_check($registro_campos, @$registro_datos_formulario);
                    }
                    if ($tipo_de_objeto == "etiqueta") {
                        $objeto_formateado = cargar_objeto_etiqueta($registro_campos, @$registro_datos_formulario);
                    }
                    if ($tipo_de_objeto == "url_iframe") {
                        $objeto_formateado = cargar_objeto_iframe($registro_campos, @$registro_datos_formulario);
                    }
                    if ($tipo_de_objeto == "informe") {
                        cargar_informe($registro_campos["informe_vinculado"], $registro_campos["objeto_en_ventana"], "htm", "Informes", 1);
                    }
                    if ($tipo_de_objeto == "deslizador") {
                        $objeto_formateado = @cargar_objeto_deslizador($registro_campos, @$registro_datos_formulario);
                    }
                    if ($tipo_de_objeto == "campo_etiqueta") {
                        $objeto_formateado = @cargar_objeto_campoetiqueta($registro_campos, @$registro_datos_formulario);
                    }
                    if ($tipo_de_objeto == "archivo_adjunto") {
                        $objeto_formateado = @cargar_objeto_archivo_adjunto($registro_campos, @$registro_datos_formulario);
                    }
                    if ($tipo_de_objeto == "objeto_canvas") {
                        $objeto_formateado = @cargar_objeto_canvas($registro_campos, @$registro_datos_formulario);
                    }
                    if ($tipo_de_objeto == "objeto_camara") {
                        $objeto_formateado = @cargar_objeto_camara($registro_campos, @$registro_datos_formulario);
                    }
                    if ($tipo_de_objeto == "boton_comando") {
                        $objeto_formateado = @cargar_objeto_boton_comando($registro_campos, @$registro_datos_formulario);
                    }
                    //Carga SubFormulario solo si no es el mismo actual para evitar ciclos infinitos
                    //Ademas si es subformulario debe consultar en ese registro de ID buscado del form
                    //padre el valor del campo foraneo del form hijo para llamar a buscar form con
                    //el valor de Id correspondiente
                    if ($tipo_de_objeto == "form_consulta" && $registro_campos["formulario_vinculado"] != $formulario) {
                        //Busca la tabla principal del subformulario anidado
                        $PCO_ValorCampoBind = $registro_campos["formulario_vinculado"];
                        if ($PCO_ValorCampoBind == "") {
                            $PCO_ValorCampoBind = "";
                        }
                        $consulta_tabla_subform = ejecutar_sql("SELECT tabla_datos FROM " . $TablasCore . "formulario WHERE id=? ", "{$PCO_ValorCampoBind}")->fetch();
                        $PCO_TablaSubform = $consulta_tabla_subform["tabla_datos"];
                        //Determina el valor del campo a vincular en el registro padre (el actual).  Deberia dar el id que se va a buscar
                        $PCO_ValorCampoPadre = @$registro_datos_formulario[$registro_campos["formulario_campo_vinculo"]];
                        //Si no se encuentra el dato o registro entonces mira si vienen desde un boton de busqueda y usa su valor
                        if ($PCO_ValorCampoPadre == "" && $PCO_ValorBusquedaBD != "") {
                            //$PCO_ValorCampoPadre=$PCO_ValorBusquedaBD;
                        }
                        //Si no obtiene ningun valor entonces lo pone en cero para evitar error de sintaxis en Bind de SQL
                        if ($PCO_ValorCampoPadre == "") {
                            $PCO_ValorCampoPadre = 0;
                        }
                        $PCO_CampoForaneoSubform = $registro_campos["formulario_campo_foraneo"];
                        //Busca el ID de registro correspondiente en la tabla de datos para llamar con el valor coincidente
                        $consulta_registro_subform = ejecutar_sql("SELECT {$PCO_CampoForaneoSubform} FROM {$PCO_TablaSubform} WHERE {$PCO_CampoForaneoSubform}=? ", "{$PCO_ValorCampoPadre}")->fetch();
                        @cargar_formulario($registro_campos["formulario_vinculado"], $registro_campos["objeto_en_ventana"], $registro_campos["formulario_campo_foraneo"], $PCO_ValorCampoPadre, 1);
                    }
                    //Imprime el objeto siempre y cuando no sea uno preformateado por practico (informes, formularios, etc)
                    if ($registro_campos["tipo"] != "informe" && $registro_campos["tipo"] != "form_consulta") {
                        echo $objeto_formateado;
                    }
                    echo '</td></tr></table>
                                                        </div>';
                }
                //Actualiza limite inferior para siguiente lista de campos
                $limite_inferior = $registro_obj_fila_unica["peso"];
            }
            echo '
                                    </div>
                                <!-- FIN de las pestanas No ' . $pestana_activa . '-->';
            //Limpia para las siguientes pestanas
            $estado_activa_primera_pestana = '';
            $pestana_activa++;
        }
        //Fin de los tab-content
        echo '</div>';
    }
    //Fin Si conteo pestanas > 0
    echo '</div> <!-- cierra MARCO_IMPRESION -->';
    //Busca los campos definidos como visilbe=0 (o NO) para agregarlos como hidden
    $consulta_ocultos = ejecutar_sql("SELECT id," . $ListaCamposSinID_formulario_objeto . " FROM " . $TablasCore . "formulario_objeto WHERE formulario=? AND visible=0 ", "{$formulario}");
    while ($registro_ocultos = $consulta_ocultos->fetch()) {
        // Formatea cada campo de acuerdo a su tipo
        $objeto_formateado = @cargar_objeto_oculto($registro_ocultos, $registro_datos_formulario, $formulario, $en_ventana);
        //Imprime el objeto siempre y cuando no sea uno preformateado por practico (informes, formularios, etc)
        if ($registro_campos["tipo"] != "informe" && $registro_campos["tipo"] != "form_consulta" && $registro_campos["tipo"] != "boton_comando") {
            echo $objeto_formateado;
        }
    }
    // Si tiene botones agrega barra de estado y los ubica
    $consulta_botones = ejecutar_sql("SELECT id," . $ListaCamposSinID_formulario_boton . " FROM " . $TablasCore . "formulario_boton WHERE formulario=? AND visible=1 ORDER BY peso", "{$formulario}");
    if ($consulta_botones->rowCount() > 0 || $PCO_InformeFiltro != "") {
        abrir_barra_estado();
        echo '<div align="center">';
        while ($registro_botones = $consulta_botones->fetch()) {
            //Transfiere variables de mensajes de retorno asociadas al boton
            $comando_javascript = "";
            if ($registro_botones["retorno_titulo"] != "") {
                $comando_javascript = "document.datos.PCO_ErrorTitulo.value='" . $registro_botones["retorno_titulo"] . "'; document.datos.PCO_ErrorDescripcion.value='" . $registro_botones["retorno_texto"] . "'; document.datos.PCO_ErrorIcono.value='" . $registro_botones["retorno_icono"] . "'; document.datos.PCO_ErrorEstilo.value='" . $registro_botones["retorno_estilo"] . "';";
            }
            //Define el tipo de boton de acuerdo al tipo de accion
            if ($registro_botones["tipo_accion"] == "interna_guardar") {
                $comando_javascript .= "document.getElementById('datos').submit();";
            }
            if ($registro_botones["tipo_accion"] == "interna_limpiar") {
                $comando_javascript .= "document.getElementById('datos').reset();";
            }
            if ($registro_botones["tipo_accion"] == "interna_escritorio") {
                $comando_javascript .= "document.core_ver_menu.submit();";
            }
            if ($registro_botones["tipo_accion"] == "interna_actualizar") {
                $comando_javascript .= "document.datos.PCO_Accion.value='actualizar_datos_formulario';document.datos.submit();";
            }
            if ($registro_botones["tipo_accion"] == "interna_eliminar") {
                $comando_javascript .= "document.datos.PCO_Accion.value='eliminar_datos_formulario';document.datos.submit();";
            }
            if ($registro_botones["tipo_accion"] == "interna_cargar") {
                $comando_javascript .= "document.datos.PCO_Accion.value='cargar_objeto';document.datos.objeto.value='" . $registro_botones["accion_usuario"] . "';document.datos.submit();";
            }
            if ($registro_botones["tipo_accion"] == "externa_formulario") {
                $comando_javascript .= "document.datos.PCO_Accion.value='" . $registro_botones["accion_usuario"] . "';document.datos.submit();";
            }
            if ($registro_botones["tipo_accion"] == "externa_javascript") {
                $comando_javascript .= $registro_botones["accion_usuario"];
            }
            //Verifica si el registro de botones presenta algun texto de confirmacion y lo antepone al script
            $cadena_confirmacion_accion_pre = "";
            $cadena_confirmacion_accion_pos = "";
            if ($registro_botones["confirmacion_texto"] != "") {
                $cadena_confirmacion_accion_pre = " if (confirm('" . $registro_botones["confirmacion_texto"] . "')) {";
                $cadena_confirmacion_accion_pos = " } else {} ";
            }
            //Genera la cadena del enlace
            $cadena_javascript = 'href="javascript:  ' . $cadena_confirmacion_accion_pre . '  ' . @$comando_javascript . '  ' . $cadena_confirmacion_accion_pos . '  "';
            //Si no se especifica un estilo para el boton entonces se usa el predeterminado
            $estilo_basico_boton = "btn btn-default";
            echo '<a class="' . $estilo_basico_boton . ' ' . $registro_botones["estilo"] . '" ' . @$cadena_javascript . '>' . $registro_botones["titulo"] . '</a>';
            echo '&nbsp;&nbsp;';
            //Agrega espacio temporal entre controles
        }
        if ($PCO_InformeFiltro != "") {
            //Si se encuentra que el form viene llamado desde un informe que lo requiere para filtro agrega un boton de retorno al informe automaticamente
            $comando_javascript = "document.datos.PCO_Accion.value='cargar_objeto';document.datos.objeto.value='inf:" . $PCO_InformeFiltro . ":1';document.datos.submit();";
            $cadena_javascript = 'href="javascript:' . @$comando_javascript . '"';
            echo '<a class="' . $estilo_basico_boton . ' btn-warning" ' . @$cadena_javascript . '>' . $MULTILANG_InfRetornoFormFiltrado . '</a>';
        }
        echo '</div>';
        cerrar_barra_estado();
    }
    //Cierra todo el formulario
    //Si se quiere anular el formulario y su accion cuando se trata de un sub-formulario de consulta
    if (!$anular_form) {
        echo '</form>';
    }
    //Carga las funciones JavaScript asociadas al formulario y llama la funcion FrmAutoRun()
    echo '<script type="text/javascript">' . $registro_formulario["javascript"] . ' FrmAutoRun(); </script>';
    if ($en_ventana) {
        cerrar_ventana();
    }
}