Anda di halaman 1dari 87

Construyendoaplicacioneswebenpocosminutoscon

Prctico

Versin

14.3

Laguatotal

TrucosyfuncionesdelFrameworkparaobtenerelmximoprovecho!

Unmanualparalageneracinrpidadeaplicacionesweb
sin
conocimientosdeprogramacin
...otambinunframework
completoypersonalizableparaaquellosmsexperimentados.


Documentacinoficial.

Notadelautor:
Sibienestedocumentointentamantenersealaparconlasfuncionalidadeslanzadasencadaversin,la
actualizacindeltextoesunatareaextensa(einterminable).Unresmendecadafuncionalidadlanzadapodrserencontradaenel
CHANGELOGyenlarevisionesdeversiones,apartirdeahelusuariopodridentificaryexplorarcadafuncionalidadnuevayquepor
motivosdetiemponohayasidoincluidaanenestemanual.

AVISOSDECOPYRIGHT

LicenciaGNUFDL1.3

Se garantiza permiso para copiar, distribuir y modificar este documento segn los
trminos de la GNU Free Documentation License, Version 1.31 o cualquiera
posteriormente publicada por la Free Software Foundation, sin secciones invariantes ni
textos de cubierta delantera o trasera. Una copia de la licencia puede ser encontrada
comorecursoenlneapormediode

esteenlace
.

Prctico es un proyecto de Software Libre publicado


bajo licencia
GNU GPL v2.02 para la creacin de
aplicaciones web de una manera completamente
visualyrpida.

En resmen, esta licencia permite que usted utilice la


herramienta en cualquier entorno, personal o
empresarialyconcualquierfinalidad.

Toda la documentacin del proyecto se encuentra


liberadabajolicenciaGFDL.
Deacuerdoalanotaque
iniciaestapgina.

Otras licencias compatibles de software, recursos


multimedia, documentacin y otras utilizadas por la
herramienta pueden ser encontradas en el archivo
AUTHORSdelpaquetedeinstalacin.

1
2

LicenciaGNUFDLversin1.3.FreeSoftwareFoundation.Disponibleenhttp://www.gnu.org/licenses/fdl1.3.html
LicenciaGNUGPLversin2.0.FreeSoftwareFoundation.Disponibleenhttp://www.gnu.org/licenses/gpl2.0.html

Visite

practico.org
paramsinformacin


Documentacinoficial.

ndicegeneral

1.Introduccin
1.1.Agradecimientos
1.2.Prefacio
1.2.1.Sobreestedocumento
1.2.2.QuesPrctico?
1.2.3.VentajasdeusarPrctico
1.2.4.QuotrosaspectosautomatizaPrctico?
2.EmpezandoconPrctico
2.1.Requisitosmnimos
2.2.InstalacinfrescadePrctico
2.2.1.Obteniendolaltimaversinestable
2.2.2.Descomprimiendoelarchivoensuservidorweb
2.2.3.Iniciandoelasistentedeinstalacin
Pantalladebienvenidayseleccindeidioma
Revisindelalicencia
Verificacindeconfiguraciones
Configuracingeneraldelaherramienta
2.3.Instalacionesdeintegracinconotrasaplicaciones
Cmohagolaintegracin?
2.4.Aplicacindeparchesdeactualizacin
2.4.1.QuesunParche?
2.4.2.Recomendacionespreliminares
2.4.3.Procesodeaplicacindeparches
Identificandomiversinactual
Descargandoelarchivodeactualizacinadecuado
Aplicandoelparchedeactualizacinamisistema
2.5.Consideracionesparaunareinstalacin
3.Construyendosusaplicaciones
3.1.Definiendounabasededatos
3.1.1.Adicindetablas
Manualmente
Pormediodelasistente
3.1.2.Adicindecamposaunatabla
Consideracionesespecialessobrelostiposdedatoyvalidaciones
3.2.Generandoformularios
3.2.1.Formulariosdedatos
Matrizdescriptivadepropiedadesporcampo
3.2.2.Accionesycomandos
Agregandounabotonesconaccionesycomandosaunformulario
Detallesobrelostiposdeaccionesdisponibles

Visite

practico.org
paramsinformacin


Documentacinoficial.

3.2.3.Formularioscombinados
3.2.4.Formularioscomoinformes
3.2.5.Scriptspersonalizablesentiempodeejecucin(JavaScript)
3.3.Diseandoinformes
3.3.1.Informesdetipotabladedatos
3.3.2.Informesgrficos
3.3.3.Informescombinados
3.3.4.Accionesycomandoseninformestabulares
3.3.5.Mduloscomplementariosdeinformes
3.4.Gestindemensyopcionesdeusuario
3.4.1.Generalidadessobrelosmens
3.4.2.Comandosespeciales
3.4.3.Tpicosavanzados:Enrutamientodeusuariosacomandosinternos
3.5.Usuariosypermisos
3.5.1.Creacindeusuarios
3.5.2.Asignacindepermisos
3.5.3.Losusuariosespecialescomoplantilladepermisos
4.AmpliandolasposibilidadesdePrctico
4.1.Mdulosadicionales(oficiales)
4.1.1.Sistemademonitoreo
4.1.1.SeguimientosporGoogleAnalyticsBeacon
4.2.Paquetesdeiconos
4.3.Plantillasgrficas
4.3.1.PlantillasparaPC
4.3.2.Plantillasparadispositivosmviles,tabletas(touch)
5.Tpicosavanzados
5.1.CambiandomimotordeautenticacinaLDAP
5.2.IntegrandolaautenticacinconproveedoresOAuth
5.3.Prcticocomoservidordeautenticacin
5.4.Autenticacinfederada
5.5.Creacindefuncionespersonalizadas
5.6.Creacindemdulospropios
5.7.Generandoelementospblicos
5.8.TrabajandopatronesMVCconPrctico
5.9.FuncionesdisponiblesdelFramework
5.9.1.Funcionesgeneralesdebasededatos
ejecutar_sql:
ejecutar_sql_unaria:
ejecutar_sql_procedimiento:
5.9.2.Funcionesespecficasdebasededatos
existe_valor:
ContarRegistros:
5.9.3.FuncionesgeneralesdisponiblesenPHP
auditar:
CodigoQR:

Visite

practico.org
paramsinformacin


Documentacinoficial.

TextoAleatorio:
enviar_correo:
5.9.4.FuncionesgeneralesdisponiblesenJavaScript
PCO_ObtenerContenidoAjax:
PCOJS_MostrarMensaje:
PCO_VentanaPopup:
PCO_AgregarElementoDiv:
PCO_AgregarElementoDiv:
5.9.5.Funcionesdeformatoypresentacin
abrir_ventana:
cerrar_ventana:
abrir_barra_estado:
cerrar_barra_estado:
5.9.6.Variablesdeentornoyvariablesdeusuario
Variablesdesesion:
Variablesentiempodeejecucin:
Variablessegnelcontexto:
Otrasvariablesespeciales:
5.10.Administracindelidioma
5.11.Clonacinrpidadeaplicaciones
5.11.1.Clonacindeformularioseinformes
Clonacin"Enlnea"
XMLconIDactual:
XMLconIDDinmico:
Pasosparaclonarunformulariooinforme:
6.Complementarios
6.1.Arquitecturadelaaplicacin
6.2.Capadedatos
6.3.Lgicadeprogramacin
6.4.Escenariosparadesplieguedeaplicaciones
6.4.1.Servidordewebybasededatosdedicadoaproduccin
6.4.2.Servidorwebydebasededatosdedicadoaproduccinypruebas
6.4.3.Servidordewebybasededatosindependientesdedicadosaproduccin
6.4.4.Servidordewebybasededatosindependientesdedicadosaproduccinypruebas
6.4.5.DespliegueenHeroku
6.4.6.Mododedemostracin
Glosario
Referencias

Visite

practico.org
paramsinformacin


Documentacinoficial.

1.Introduccin

1.1.Agradecimientos

La comunidad de Prcticoagradecea laspersonas quedealgunauotramanera,colaboranohancolaborado


con el proyecto dedicandosutiempoa ladeteccinycorreccindeerrores,pruebasconstantesde lasltimas
versiones, atencin de usuarios enlosforos,elaboracindedocumentos enlnea,videotutorialeseinclusola
elaboracindelpresentedocumento.

A todalacomunidaddesoftwarelibrequetrabajaalrededordePrctico,consusconstantesrealimentaciones,
sus preguntas en foros de discusin, reporte de errores, aportes a nuevas funcionalidades, sugerencias y
demsaportesqueenmayoromenorgradoayudanalmejoramientocontinuodelaherramienta.

Tambin agradecemos a las empresas que se han vinculado al proyecto mediante donaciones en dinero y
trabajoparalarevisindeseguridadyfuncionalidaddelasdiferentesversiones.
Gracias!

1.2.Prefacio

1.2.1.Sobreestedocumento

La Gua total de Prctico se encuentra en constante edicin para corresponder con las funcionalidades en
cada lanzamiento de la herramienta y espera dar a conocer las posibilidadesconquecuentaeldesarrollador
en el Framework mediante los procedimientos bsicos y tambin algunos avanzadosparala ejecucindelas
tareascomunesdeunprogramadorcuandoimplementaaplicacionesweb.

Explicade maneraclaracadafuncionalidaddemaneraqueustedseadeceaunescenarioquelesimplificar
la forma en que construye y despliega aplicaciones web de menor o mayor complejidad, disminuyendo por
muchoeltiempoquenormalmenterequeraparasusproyectos.

1.2.2.QuesPrctico?

Prctico es un proyecto de software libre publicado bajo licencia GNU GPL v2.0 para la creacin de

Visite

practico.org
paramsinformacin


Documentacinoficial.

aplicaciones web de una manera completamente visual, rpida y sin mayores conocimientos previos de
programacin.

Como framework para diseo, implementacin y despliegue de aplicaciones web sin necesidad de digitar
cdigo o programar en un lenguaje determinado, se enfoca en la necesidad sentida de disminuir los tiempos
para los desarrollos web, en los que normalmentesedebedigitaryreutilizarcdigoencontrandoquemuchas
delasoperacionespuedenserparametrizablesdealgunamanera.

Un factor que ha motivado el surgimiento dePrcticohasidoelencontrar quemuchassolucionesdisponibles


en la web son desarrolladas bajo metodologas y paradigmas como la programacin orientada a objetos,
AJAX y otro tipo de tecnologas que pueden no ser del todo comprensibles para la mayora de los
programadoresqueseinicianenlaweb(oparapersonascuyoperfilnoessiquieraeldeprogramador).

El ncleo incorpora los scripts necesarios para unafcilinstalacinylageneracindinmicadeobjetoscomo


formularios, informes, grficos, administracin de usuarios y conexin amltiplesmotoresdebasesdedatos.
Permite adems la instalacin de mdulos adicionales disponibles en la web oficial yque complementanan
mssusfuncionalidadesbsicas.

1.2.3.VentajasdeusarPrctico

1. Fcil de usar. Simplemente descomprima y ejecute su asistente de instalacin. La curva de


aprendizajedePrcticoesmuycorta(ocasinula).
2. AgilizaelTrabajo,crearunaaplicacinmuyfuncionalconPrcticoescuestindehorasominutos.
3. Separar la Lgica de la Presentacin. Su trabajo para esto es nulo pues el ncleo de Prctico se
encarga de todo, su aplicacin puede crecer todo lo que deseeperoelncleoquelacontrolasiempre
serelmismo.
4. Reduccin del uso de otros Lenguajes,aunquetodosepodra hacerdemaneravisualparalamayora
de escenarios, programadores avanzados podran escribir sus propios mdulos con un conjunto
simplificadodeinstruccionessuministradasporPrctico.
5. Est todo en espaol!. An as el framework cuenta con la posibilidad de ejecutar aplicaciones en
mltiplesidiomasgraciasalainclusindinmicadeficherosdetraduccin.
6. Software Libre, con todos los beneficios que esto conlleva para que pueda utilizarlo en cualquiera de
susproyectossinimportarelescenario.
7. Prcticoproporcionaunaarquitecturafcildeaprenderydeimplementarydesplegar.
8. Multiplataforma. No slo puede ser ejecutado en mltiples tipos de servidor web, sino que tambin
cuenta con esquemas de presentacin para PCs, tabletas y dispositivos mviles. As su aplicacin
estdisponibleenmltiplesplataformasdemaneranativa.
9. Soportar muchas caractersticas de aplicaciones Web actuales e implementa nuevas como
experimentalesenHTML5.

Visite

practico.org
paramsinformacin


Documentacinoficial.

10. Responsive! Todo su diseo y las aplicaciones generadas se construyen sobre la base de otros
frameworks comoBootStrap,permitiendoquesuaplicacin seacompatibleconmltiplesdispositivosy
ademsseafcilmentepersonalizable.
11. Aplicaciones robustas en el sector privado y gubernamental diseadas y ejecutadas por Prctico
generanconstantesmejorasderivadasdesudaada.

1.2.4.QuotrosaspectosautomatizaPrctico?

Plantillasdelaaplicacin
Validacindedatos
InteraccinAJAX
GeneracindeFormularioseInformes
Seguridadymonitoreos
InteraccinconelmotordebasededatossoportadoenPDOpara:
MariaDB/MySQL
PostgreSQL
SQLite
ODBC
DB2
Oracle
Firebird
FreeTDS/Sybase/MSSQL

Unalistacompletayactualizadadelasfuncionalidadesdelaherramientaascomootrosmdulosexistentes
puedeserencontradaenelsitioweboficialysusespaciosdeWikiydocumentacin.

Visite

practico.org
paramsinformacin


Documentacinoficial.

2.EmpezandoconPrctico

2.1.Requisitosmnimos

ComosemencionarribaPrcticoesmuyfcilyenestesentidolosrequerimientosparahacerfuncionarel
frameworksonmnimos,acontinuacinselistan:

Deinters...

ServidorWeb.Apache,Cherokee,Lighttpd,IISocualquieracon
soporteparaelpreprocesadordehipertextoPHP3 .
Posibilidaddeescrituradearchivosycambiodepermisossobreel
servidorweb.Noobligatorioperosrecomendado.
IntrpretePHP(versin5.3+).Puedenrequerirsealgunas
extensionesdePHPadicionalesparagenerarimgenes,PDF,Web
Services,etc.
MotordebasededatosysudriverparaPHPPDOcorrespondiente.

Aunquesehaprobadosu
funcionamientoendiversas
plataformas,eldesarrollode
Prcticosellevaacabosobreun
servidorwebApacheymotorde
basededatosMariaDB/MySQL

2.2.InstalacinfrescadePrctico

En esta seccin, se explican los pasos a seguir, para poner a funcionar el framework en nuestrosambientes
dedesarrolloyproduccin.

Aunque en esencia todas las instalaciones se realizan con el mismo asistente, la seleccin de ciertas
opciones hace que se obtengan resultados totalmente diferentes segn el escenario deseado para su
aplicacin. Los procedimientos especficos segn ciertos escenarios (integracin con otras aplicaciones,
reinstalacin,actualizacin,etc)serndescritosenapartadossiguientes.

Seasumequeelusuariocuentaconunservidorwebinstalado.EncasodenoseraspodrrealizarsuinstalacinbajoLinuxoWindowssiguiendo
cualquierdelosprocedimientosdescritosenlaweb.ComoporejemplolainstalacindeXAMPPenWindowsoinstalacindeLAMPparalinux

Visite

practico.org
paramsinformacin


Documentacinoficial.

2.2.1.Obteniendolaltimaversinestable

ParainstalarelFramework,sedebedescargarsuarchivocomprimidodesdelaseccindedescargasdelsitio
oficial
http://www.practico.org/
paraobtenersuversinmsreciente.

Vayaalsitioweboficial,localiceelenlacededescargasyhagaclicsobrel.Tengaencuentaquela
presentacindeunsitiowebpuedecambiarconfacilidad,asquesigaestospasosdemaneragenrica.

Con esto su navegador ser redireccionado a GitHub, donde residen los repositorios de cdigo y descargas
del proyecto. All encontrar el nmero de la ltima versin disponible y una lista de cambios y mejoras
incluidosenlamisma.

Visite

practico.org
paramsinformacin

10


Documentacinoficial.

Enlalistadedescargasdisponiblespuedequeencuentrediferentesarchivos.Paraunainstalacinfresca
seleccioneaquelqueindicasolamentelaversinainstalar.Otrosarchivospuedensernicamentepara
actualizacindesdeversionespreviasoaplicaractualizacionesyaliberadasparalaversinactualsegn
comoloindiquesunombre.

SideseaversionesanteriorespodrencontrarlasenlapginageneraldeReleasesdelproyecto:
https://github.com/unix4you2/practico/releases
dondeencontrarlaltimaversinestableyhaciaabajoen
ordencronolgicolasversionesanteriores.

2.2.2.Descomprimiendoelarchivoensuservidorweb

Acontinuacinguardeelarchivoeneldirectoriorazdesuservidorweb(DocumentRoot).
Para asegurar cierta uniformidad en el documento, en todos los ejemplos que requieran referenciar archivos
especficosasumiremosquesehadescomprimidoelpaquetedelframeworkeneldirectorio
practico/
.

El proceso de descompresin y la ubicacin cambiarn de acuerdo a su sistema operativo, sin embargo


algunasubicacionescomunesdesuDocumentRootpordefecto(sinohasidopersonalizado)son:
Debian/Ubuntu/Mint/Pearyderivados:
/var/www
Redhat/CentOS/Fedorayderivados:
/var/www/html
Windows(IIS):
C:\Inetpub\wwwroot
Windows(XAMPP,WAMP,EasyPHP,Otros):Verpathdeinstalacinpropiadelprogramay
subcarpeta
wwwohtdocs
Serviciosdehosting:Normalmenteestarsobrelarazdesudominioydependerdelasherramientas
suministradasporsuproveedor(FTP,Cpanel,etc)laformaenquecargueelarchivocomprimidoal.

Al finalizar la descompresin del archivo tendr una estructura similar a la siguiente (los tamaos y archivos
puedenvariarentreversiones):

Visite

practico.org
paramsinformacin

11


Documentacinoficial.

En general, un usuario estndar no tendra que conocer el detalle de las carpetas para disear sus
aplicaciones,yaquePrcticoseencargainternamentedegestionartodolonecesario.

2.2.3.Iniciandoelasistentedeinstalacin

Abra un navegador abra la direccin correspondiente del servidor web utilizado y la carpeta de
descompresin. Aqu depender de si ustedestinstalandoPrcticolocalmente(ensumquina) osilotiene
sobreunservidordisponibleenlawebosuredLAN.

Bsicamenteladireccindeaccesopuedetenerunadelassiguientesestructuras:
Direccindelservidor

Carpeta

http://localhost /

Instalacionesensumquinalocalysobrelarazdelservidor

http://localhost /practico

Instalacinsobremquinalocalperoustedhadescomprimidotododentrodeunacarpeta
llamadapractico

http://sudominio.com /

InstalacinsobrelarazdeunservidordisponibleenInternetaccesibleensudominio.com

http://sudominio.com /practico

InstalacinsobreunacarpetallamadapracticoenunservidordisponibleenInternet
accesibleensudominio.com

http://192.168.1.254 /practico

Escenario

InstalacindisponibleenunamquinaoservidordesuredLAN.Ladireccinycarpeta
podrcambiarsegnsuconfiguracinderedaligualquelascombinacionesanteriores.

Visite

practico.org
paramsinformacin

12


Documentacinoficial.

Peroantesparalosmsansiosos...unprocesosimplificadodelasistente:

Esta seccin est para aquellos que requieren simplementelospasossindescripcionesparainstalarPrctico


de manera rpida con sus opciones predeterminadas. Para el proceso detallado de instalacin con
pantallazosymsdetallesvayaalaprximapgina.

1. Cuandovisualiceelasistenteenpantalla,seleccioneelidiomadeseadoyclicen
[Siguiente]
.
2. Reviselalicenciayclicen
[Continuar]
3. Verifiqueconfiguracioneshastaquetododiga
[Correcto]
yclicen
[Continuar]
4. Configurelaherramientaingresandoalmenos:
Tipodeservidor
DireccinIPohostdelservidor(olocalhostsitodoestenlamismamquina)
BasededatospreviamentecreadaparaPrctico
Usuarioycontraseaparaelaccesoalmotor
Nombredesuorganizacin,aplicacinyversininicial

yclicen
[Continuar]
5.
yclicen
[1.AgregarinformacinalaBD]
6. Verifiquelaejecucindelosscripts

yclicen
[IrasuinstalacindePrctico]
7. Sedesplegarunmensajedecierredesesin(deinstalacin)hagaclicen
[Ingresar]
8. Enlaventanadeloginingreseahoraconelusuario
admin
yclave
admin

Recomendacionesparaquieneshanqueridoseguiresteprocedimientorpidodeinstalacin:

No olvide eliminar o renombrar la carpeta /ins existente dentro de la carpeta donde se ha realizadola
descompresin de Prctico. Esa carpeta contiene el asistente de instalacin y si vuelve a ser
ejecutado podra perder sus configuraciones. Prctico intentar hacer esto por usted renombrandola
carpeta a algo como ins_Y56DT3S73K8 o similar pero si los permisos no son los adecuados usted
deberhacerloporsmismo.
Lea los mensajes, advertencias o informacin adicional desplegada por la herramienta. Esto es
fundamentalparacomprenderloquesehaceenelmomentoycmoactuarPrcticoalrespecto.

Es normal encontrar al lado derecho de algunos camposiconosde interrogacin oadvertencia


indicandoqueallexisteinformacinadicional.Ubiquesuratnsobreellosparaleerlosconsejos.

Visite

practico.org
paramsinformacin

13


Documentacinoficial.

Ahoras...elprocesodetalladodeinstalacin:
Pantalladebienvenidayseleccindeidioma
Una vez ingresada la direccin correcta en su navegador de Internet debera ver una pginaconelasistente
deinstalacindePrcticosimilaraesta:

Importante...

Seleccioneaquelidiomadeseadoparaelprocesodeinstalacin
y la plataforma definitiva. Tenga en cuenta que el idioma podr
ser cambiado en cualquier momento
en caliente
mediante el
paneldeconfiguracinporelusuarioadministrador.

LuegohagaclicenContinuar/Nextparairalsiguientepaso.

Sehareportadoqueenalgunosservidores
webbajowindowslalistadeseleccinde
idiomapresentalamismadescripcin.Aqu
deberguiarseporelnombredearchivo
(es.phpparaespaol,en.phpparaingls,etc.)

Revisindelalicencia

Bsicamenteenlasiguientepantallaqueparecedespusdelaseleccindelidioma,podrustedencontrarla
licenciabajolacualesliberadoPrctico:LicenciaGNU/GPLversin2.0.Estalicencialegarantizaaustedlas
siguienteslibertades:
EjecutarPrcticosinimportarelpropsito
EstudiarelfuncionamientodePrcticoymodificarlosiaslodeseapormediodelaedicindesus
cdigosfuente.
RedistribuircopiasohacertodaslasinstalacionesquedeseedePrctico.
DistribuircopiasoinstalacionesdelasversionesdePrcticoqueustedhayamodificado,casoenel
quedeberponeradisposicintambinsucdigofuente.

Enpocaspalabras,ustedpuedeejecutarPrcticoencualquierentornoysinimportarsufinalidadoincluso
regalarcopiasaotrosoredistribuirloporlared.

Visite

practico.org
paramsinformacin

14


Documentacinoficial.

Unavezrevisadalalicenciahagaclicen
[Continuar]
paraseguiradelanteconlainstalacin.

Verificacindeconfiguraciones

En la siguiente pantalla, Prctico verificar el estado de algunas configuraciones bsicas para que la
herramientapuedaoperarcorrectamente.

Usted contar con un enlace en la parte superior denominado como


[este enlace] y que le permitir abrir la
pgina de informacin de PHP para que pueda revisar las configuraciones actuales de su preprocesador de
hipertexto. All podr usted revisar si cuenta con las extensiones mencionadas posteriormente para PDO y
GD, aunque Prctico tambin verificar esto en tiempo de ejecucin posteriormente y le avisar sobre
cualquiernovedadqueencuentre.

Para la instalacin y escritura de archivos de configuracin es necesario que Prctico tenga permisos
completos sobre ciertas rutas al momento de instalacin. En caso de no contar con los permisos mnimos
requeridosustedpodravisualizarunmensajede
[Error]
comoelqueseapreciaacontinuacin:

El mensaje indicar en qu carpeta(s) se encuentra el inconveniente. Usted deber entonces asignar


permisos de escritura para la carpeta en cuestin y hacerclicsobreelbotn
[Probardenuevo]hastaquetodas
lasrutasdigan
[Correcto]

Visite

practico.org
paramsinformacin

15


Documentacinoficial.

Aclaracin

Prctico desplegar algunos comandos comunes con los que usted


puede configurar la escritura sobre esas carpetas sin perder la
seguridad de su sitio. Ejecute los comandos sugeridos sobre el path
dondehadescomprimidoPrctico.

Tenga en cuenta que los permisos pueden ser asignados de mltiples


maneras segn su plataforma o servidor. Esto es slo una sugerencia
paraservidoresLinux,BSD*nix.

Lospermisosdebenconservarse
inclusodespusdelfinalizarel
procesodeinstalacinparaque
Prcticopuedaseguiralmacenando
sinproblemasconfiguraciones,llaves
parawebservices,backups,parches
deactualizacin,etc.

Configuracingeneraldelaherramienta

Tal vez uno de los puntos ms crticos es la conexin con su motor de base de datos. Para esto es
importante que ya tenga creada la base de datos sobre la cul desea trabajar y que siga los consejos
disponibles en el asistente. Hacerunalecturacuidadosadelosmensajesdesplegadosporelasistenteayuda
acrearunaconfiguracinadecuada.

En general la configuracin, aunque un proceso de cuidado, es algo muy simple y opera de manera muy
similar a cualquier gestor de contenidos que conozca como Joomla, Drupal, WordPress, o similares. Las
seccionesaconfigurarsedescribenacontinuacin:

Enlaconfiguracinde
[MotordeBasedeDatos]
cuentaconlassiguientesopcionesbsicas:
Importante!

Tipo de motor
: Indique el motor de base de datos sobre la
cualtrabajarPrctico.RecomendadoMariaDBMySQL.
Servidor
: Direccin pblica o privada que pueda ser resuelta
por el servidor web y donde reside su servidor de base de
datos. Si todo corre sobre la mismamquinaunlocalhostser
suficiente.
Base de datos
: Nombre de la base de datos creada
previamenteparaPrctico.

NoolvidequeenPrctico,ubicandoel
ratnsobrecadaiconogrficode
interrogacinoadmiracinubicadoal
ladoderechodecadacampo
encontrarinformacinvaliosasobre
suuso.

Usuario
: Nombre del usuario que tiene acceso al motor de base dedatosy conprivilegiossuficientes

Visite

practico.org
paramsinformacin

16


Documentacinoficial.

paracreartablassobrelabasededatoscreadaparaelusodePrctico.

Contrasea
:Claveutilizadaporelusuarioanteriorenelmotor.

Prefijo tablas internas de Prctico


:
(
Puede usar el valor predeterminado)
Las aplicaciones
desarrolladas en Prctico son almacenadas sobre la base de datos, sus tablas, formularios,informes,
usuariosydemsobjetossontodosalmacenadosenlabasededatos.

Prefijo tablas de Aplicacin


:
(
Puede usar el valor predeterminado)

Son aquellas tablas creadas por


usted para su aplicacin,comoporejemplounatabla declientes,proveedores,facturas,etc. Aspues
una tabla de clientes podra llamarse app_clientes si se deja el prefijo predeterminado. Tenga en
cuenta:
Este prefijo no afecta para nada el funcionamiento de la aplicacin ni tendr que preocuparse
porlduranteeldiseo.
Si el prefijo es vaco tampoco afecta pero spuedesertilcuandosehacenintegracionescon
otras aplicaciones para que Prctico detecte las tablas de la otra aplicacin y pueda
manipularlas.Veaelapartadosiguiente:IntegrandoaPrcticoconotrasaplicaciones.
Este prefijo no deberasercambiadoposteriormenteamenosque ustedtengaclaroqueestar
operandosobreunaaplicacindiferente.

Anotacinsobrelosprefijos
: ConfigurarprefijosdetablaigualesparasuaplicacincomoparaPrctico
permitir que desde la aplicacin se manipulen registros de los diseos mismos. Esta configuracin
debera ser utilizada si el usuario cuenta con amplia experiencia sobre la herramienta y desea
implementar diseos dinmicos donde sus usuarios finales pueden alterar los formularios, informes y
dems.Lamayoradelasinstalacionesdeberantenerprefijosdiferentes.

Llave de paso
:
(
Puede usar el valor predeterminado)

Por seguridad, Prctico genera una llave de


paso mediante la cual firma todos los usuarios creados en la aplicacin. Deestamanerausuarios de
diferentesaplicacionesoinstanciasdePrctico,quecorrensobreunmismoservidor,nopodrnutilizar
susdatosdesesinparaingresaraaplicacionesnoautorizadasparaellos.Tengaencuenta:
La llave de paso es un valor secreto que slo debe conocer el administrador, adems es
utilizadaparalaejecucindealgunoswebservices.
Cambiar una llave de paso en la configuracin o reinstalacin puede dejar inactivos
todos los
usuarios de su aplicacin debido a que durante el proceso de login sus credenciales ya no
coincidir con la llave de paso cifrada. En estos casos es suficiente con devolver el valor
originalalallavedepasosobreelarchivodeconfiguracin.
En caso de perder su llave de paso la nica alternativa ser que genere una nueva y luego
actualice manualmente la tabladeusuarios dePrcticoagregandoelnuevovalorenMD5de la
llavegeneradaalcampodellavedepasodecadauno.

Visite

practico.org
paramsinformacin

17


Documentacinoficial.

Importante

Seagradecelalecturade
documentacinybsquedade
respuestaspreviasaotros
problemascomunescomobuena
prcticaantesdepreguntaralgo.

Algunos usuarios han reportado errores durante la ejecucin de algunos


motores como Maria DB 10+.
Revisar respuesta sobre el grupo de discusin
aqu
.

As como el escenario anterior, en general para inquietudes y solucin de


problemas comunes puede consultar los espacios de la comunidad, foros,
grupos y chats en bsqueda de respuestas o la oportunidad de formular una
preguntaespecfica.

Revisar antes de preguntar ayuda a mantener la comunidad limpia y


concentrarnosentemasnicos.

En la configuracin de
[Parmetros para su primera aplicacin] cuenta con las siguientes opciones donde
bsicamente deber ingresar un texto descriptivo para cada una. Todas hacen referencia a los valores
utilizados para la aplicacin que usted piensa disear en Prctico y que posteriormente sern utilizados en
encabezados o pie de pgina para informes o incluso para el ttulo desplegado en la parte superior de su
aplicacinparatodoslosusuarios:

Enlaconfiguracinde
[Configuracindeopcionesvarias]
cuentaconlassiguientesposibilidades:

Zona horaria
: Especifique la ubicacin geogrfica donde se encuentra el servidor que correr su
aplicacin.Estoesimportanteparaeladecuadomanejodefechasyhoras.

Visite

practico.org
paramsinformacin

18


Documentacinoficial.

Nmero de caracteres para captcha


:
(
Puede usar el valor predeterminado)
Eselnmerodeletrasy
nmeros que aparecern en la ventana de login cada vez que el usuarioacceda alaaplicacin. Este
campo slo es utilizado cuando el motor de autenticacin se configura a Interno o LDAP, si el
administrador habilita el acceso mediante proveedores OAuth o redes sociales este campo ser
ignorado.

Activar modo de depuracin


:
(P
uede usar el valor predeterminado)
Este modo es de vital
importancia para los administradores. En sistemas que se encuentren en produccin siempre debe
estar apagado pero cuando por algn motivo se detecte sobre el sistema alguna operacin que no
funciona correctamente entonces se podra encender para que asPrcticodesplieguemsmensajes
enpantallaquetalvezorientenacercadelosposibleserroresquesegeneran.

Buscar actualizaciones automticamente


: Permite que Prctico genere un aleatorio (1/9) cada vez
que ingresa el usuario admin a la herramienta de manera que en algunas ocasiones al cargar el
escritorio Prctico revisar en los repositorios oficiales de la herramienta para buscar por nuevas
versiones y en caso tal presentar el mensaje informativo al usuario admin. Esta funcionalidad puede
poner algo lenta la carga del escritorio del admin mientras se hace la verificacin pero dependerde
suvelocidaddeaccesoaInternetparadescargar elarchivode10bytesquecontienelainformacinde
versiones.Elrestodeusuariosnosevenafectados.

Motor de autenticacin > Tipo


:
(
Puede usar el valor predeterminado)
Especifica dnde son
almacenadaslascredencialesdelosusuariosqueingresarnalsistema.Tengaencuenta:
Por defecto Prctico cuenta con la posibilidad de administrartodaslas credencialesdeusuario
(almacenadassobrelatablacore_usuarios).
En caso de seleccionar el tipo LDAP se asume que usted cuenta con unservidordedirectorio
para autenticar todos los usuarios de manera centralizada en la redyqueagregarelrestode
parmetrosnecesarios.
Siempre el usuario admin es autenticado desde tablas internas sin importar si se ha
configurado otros motores o proveedores de autenticacin. Esto se hace para evitar que por
algnerrordeconfiguracinsepierdaelaccesoalaherramientaparaelusuarioadmin.
Por defecto, Prctico ya cuenta con un webservice integrado que se encarga de realizar el
proceso de autenticacin de usuarios. Este web service le permitir incluso utilizar a Prctico
como un servidor de autenticacin centralizado para otros aplicativos o servicios en su red.
Consulteenlosapartadossiguientes:
Prcticocomoservidordeautenticacin.
Protocolo de transporte preferido: A partir de la versin 14.1 y siguientes Prctico incorpora la
posibilidad que el administrador de la herramienta definaduranteelprocesodeautenticacinsiquiere
o no utilizar HTTP cifrado. Aquellos que realicen una instalacin de Prctico sobre servidores con
certificados correctamente firmados no deberan tener inconvenientes para accesar al web service de
autenticacin de Prctico, sin embargo,aquellosqueutilicencertificadosautofirmadosoyacaducados
puede que tengan dificultades pues el servicio de autenticacin no podrseralcanzadodirectamente,

Visite

practico.org
paramsinformacin

19


Documentacinoficial.

asquepodrnpasaramodoHTTPsincifradoparaesto.Lasopcionesson:
Autodetectar por URL
: En este Prctico revisa la URL de acceso utilizada por el usuario, si
detecta que ha sido llamado mediante HTTPS entonces activar el modo cifrado para
autenticar.
HTTP sin cifrar (por defecto): El transporte se hace con el protocolo estndar, sin usar
certificadosSSL.Eselmodomsefectivoparahacerlogin.
HTTPcifrado
:SiemprehaceusodeHTTPScuandosellamealwebservicedeautenticacin.

El uso de la seccin de configuracin para Autenticacin basada en LDAP est descrita en el apartado
posterior Topicos Avanzados y podra ser dejada en blanco inicialmente, posteriormente podra ser
cambiadaencalientedurantelaejecucindelaherramienta.

Algoritmo de encriptacin
: Indique aqudequmaneracifraoalmacenalascontraseas suservidor
LDAP. Esto es fundamental pues antes de cualquier solicitud al servidor Prctico har el cifrado
correspondienteparaenviarlascredenciales.

Servidor
: Direccin IP o nombre de host que con quien debe conectar Prctico cada vez que un
usuariosevayaaautenticarparapoderverificarsuscredenciales.

Puerto
: El puerto utilizado por su servidor de directorio. Acontinuacinalgunoscomunesaunquesu
configuracinpuedevariar:
LDAP:389
LDAPcifrado:636
ActivedirectorySambaPDC(SSL):445

Dominio
:Alcualpertenecenlosusuariosaautenticar

Unidadorganizacional
:SobrelacualhansidocreadoslosusuarioseneldominiooservidorLDAP

Haga clic en
[Continuar]
para proceder conlaescrituradelarchivodeconfiguracinyoperacionesdebasesde
datos.

Visite

practico.org
paramsinformacin

20


Documentacinoficial.

A continuacin deber tomarunadecisinacercadesialteraonolabasededatosconfiguradaparaPrctico.


Normalmente debera seleccionar la opcin 1 para instalaciones frescas. Para el uso de la opcin 2 le
recomendamosrevisarlostpicosavanzadosenlosapartadosfinalesdeestemanual.

Tenga en cuenta que en lugar de la ventana anterior podra visualizar algn mensaje de error de conexin
cuando los parmetros debasededatosingresadosnoseanloscorrectos. Siesasregresealpasoanterior,
verifiquelosdatoseintentenuevamente.

Revise la ejecucin de operaciones sobre la base de datos, y si lodesea,exploresobresumotordebasede


datospararevisarlaestructuradetablasgeneradasobrelabasededatosespecificadaparaPrctico.

Visite

practico.org
paramsinformacin

21


Documentacinoficial.

Posteriormente posiblemente sea desplegado el mensaje de cierre de sesin que elimina todas las variables
en tiempo de ejecucin creadas por el asistente y le permite ingresar a la nueva instalacin. Haga clic en
[Ingresar]
parairalaventanadeloginencasoquenohayasidoredireccionadoastaautomticamente.

Ahorautilicelascredencialespredeterminadasparalaventanadeaccesodesplegada:
Usuario:
admin
Clave:
admin

No olvide cambiar su clave despus del primer ingreso yeliminarorenombrarlacarpeta/insexistentedentro


de la carpeta donde se ha realizado la descompresin de Prctico en caso que el asistente le muestre el
mensaje de advertencia correspondiente. Esa carpeta contiene el asistente de instalacin y si vuelve a ser
ejecutadopodraperdersusconfiguraciones,elmensajedeadvertenciaesdelasiguienteforma:

Visite

practico.org
paramsinformacin

22


Documentacinoficial.

Tambindeberaactualizaralmenoselcorreoelectrnicodeladministradordelaplataformacambiandoel
genricoasignadodurantelainstalacinparaefectosderecuperacindeclaveyposterioresnotificaciones.
Sielcorreonohasidoactualizadosiempreserdesplegadaunaadvertenciaalusuarioadminas:

Visite

practico.org
paramsinformacin

23


Documentacinoficial.

2.3.Instalacionesdeintegracinconotrasaplicaciones

Prctico permite ser instalado sobre bases de datosutilizadasporotrasaplicaciones. Estolepermiteintegrar


aplicaciones (que incluso pueden ser slo para escritorio de manera nativa) con las aplicaciones web
generadasporPrctico.

No importa qu aplicacin es, si es web o de escritorio


, si es un desarrollo propio o uno libre como por
ejemplo Joomla, WordPress, OpenBravo, etc.
Si la aplicacin a integrar se encuentra en un motor de
base de datos soportado por Prctico y usted instala Prctico sobre dicha base de datos, entonces
Prctico se encargar de detectar todassustablasparaquepuedainiciarconelprocesodediseode
formulariosoinformessobreesesistema.

Usted podr utilizar Prctico para ingreso de informacin directa integrndose con su aplicacin sin pasos
adicionales mediante sus formularios o simplemente disear nuevos y mejores informes personalizados
medianteelmotordeinformesdePrctico.

Pararealizarestetipodeintegracionesesrecomendable:
Contar con un backup completo de la base de datos donde desea hacer la integracin para fines de
poderrestablecerantecualquiereventualidad.
Hacer una verificacin previa de los nombres de tablas generados por Prctico para su operacin
(aquellos de prefijo core) para que no se crucen con algn nombre de tabla ya existente. Si es as
ajustesuprefijoaotrovalor.
Verificarquelabasededatosdesuaplicacinseaaccesibledesdeelservidorwebdondeejecutar
Prctico.Estoesalgoquepodrverificarentiempodeinstalacin.

Cmohagolaintegracin?

Elprocesoestansimplecomoloquevieneacontinuacin:
1. InicieelasistentedeinstalacindePrcticonormalmentecomosifueraunainstalacinfresca.
2. Cuando llegue a la ventana de configuracin de la herramienta tenga en cuenta lasrecomendaciones
paralossiguientescampos:
Tipo de servidor: Indique el tipo deservidorsobreelcual residelaaplicacinconlaque desea
integrarse.
DireccinIPohostdelservidordondeseencuentralabasededatos.
Basededatos:Nombredelabasededatosconlaquedeseaintegrarse.
Usuarioycontraseaparaelaccesoalmotoryaesabasededatosenparticular.
Deje el prefijo de tablas internas de Prctico con su valor predeterminado a menos que en la
revisinpreviaencuentrequeyaexistentablasquecoincidanconalgunausadaporPrctico.
Elimine elprefijodetablasdeaplicacinydejeestecampovaco. EstohacequePrcticotome
todas las tablas de la aplicacin existentes y permita administrarlas para crear nuevos

Visite

practico.org
paramsinformacin

24


Documentacinoficial.

formulariosdeingresodeinformacinoreportes.
3. Al momento de guardar la configuracin y ejecutar scripts de bases de datosseleccionelaopcin1
Agregar informacin a la BD para que el asistente agregue las tablas correspondientes de Prctico.
No se preocupe, las tablas existentes de su aplicacin
no son eliminadas, sobreescritas, alteradas o
manipuladasdealgunamaneraduranteesteproceso.
4. FinaliceelprocesodeinstalacineingreseaPrctico.

Tengaencuentaque...

A partir de este momento podr verificar dentro de las herramientas de


gestin de base dedatosdePrcticosiyaseencuentrandisponiblestodas
las tablas de su otra aplicacin y podr visualizarlas en los asistentes de
creacin de formularios para ingreso de datos o en los generadores de
reportes.

Si sus tablas aparecen all,


felicidades! usted ha integrado a Prctico y
susventajasconlaaplicacinanterior.

Podr gestionar las tablas desde


Prctico,agregarnuevos camposo
eliminar otrosperola manipulacin
de las tablas en su estructura
puede generar inconvenientes con
laotra aplicacinquelasutiliza, as
queseacuidadoso.

Visite

practico.org
paramsinformacin

25


Documentacinoficial.

2.4.Aplicacindeparchesdeactualizacin

Cuidado

La aplicacin de un parche de actualizacin esunprocesodelicadoyque


requiere la atencin adecuada de parte del administrador de la
herramienta.

Antes de la ejecucin de un parche de actualizacin se recomienda


revisar la documentacin asociada al mismo, los cambios relacionados
con la estructura de labasededatosycmopuedenestosafectarasus
aplicacionesactuales.

No se recomiendaaplicarunparchesuperiorparasaltarseversiones,en
su lugarelprocedimiento recomendadoseraaplicarunaa unatodaslas
actualizaciones en orden hasta llegar a la ltima versin estable
disponible. De esta manera se aplican ordenadamente todos los
cambios de archivos y basesdedatosdndoleaustedun mayorcontrol
enlaverificacindelfuncionamientoposteriorencadaactualizacin.

Usuarios ms experimentados en la herramienta podran intentar la


instalacin de la ltima versin estable y la migracin de su base de
datos actual previa verificacin de los cambios sobre su estructura,
aunquesiempreesmssencilloyseguroelprocedimientoestndar.

2.4.1.QuesunParche?
Consideramos un parche a un archivo comprimido en formato ZIP que contiene los archivos mnimos
necesarios para ser aplicados a una versin estable de la herramienta de manera que ample sus
funcionalidades,corrijaerroresomejoresurendimiento.

El proyecto Prctico provee parches de actualizacin4 que permiten la actualizacin de su sistema a nuevas
versiones con funcionalidades mejoradas y se recomienda encarecidamente que mantenga su instalacin lo
msactualizadaposible.

Desarrolladoresinteresadosenproveersuspropiosparchesdemantenimientopuedenrevisarladocumentacinasociadaenelsitiooficial:
https://github.com/unix4you2/practico/wiki/6.Parchesdelsistema

Visite

practico.org
paramsinformacin

26


Documentacinoficial.

2.4.2.Recomendacionespreliminares

Aunque Prctico tomar algunas precauciones por usted a la hora de aplicar un parche como verificar
versionamientoycompatibilidad,generaralgunosbackups,etc.Serecomiendaqueusted:

Hagaunacopiadeseguridaddesubasededatosytodossusscripts.
Tengaalamanoelinstaladordesuversinactualencasoquenecesitereinstalarnuevamente.
Conocer su llavedepasoactualy engeneralsus configuraciones. Sirequiererevisarlasmanualmente
podr encontrarlas en la carpeta
/core sobre los archivos configuracion.php, ws_llaves.php y
ws_oauth.php
Realizar el proceso en otra instalacin similar a la actual (misma versin) para verificar su
comportamientoyquaccionestomardurantelainstalacinsobresuplataformadeproduccin.
Revisar en detalle el log de cambios publicado en la web e incluido con el mismo parche para que
tenga claro qu partes del sistema se vern mejoradas o tendrn algn cambio con la aplicacin de
estearchivo.

2.4.3.Procesodeaplicacindeparches

Identificandomiversinactual

El primer paso para aplicar un parche incremental es conocer su versin actual de la herramienta. De esa
manera podr ubicar el archivo de actualizacin adecuado que lo llevar a la siguiente versin. Para
identificarsuversinsigaestospasos:

1. Ingresealaherramientaconlascredencialesdelusuarioadmin
2. En el men superior de configuracin
, Haga clic sobre el botn o enlace existente para
Actualizacin/CopiasdeSeguridad
3. Enlaventanadesplegadareviseporeltexto
ActualmenteustedutilizalaversinXX.XXX

Otra forma alternativa para revisar la versin actual puede ser leyendo el archivo
inc/version_actual.txt
. Se
recomienda no cambiar este valor manualmente bajo ningn motivo. Prctico est en capacidad de
actualizarlo segn sea el caso. Slodesarrolladoresdelaplataformaenprocesodepruebasdeberanalterar
enalgunoscasossuvalorperonuncaenproduccin.

Descargandoelarchivodeactualizacinadecuado

En la seccin de descargas de la pgina o repositorio oficial encontrar adems del archivo de instalacin
completo,otrosarchivosquepuedenacompaarloas:

Visite

practico.org
paramsinformacin

27


Documentacinoficial.

Para descargar el archivocorrectotengapresentequelanotacinutilizadaparastosseencuentra enunade


lassiguientesdosformas:

Forma1:Archivosdeactualizacinconcambiodeversin:
Delaforma
Practico_XXXXX_to_YYYYY.zip
Donde XX Representa el ao y nmero de la versin actualmente instalada por usted y YY
representalaversinfinaldespusdeaplicarlaactualizacin.

Por ejemplo el archivo Practico_151_to_152.zip sera un archivo que permite actualizar desde la
versin15.1alaversin15.2delaherramienta.

Usted deber entonces buscar el archivo de actualizacin correspondiente para su versin


actualmenteinstalada(identificadaenelpasoanterior)yquelollevaralasiguienteversinliberada.

Forma2:Archivosdeactualizacinsincambiodeversinoparchesintermedios:
Delaforma

Practico_XXXXX_Actualizacion_YYY.zip
DondeXXRepresentaelaoynmerodelaversinactualmenteinstaladaporustedyYY
representaelnmerodeactualizacinparalaversin.Puedeinterpretarlocomounaespeciede
servicepack
paralaversin.

Por ejemplo el archivoPractico_15.2_Actualizacion_002.zipseralasegunda actualizacindearchivos


paralaversin15.2. Estetipo deparchessolamentehacen cambiossobrearchivosparacorregirbugs
de ltimo momento o desplegar funcionalidades que se acaban de terminar sin tener que esperar
hasta la prxima versin. Normalmente se deja slo el ltimo liberado pues se trata de parches
incrementales. Si usted ya aplic el 001 entonces puede aplicar tranquilamente el 002, si no ha
aplicado ningn parche entonces tambin podr aplicar tranquilo el 002 ya que steltimo incluyelas
mejorasdel001.

Estos son parches intermedios entre versiones y se recomienda mantenerlos aplicados sobre el
sistemaenlaltimaversindisponible.

Tenga en cuenta: Este tipo de parches nunca cambian o actualizan el sistema entre versiones. No
espere que por ejemplo un parche llamadoPractico_15.2_Actualizacion_002.zipalaplicarlosobreuna
versin 15.1 haga la actualizacin completa de versin. Por ningn motivo aplique parches de una
versinsobreotrapuesstosdebenobedeceralaversinactual. Ensulugar,usteddeberaaplicarel

Visite

practico.org
paramsinformacin

28


Documentacinoficial.

parchequeactualizadesdelaversin15.1haciala15.2yluegoaplicarelparche002.

Aplicandoelparchedeactualizacinamisistema

Unavezdescargadoelarchivoadecuadoparasuversin,ejecutelossiguientespasos:

1. Ingresealaherramientacomousuarioadmin
2. Vayaalaopcinde
[Actualizacin/CopiasdeSeguridad]
3. Seleccionealarchivodeparchequehadescargado
4. Haga clic en [
Cargar el archivo].
Prctico deber presentar una ventana de cargue completado, ante
cualquier error verifique el archivo seleccionado y quetengapermisosdeescriturasobrela carpetade
trabajodePrctico/tmp
5. Hagaclicen
[Continuarconlarevisin]
6. Prctico presentar unresumenconlaverificacindeintegridaddelosarchivosincluidosenelparche,
las funcionalidades implementadas por el mismo y los scripts de basede datosquesernejecutados.
Serecomiendahacerunarevisindelainformacin.
7. Hagaclicen
[Continuar]
paraaplicarlaactualizacin.
Tip...

Durante el proceso de actualizacin Prctico deber contar con permisos


de escritura sobre las carpetas que son afectadas por el parche para que
de esta manera pueda reemplazar o agregar los archivos con las nuevas
funcionalidades.

Al finalizar se presentar el resumen con losarchivosescritosysecontar


con un archivo de backup para losscriptsyparalabasededatosantesde
la instalacin. Deesamaneratendrcmodevolverelprocesoencasode
sernecesario.

Antecualquiereventualidad o para
aquellos usuarios que as lo
prefieran, la aplicacin de un
parche puede ser realizada
manualmente con simplemente
sobreescribir
los
archivos
existentes en su instalacin con
los distribuidos en el parche y
adems ejecutando los scripts de
basededatoscuandolorequiera.

Esnormal
quedurantelaaplicacinconsecutivadeparchesintermediosdeformaActualizacion_XXXque
tengancambiossobrebasesdedatosseobtenganmensajesdeerroralfinalizar.Estossimplemente
informanquelaalteracindealgncampo,modificacindeestructuradelabasededatos,etc.yahasido
seguramenterealizadaenlaaplicacindeotroparchedelamismaformaconanterioridad.

Porejemplo,siaplicaunparche001dondeseintroducencambiosenalgncampoyluegoustedaplicael
parcheActualizacion_XXXposteriordelamismaversin,entoncesstospresentarnelmensajedeerror
informandoestasituacinpuessetratadeparchesincrementales.

Siustedporelcontrarioaplicaporprimeravezaunltimoparche,digamosActualizacion_006queyaincluye
muchoscambiosdebasededatospuedequenoveamensajealguno,puesloscambiosapenasseestn
ejecutandoporprimeravez.

Visite

practico.org
paramsinformacin

29


Documentacinoficial.

2.5.Consideracionesparaunareinstalacin

Importante!

Si est reinstalando Prctico para subiraunanuevaversinentoncesnodeberahacerunareinstalacin. Se


recomienda revisar los apartados anteriores sobre Actualizacin de la herramienta para conocer las
posibilidadesendetalle.

Algunos administradores puede que estn considerando la posibilidad de reinstalar su herramienta poralgn
motivo. En estos casos el proceso se reduce a devolver el directorio de instalacin de Prctico a su lugar e
iniciardenuevoelasistente.

Deberatenerencuenta:
Sususuariosquedarndeshabilitadosamenosqueduranteelprocesodeinstalaciningreselamisma
llavedepasoquetenaconfiguradaantes.
En caso de no tener la llave de paso a la mano, podr instalar con una nueva y luego actualizar
manualmentesutabladeusuariosparaqueaspuedaningresarsinproblemaasuaplicacin.
Si durante la instalacinseleccionalaopcin1quealtera alfinallabasededatostengaencuentaque
todossusformularios,informesydemsserneliminados.

Visite

practico.org
paramsinformacin

30


Documentacinoficial.

3.Construyendosusaplicaciones

3.1.Definiendounabasededatos

Estas operaciones aplicarn sin importar si usted est trabajando con tablas de aplicacin creadas
directamente en Prctico o porque se trate de tablas detectadas desde alguna aplicacin para la cual hace
ustedunprocesodeintegracin.

Este mdulo permite la definicin de estructuras de


datos sobre las cuales ser almacenada la
informacin de la aplicacin desarrollada.
Son
tablas sobre el motor de base de datos que se
encuentran separadas lgicamente de las tablas
sobre las cuales Prctico almacenar todo el diseo
de la aplicacin (a menos que durante el tiempo de
instalacinlosprefijosfueranconfiguradosiguales).

Para su diseo se puede seleccionar entre una


opcin manual o avanzada donde se pueden crear
todos los campos uno a uno despus de haber sido
generado el primer campo de la tabla. De manera automtica se agrega siempreuncampoIdautonumrico
paraelcontroldetodaslasoperacionessobrelosregistrosallalmacenados.

Adicionalmente, si durante el proceso de instalacin es configurado el prefijo detablasdemaneraadecuada,


Prctico podrautodetectartodaslastablasexistentesypermitiradministrarlasmediantelosdemsmdulos
de la herramienta para agregar, consultar o modificar informacin sobre estas, permitiendo as la integracin
transparenteentrePrcticoyotrasaplicacionesexistentes.

Visite

practico.org
paramsinformacin

31


Documentacinoficial.

3.1.1.Adicindetablas

Manualmente

Para crearunanuevatabla desdesuusuariodeadministracindespliegueelpaneldediseohaciendoclicen


[Disearaplicacin]ubicadonormalmente enlapartesuperiordelaherramienta yunavezall,haga clicsobreel
primerbotncorrespondientealaopcinde
[BasedeDatos]
.paravisualizarlasiguienteventana:

Diligencie el nombre de la tabla en el campo de texto. Utilice una notacion sencilla sin espacios, guiones o
caracteres especiales. Esrecomendableingresartodoen minsculayencasoderequerirespaciosutiliceen
elcaracterunderline_.Luegohagaclicen
[Creartablaydefinircampos]
.

La herramienta lo redireccionara de nuevo a la ventana que presenta todas las tablas de la aplicacin con
posibilidad de eliminarlas (cuando no tienen registros) o editarlas cuando requieraagregaroeliminarcampos
delasmismas.

Haga clic en el botn [


Editar] para agregar sus campos. Para informacin detallada sobre la adicin de
camposconsulteelapartadodeadicindecamposaunatablaenlaspginassiguientes.

Pormediodelasistente

La creacin de tablaspormediode asistentes permitequeelusuarioagreguetablasconestructurascomunes


de manera rpida. La personalizacin y adicin de nuevas plantillas de tablas para el asistente puede ser
realizadademanerasencillamediantelaedicindearchivosdetextocreadosenlacarpeta/wzddePrctico.

Para ingresaralasistentedecreacindetablasdesdesuusuariodeadministracin
despliegue el panel de diseo haciendo clic en [Disear aplicacin] ubicado
normalmente en la parte superior de la herramienta. As ser desplegada una
ventanasimilaralaimagen.

Una vez all, haga clic sobre el primer botn correspondiente a la opcin de
[Base
deDatos]
.

En la ventana desplegada haga clic en el botn de [


Asistente] ubicado al lado derecho para iniciarlacreacin
desutablabasadoenunadelasplantillasdisponibles.

Visite

practico.org
paramsinformacin

32


Documentacinoficial.

Una vez en la ventanadelasistenteparageneracindetablasasigne


un nombre para la misma en el primer campo y luego seleccione la
plantillaqueseajustemsasusnecesidades.

Por ltimo, haga clic en [


Crear tabla y definir campos] para que la
herramienta cree la tabla por usted y lo redireccione a su edicin en
casoqueustedrequieraagregaroeliminarcamposdelamisma.

3.1.2.Adicindecamposaunatabla

La adicin de campos a una tabla en Prctico es una tarea muy sencilla, incluso
cuandosehace
encaliente
parasistemasqueseencuentrenenproduccin.

Para agregar un campo a unatabladirjaseallistadodetablasdelaherramientay


luego haga clic sobre el botn [
Editar] ubicado al ladoderechodela tabladeseada
para ver una ventana similar a la imagen aqu presentada. All diligencie los
siguientescampos:

Nombre: representa el nombre del campo. Debe iniciar con una letra, sin
guiones puntos o espacios (notacin de variable) y se recomienda en
minsculas.
Tipo: Indica el tipo de dato que ser almacenado. Por compatibilidad, se
presentan cuatro tipos dedatosbsicosaunqueinclusoeldiseadorpuede
que quiera utilizar solamente los tipos de datos entero, texto corto y texto
largoqueseencuentrandisponiblesentodoslosmotores.
Longitud: En el caso de los campos de texto corto (conocidos en base de
datos como varchar), se puede especificar su longitud. Este campo no
aplicaparalosotrostiposdedato.
Autoincremento: Permite definir el valor de autoincremento para los
campos, sin embargo, este es un atributo que slopuede serutilizadoporadministradoresavanzados
que han suprimido la propiedad de autoincremento para el campo Id gestionado por Prctico, de lo
contrario, al tratar de agregar un autoincremento ser generado un error de SQL debido a que sobre
unatablanosepuedentenerdosomscamposconautoincremento.
Permitir valores nulos
: Indica si el campo permite valores nulosdurantelasinsercionesderegistros.
Esta es una configuracin desde la definicin de la tabla, an cuando todos sus campos permitan
valoresnulosustedpodrdefinirensuformulariolaobligatoriedaddealgunoscampos.

Visite

practico.org
paramsinformacin

33


Documentacinoficial.

Valor predeterminado(yelcampodevalorsiguiente):Indicaconquvalordebeserllenadoelcampo
cuando el usuario no enve ninguno. Tenga presente que para campos definidossobreformulariosel
valor mnimo enviado es un vaco, por lo que ya no es considerado como no enviado. Este valor
aplicara para aquellos formularios que insertan datos sobre una tabla pero sin tener este campo
definido.

Consideracionesespecialessobrelostiposdedatoyvalidaciones

Las validaciones por tipo durante el diseo de formularios posteriores pueden ser aplicadasincluso si
eltipodecamposobrelabasededatosdifieredelavalidacinindicadaenelformulario.
Todo tipo de dato sobre su base de datos podra ser declarado como Cadena (longitud 255) para
facilitarsucompatibilidadcondiferentesmotores.
An cuando todos los campos sean definidos como posible valor nulo, sobre el diseo de cada
formulario que hace las inserciones a la tabla usted podr indicar si el campo es obligatorio o no y
Prcticoharlasvalidacionesdelcaso.

Visite

practico.org
paramsinformacin

34


Documentacinoficial.

3.2.Generandoformularios

Este mdulo permite el diseodeformulariosasociadosatablasdeusuario,demaneraquesepuedandefinir


elementos para la insercin de datos, bsqueda de informacin y presentacin de informes combinados
embebidosdetipogrficaotabladedatos.

Adems de los controles bsicos asociados a la edicindevalores paracampos,permitetambinlacreacin


de botones con acciones prediseadas o con enlaces hacia funciones personalizadas. Durante el proceso,
cadacampooaccines100%funcionalypuedeserprobadadeinmediatoporeldiseadordelaaplicacin.

Esta caracterstica permite la creacin de formularios que presenten informacin en tiemporealsobrealguna


consultarealizadaporelsistema.

A continuacin una vista de ejemplo durante el diseo de un formulario para adicin de clientes en una
aplicacin. A la izquierda se aprecianlasherramientasutilizadasparaagregarlosdiferenteselementos yala
derechalavistapreviayfuncionaldelformulariodiseado:

El diseo de formularios en Prctico puede ser realizado en caliente, es decir, el diseador de aplicacin
podrmodificarinclusoaquellosformulariosqueseencuentrenenusoporalguienms.

Para detalles acerca de los elementos que pueden serinsertadosenunformularioysusposibilidadesrevisar


elapartadosiguientede
Formulariosdedatos
.

Visite

practico.org
paramsinformacin

35


Documentacinoficial.

3.2.1.Formulariosdedatos

Losformulariosdedatossonventanasquepresentanalusuariounainterfazpormediodelacualpuede
realizaroperacionesbsicascomolaadicindeinformacin,consulta,eliminacin,entreotros.

Dentrodeloscontrolesprincipalescontrolesdedatosquepuedenseragregadosaunformulariose
encuentran:
Deinters...

Camposdetextocorto

(sobreunHTMLText)
Camposdecontrasea
(sobreunHTMLPassword)
Camposdetextolibre
(largosobreHTMLTextArea)
Camposdetextoconformatoenriquecido
(SobreTextArea)
Camposdeseleccin
(CombossobreHTMLSelect)
Camposdeseleccin
(RadiossobreHTMLRadio)
Camposdeslizadores
(sobreHTMLSlider)

Tenga presente que elnombrede


sucampoenla tabla eselnombre
desucampoenelformulario ypor
lo tantoel nombre dela variablea
ser procesada. Esto es til para
aquellos que desean realizar
operaciones especficas con la
informacin ingresada, ejecutar
secuencias de JavaScript o
procesar susformulariosconotras
rutinaspersonalizadas.

Otrostiposdeobjetoquepuedenseragregados:

Textoenriquecido
(ComocontenidosenHTML)
URLembebida
(HTMLexterno)
Informesprediseados
(CreadosenPrctico)

A continuacin se presenta una captura durante la adicin de un campo tipoURLEmbebida,tengaencuenta


que la cantidad de propiedades u opciones deconfiguracin varandeacuerdo altipodeobjetoquesedesea
agregar.

Visite

practico.org
paramsinformacin

36


Documentacinoficial.

Visite

practico.org
paramsinformacin

37


Documentacinoficial.

Paracomprenderenquconsistecadapropiedadparasteyotrostiposdecamporeviselamatrizsiguiente.

Matrizdescriptivadepropiedadesporcampo

La siguiente matriz describe todas las propiedades que se pueden llegar a tener en los objetos que son
agregados a los formularios y que permiten personalizar su comportamiento. Aunque un poco larga y
detallada, se recomienda sulecturacompletaafinqueeldiseadordeaplicacionestengaclaroelusogeneral
yalcancedecadaunodeloscontrolesquepuedeincorporarasusformularios.

Propiedad
Ttulooetiqueta

Descripcin

Objetosalosqueaplica

Texto que aparecer al lado del controlindicando alusuariola informacin


quedebeingresar.PuedeusarHTMLbsicoparadarformatoadicional.

Textocorto
Contrasea
Textolibre
Textoconformato
Listasdeseleccin
Deslizadores

Prctico solicita uno, sin embargo para aquellosquedeseencrear matrices


de controles sin etiquetas basta con diligenciar all un caracter de espacio
para que Prctico agregue el campo pero visualmente no se aprecie una
etiqueta.
Campoenlazado

Campodelatabladedatosalcualservinculadalainformacin.
Enel caso de diligenciar all una informacin, Prctico conocer el nombre
delcamposobrelabasededatosenelcualdebeguardarla.
Si se trata de un campo con bsquedas habilitadas le indicar adems a
Prcticoporqucampodeberealizarlabsquedasolicitadaporelusuario.
Adicionalmente, se podr especificar un nombre de campo manual. Si el
campo existe dentro de latablaasociadaalformularioentonces sertenido
en cuenta para las operaciones de base de datos, de lo contrario ser
ignoradoysolamenteestarallentiempodeejecucin.

Textocorto
Contrasea
Textolibre
Textoconformato
Listasdeseleccin
Deslizadores

Campodevalornico

Indica si el campo puede almacenar o no valores repetidos en la base de


datos. Debera estar habilitado para campos que representan claves
primariasensudiseoydeshabilitadoparaelresto.

Textocorto

Antesde almacenar cualquier registro, Prctico verificar que ese valor de


llave no exista en la base de datos. De ser as presentar el mensaje
correspondiente.
Valorpredeterminado

Establece el valor que aparece diligenciado automticamente en el campo


al abrir la vista del formulario. Este valor puede estar en contrava de la
validacindedatossiaslorequiereeldiseador.

Textocorto

Validacindedatos

Tipo de filtro a ser aplicado cuando el usuario ingresa informacin por


teclado, para el caso de las validaciones de fecha, Prctico presentar
automticamenteuncalendario.

Textocorto

Visite

practico.org
paramsinformacin

38


Documentacinoficial.

Campodeslolectura

Propiedad til para campos o formularios de consulta por parte delusuario


dondeserequierevisualizarelvalorperonopermitirsumodificacin.

Ttulodeayuda

Texto que aparecer como encabezado para el texto de ayuda del campo
explicandoalusuarioqudebeingresar.

Textodeayuda

Texto completo con la descripcin de funciones resumida para el campo.


Puede incluir instrucciones de formato, advertencias o cualquier otro
mensaje para elusuario. VadelamanoconlapropiedadTitulode ayuda,
aunqueparaquestevaloraparezcasedebetenercomomnimoelttulo.

Peso

Posicin en la que aparece el campo dentro del formulario cuando este se


despliegaenpantalla.

Cuando existen varios controles en la misma columna el peso hace que el


control aparezca antes o despus de los otros, a menor peso el control
aparecerdeprimero.

Columna

Columna para ubicar el campo cuando la vista del formulario tenga varias
columnas.

Aquellos campos en columnas superioresa lasdefinidas en el formulario


noserndibujados.
!

Obligatorio

Determina si el usuario debe ingresar un valor diferente de vaco en el


campoparapoderguardarelregistro.

Textocorto
Contrasea
Textolibre
Textoconformato
Textocorto
Contrasea
Textolibre
Textoconformato
Listasdeseleccin
Deslizadores

Textocorto
Contrasea
Textolibre
Textoconformato
Listasdeseleccin
Deslizadores
Textocorto
Contrasea
Textolibre
Textoconformato
Listasdeseleccin
Deslizadores
EtiquetasHTML
URLEmbebida
Informes
Textocorto
Contrasea
Textolibre
Textoconformato
Listasdeseleccin
Deslizadores
EtiquetasHTML
URLEmbebida
Informes
Textocorto
Contrasea
Textolibre
Textoconformato
Listasdeseleccin

Textocorto
Contrasea
Textolibre
Textoconformato
Listasdeseleccin
Textocorto

Visible

Determina si el control es visible o no para el usuario. SisedejacomoNo


elcontrolesusadoperocomouncampooculto.

Utilizarparabsquedas?

Dejeel espacioenblancoparaindicarqueesun campo normaloingresela


etiqueta que debe ir en el botn de comando ubicado al lado derecho del
campopararealizarlabsquedaderegistroscoincidentesconsuvalor.

UsarAJAXparabuscar?

Cuando la casilla se encuentra activada Prctico intenta recuperar la


informacin del registro para el formulario mediante AJAX (Se recomienda
habilitar), de lo contrario se utilizaunmtodoestndarde envodesolicitud
y recarga de la pgina con los resultados. Puede ser deshabilitado para
mejorarcompatibilidadconnavegadoresviejos.

Textocorto

Agregartecladovirtual

Cuando es habilitado enelformulariosedespliegaun tecladovirtualparael


ingreso de informacin. Por ahora el uso del teclado puede violar las

Textocorto
Contrasea

Visite

practico.org
paramsinformacin

39


Documentacinoficial.

validaciones

Ancho

Cuntoespaciodeanchodebeocuparelcontrol.
IMPORTANTE: en nmero de caracteres para texto simple o en pixeles
para texto con formato. Indique un nmero de columnas, sin embargo,
tenga presente que el ancho en pixeles ser variable de acuerdo altipode
fuenteutilizadaporeltemaactual.

Textocorto
Textolibre
Textoconformato

Alto

Cuntasfilasdebenestarvisiblesenelcontrol?.
IMPORTANTE: en nmero de filasparatextosimpleoenpixelesparatexto
con formato. En caso que el texto supere el nmero de filasseagregarn
automticamentebarrasdedesplazamiento.
Para laslistas de seleccin representa si la lista ser un combo box (valor
cero)ounlistbox(valormayoracero)

Textocorto
Textolibre
Textoconformato
Listasdeseleccin

Barradeedicin

Indica el tipo de barra de herramientas que aparecer en la parte superior


del controlyquepermitirrealizaralusuariolasdiferentestareasde edicin
del texto. IMPORTANTE: Cada tipo de editor requiere un espacio diferente
en el formulario ya que debe desplegar un nmero de iconos y opciones
diferentes.

Textoconformato

Filanicaparaelobjeto?

Permite desplegar el objeto en una fila exclusiva de la tabla usada en el


formulario. Normalmentelosformulariossongraficadosmediantetablasen
determinadonmerodecolumnassegnloestablecidoensuspropiedades.
Cuandoestaopcinesactivada,elobjetoocupatodaunafiladeesatabla.

Aplicaentodoslos
controlesyobjetos

Listadeopciones

Quopcionesaparecenparaserescogidas.
Ingrese una lista de opciones separadas por coma. Si requiere tomar las
opcionesdinmicamentedesdeotratabladelaaplicacinutilice loscampos
de Origen de datos paraopciones. Encasodellenarambasopciones(lista
fijayorigendedatos)elresultadosersucombinacin.

Listasdeseleccin

Origendelalistade
opciones

Debeespecificarelmismoorigen(tabla)delalistadevalores.
Campo desde el cual se toman las opciones que despliega la lista de
maneradinmicadesdeotrocampo/tabladelabasededatos.

Listasdeseleccin

Origendelalistade
valores

Debeespecificarelmismoorigen(tabla)delalistadeopciones.
Campodesde el cual setomanlosvaloresinternos(aserprocesados)para
cadaopcindelalistadesdeotrocampo/tabladelabasededatos.

Listasdeseleccin

Valordelaetiqueta

Informacin que ser impresa en el formulario en formato HTML


directamente. til para ubicar imgenes, textos, y dems contenidos para
enriquecersuformulario.

EtiquetasHTML

URLparaIFrame

Establece la direccin de la pgina que ser embebida en el marco dentro

delformulario.

URLEmbebida

Informevinculado

Informe prediseado en Prctico que ser empotrado en el formulario. El

informeheredarlaspropiedadesenldefinidasdurantesudiseo.

Informes

Ventanapropiaparael
objeto?

Especifica si el objeto debe ser cargado directamente en el formulario sin


marcoalgunoosisedebecrearunaventanaparacargarlodentrodesta.

URLEmbebida
Informes

Longitudmxima

Cuntoscaracterespermiteelcampo?.
Valorentre1yN,0paradeshabilitarellmite

Textocorto
Contrasea

Valormnimo

Indicaelvalornumricomnimoquesepuedeingresarenelcontrol

Deslizadores

Visite

practico.org
paramsinformacin

40


Documentacinoficial.

Valormximo

Indicaelvalornumricomximoquesepuedeingresarenelcontrol

Deslizadores

Valordesalto

Indicadeacuntasunidadessedebesaltarentrelosvaloresdelcontrol

Deslizadores

Deinters...

Algunostrucosespecialesconobjetosdeformularios:

Prcticopermitecambiareltipodecontrol,inclusodespusque
steseencuentraenfuncionamiento.Teniendoencuentaque
todaslaspropiedadessecompartenporloscontroles,sepodra
teneramaneradeejemplouncampodecontrasearestringidoa
slonmeros.Perocmosiloscamposdecontraseanoaceptan
filtrosdevalidacin?
Creeuncampodetextoestndarydefinasusparmetros.
Posteriormenteingresealaedicindelcampoycambiesu
tipoacontrasea.Verquesuspreferenciasdecampode
textosehancombinadoconlasdecampostipocontrasea.
Esteprocedimientopuedeserrealizadodemaneraanloga
paraotrostiposdecampoypropiedades,aunqueen
algunossusvaloresdepropiedadpuedennotenerefecto.

Recuerde que Prctico traduce


todas
las
propiedades
y
especificaciones que se den
durante el diseodeformularios a
cdigo HTML equivalente para
poderpresentarsuaplicacin.

En ese orden de ideas, puede


realizar algunostrucos adicionales
comoelquesedescribe.

Visite

practico.org
paramsinformacin

41


Documentacinoficial.

3.2.2.Accionesycomandos

Las acciones dentro de un formulario hacen referencia a las tareas que podemos realizar con la informacin
en l ingresada, comandos que el diseador establece para ir a otras partes del sistema o ejecutaracciones
encalientepormediodeJavaScript.

Bsicamente las acciones de los formularios son agregadas a stos como botones en una barra de tareas
ubicada en la parte inferior, como se visualiza en la imagen de ejemplo con botones de Guardar, Cancelar y
Eliminar(sinlimitarseastos).

El objetivo delasaccionesycomandosesofreceraldiseadordelaaplicacinunamanerarpidadeejecutar
tareas sobre los registros o formularios en pantalla. El diseador selecciona la accin y Prctico determina
qudebehacerdemaneraautomtica.

An as el diseador tambin podr procesar todo mediante rutinas propias cuando as lorequiera,haciendo
elllamadoalasmismasmedianteaccionespersonalizadas.

Agregandounabotonesconaccionesycomandosaunformulario

Durante el diseo de un formulario, en la barra de herramientas haga clic sobre el botnagregaraccin,con


esoserdesplegadaunaventanacomosigue:

Dentrodelasopcionesprincipalesparalaadicindeaccionesocomandosseencuentran:

Visite

practico.org
paramsinformacin

42


Documentacinoficial.

Importante...

Ttulooetiqueta:Sereltextoamostrarsobreelbotn
Estilo:IndicaelCSSutilizadoparadibujarelbotn
Tipo de accin: Qu debe ejecutarseal hacerclicsobreelbotn?
Ver en el apartado siguiente para detalles sobre los tipos de
acciones.
Comando de usuario: indica qu ejecutar cuando se trata de algo
personalizado
Peso: En qu orden deber aparecer el botn cuando se
encuentra al lado de otros? A menor peso el botn ser ubicado
msalaizquierda.
Visible:Determinasielbotnestarvisibleonoenelformulario.
Ttulo de retorno y texto de retorno: Mensajes que sern
presentados sobre el escritorio al usuariocuandoPrcticorealicela
operacinprogramada.
Texto de confirmacin: Textoqueapareceren ventanaemergente
confirmando al usuario que ha presionado el botn y que ser
ejecutadalaoperacin.

Las acciones no slo tienen que


estar enlazadasatareascomunes
dePrctico.

Mediante
comandos
personalizados podr ejecutar
desde scripts de JavaScript hasta
funcionespreescritasenPHP.

Tambin podrhacer el llamadoa


cualquier otra accin existente
dentrodelFrameworkparallevar al
usuario a otras ventanas o
secciones accesibles slo a
quienes cuentan con una opcin
paraellas.

Detallesobrelostiposdeaccionesdisponibles
BsicamentedentrodelostiposdeaccionesquesepuedenejecutarenPrcticoseencuentran:

Guardar datos
: Mediante este botn Prctico analizar de manera automtica la tabla vinculada al
formulario, los campos existentes en el diseo del mismo y generar los queries y validaciones
necesariosparaquesehagaunainsercindelregistroexitosaenlatabla.

Actualizar datos
: Prctico evala los campos diligenciados en el formulario y actualiza el registro
basadoensunmerodeIDnico.Aplicacuandosetieneunformularioconunregistroenpantalla.

Eliminardatos
:Prcticoeliminadelatablaelregistrodesplegadoactualmenteenelformulario.

Regresar al escritorio
: Se cancela cualquier operacin, se cierra la ventana de formulario y se
regresa al escritorio de Prctico. Util para aquellos botones de cancelar un ingreso de datos o
cualquier otra operacin. Cuando no se agregan botones de regresar los usuariosslopodrnvolver
almenoescritoriohaciendoclicsobreeliconoenlapartesuperiorizquierda.

Cargar un objeto
: Mediante el cuadro de comando de usuario se puede especificar una cadena de
apertura de objetos, similar a la utilizada por las opciones de men, para llevar al usuario a otra
ventanaotareadesuaplicacin.

Limpiardatos
:EnesenciahaceunResetdelformularioHTMLlimpiandotodoslosdatosingresados.

Visite

practico.org
paramsinformacin

43


Documentacinoficial.

Definidas por el usuario


: En amboscasossedeberindicarlaaccinocomando medianteelcampo
decomandodeusuario:
En personalizadas.php: Para permitir llamar funciones que el usuario ha creado sobre ese
archivo.
En mdulos adicionales: Para permitir el llamado de una funcin o accin definida en un
mdulocomplementariodePrcticoounocreadoporelusuario.

Comandos en JavaScript
: Medianteloscualessepodrhacercambiosentiempodeejecucinsobre
controles de datos, llamar funciones creadas dentro del formulario o ejecutar cualquier otra tarea en
lenguajeJavaScript.

3.2.3.Formularioscombinados

Estaseccinseencuentraenconstruccin.Paraverunconceptobsicorelacionadoaestafuncionalidadtal
vezleintereserevisarlaseccin3.3.3.deInformescombinados,loscualesenesenciaresumenlas
posibilidadesdeestosformularios.

3.2.4.Formularioscomoinformes

Una vez que tiene formularios, ya sea para ingreso de datos o simplemente como presentacin de informes
combinados, se podr hacer uso del botn de impresin ubicado en la parte superior del formulario, en su
barradettulo.

El botn de impresin tomar todos los controles en el formulario y los llevar a una pgina limpia para ser
impresa, de manera que al disear un formulario de manera implcita estar diseando tambin un informe
derivadoparaimprimirsusdatostalycomosevenenenlapgina.

Tambin puedehacerusodelafuncinImprimirMarco(seccion_impresion)medianteuncomandoJavaScript
encasodenecesitarestafuncionalidaddesdeunpuntodiferentealabarradettulo.

3.2.5.Scriptspersonalizablesentiempodeejecucin(JavaScript)

Para aquellos ms experimentados, Prctico permite agregar a cada formulario acciones o funciones en
lenguajeJavaScript.

De manera predeterminada ser agregada a todos sus formulariosunafuncin llamada


FrmAutoRun()y que
ser ejecutada de manera automtica cada vez que sea cargado el formulario. Utilice esta funcin para

Visite

practico.org
paramsinformacin

44


Documentacinoficial.

agregaralloperacionesenJavaScriptsegnsunecesidad.

Tambin podr agregar otras funcionespropias,lascualespodrllamarposteriormentemedianteunbotnde


comando en Prctico indicando su nombre. Las funciones creadas para un formulario son independientes y
noestarndisponiblesenotrosespacios.

NosernecesarioagregarlasetiquetasdeinicioyfindeJavaScriptpuesPrcticoyaseencargardeeso
posteriormente.

DigamosqueustedcambiasufuncinFrmAutoRundelasiguientemanera:
function
FrmAutoRun()
{
//Aquisusinstrucciones
alert(
"Bienvenidoalmensajedeprueba"
)
}

Entoncestendrunasalidasobresuformulariodeingresodedatossimilaraesta:

Las secuencias de comando variarn entonces dependiendo de su necesidad y experticia en el lenguaje.


Ocurrirlomismoparacualquierotrafuncinexistentellamadamedianteunbotn.

Visite

practico.org
paramsinformacin

45


Documentacinoficial.

3.3.Diseandoinformes

Para Prctico un informe es cualquier consulta que sea


generada mediante su asistente y que presente un conjunto
de resultados. Los resultados de un informe pueden ser
diagramados como una tabla de datos o como un grfico de
diferentestipos.

Un informe puede ser vinculado posteriormente a una opcin


de men, alalistadeinformespredeterminadosdeunusuario
o a un formulario, siendo embebido en estemediantealgunos
parmetrosdepresentacinadicionales.

3.3.1.Informesdetipotabladedatos

Uno de los informes mscomunessobreunsistemasonlosinformesdetipotabular,dondesedesplieganlos


datoscorrespondientesaunaconsultaSQLejecutadasobreelmotor.

Esta consulta puede relacionar una o varias tablas, tener criterios de agrupacin u ordenamiento, cumplir
determinadas condiciones, etc. En esencia podramosresumiralgeneradordeinformesdePrcticocomoun
asistente que parametriza todos los componentes de una consulta, hasta que logra obtener de manera
estndarunqueryqueserenviadoalmotoryposteriormenteformateadoparaelusuario.

3.3.2.Informesgrficos

Visite

practico.org
paramsinformacin

46


Documentacinoficial.

3.3.3.Informescombinados

En esencia Prctico no combina sus informes. Eseldiseadorquienpormediodeformularios(deingresode


datos o de slo lectura), podr combinar tantos informes como desee, sin lmite de grficas o tablas y luego
pasarlos a formato de impresin de manera automtica mediante las secuencias vistas en apartados
anteriores.

As pues, es importante que el diseador tenga claro que debe disear informes como un objeto
independiente y ya despus combinarlos de acuerdo a su necesidad, como se presenta a continuacin, por
ejemplo,parauninformecombinadodetablasygrficos:

En realidad el informe presentado en la imagen de ejemplo es un formulario, al cual se le han insertado los
diferentesinformescreadosdemaneraindependiente.Tresinformestabularesydosinformesgrficos.

3.3.4.Accionesycomandoseninformestabulares

Los informes tabulares pueden ser utilizados a su vez para convertirse en los conocidos informes de tipo
maestrodetalle y que pueden realizar operaciones especficas sobre los registros all desplegados o incluso
abrir otros apartados del sistema como por ejemplo un formulario con detalles del registro, posibilida para

Visite

practico.org
paramsinformacin

47


Documentacinoficial.

editarlo,entreotros.

3.3.5.Mduloscomplementariosdeinformes

3.4.Gestindemensyopcionesdeusuario

3.4.1.Generalidadessobrelosmens

Prctico cuenta con tres posiciones predeterminadas para la publicacin de opciones a los usuarios de la
aplicacin:
Mensuperior,estilohorizontalcontextoeiconos
Mendeescritorio,representadocomoiconossobreelfondodelaaplicacin
Menclasificadodeacuerdonombresdeseccin(comoventanascolapsablesenelmedio)

Visite

practico.org
paramsinformacin

48


Documentacinoficial.

Para cualquiera de las posiciones descritas anteriormente y susopcionesdemenpuedenseradministradas


por medio del mismo mdulo, ya que ste permite incluso definir mltiples ubicaciones para un mismo
elemento.

Bsicamentedurantelacreacindeopcionesdemensetienenlassiguientespropiedades:

Visite

practico.org
paramsinformacin

49


Documentacinoficial.

Texto
: Hace referencia al texto que estar visible para el usuario. Ingrese aqu una palabra o frase
que describa la opcin que ser ejecutada porelusuariooelformularioquesercargadoalhacerclic
sobrelaopcin.

Peso
: El orden del elemento sobre otros. A menor peso el elemento flotar ms arriba o ms a la
izquierdacuandoseencuentreconotrosdentrodelamismaseccinomen.

Posible arriba
: Indica si la opcin podr ser visualizada en la parte superior (men horizontal).
Generalmenteestoseutilizaenopcionesimportantesqueelusuariosiempredebeteneralamano.

Posible escritorio
: Indica a Prctico que la opcin deber ser diagramada como un icono sobre el
escritorio de la aplicacin diseada. Normalmente tener opcionessobreelescritoriodaunavistams
limpiadesuaplicacinyserecomiendancuandoseanpocas.

Posible en el centro
:Determinasi elelementoestardisponibledentro deunaventanacolapsableen
la parte central de la aplicacin. Las ventanas son generadas automticamente de acuerdo a las
opcionesyseccionesdefinidasparacadamendelusuarioqueseencuentrelogueado.

Seccin
: Juega un papel fundamental para agrupar diferentes opciones de men en ventanas
colapsables que se despliegan en la parte central del aplicativo. El sistema en cada carga de men
buscar las opciones disponibles para el usuario, luego revisar a qu secciones pertenecen y por
ltimogenerarlasventanasparaqueelusuarioveaagrupadassusopciones.

Puedeusaranmsiconos
Nodejederevisarlospaquetes
adicionalesdeiconosparaampliar
lasposibilidadesdeescogenciaen
estaopcin.
Reviseademselapartado
Paquetesdeiconos
paraversu
instalacinyconfiguracin

Imagen
: Permite asignar un icono mediante el cual se identifique la
opcin de men creada. Se puede ingresarmanualmenteelnombrede
la imagen con path relativo a /img o utilizar el enlace de los tres puntos
paradesplegarunaventanadeseleccindeiconos.

URL esttica
: Valor utilizado para generar enlaces de tipo HREF o pequeas funciones JavaScript
paraaquellosquedeseenpersonalizarsusmensolanzarventanasopginasexternasaPrctico.

Tipo de comando: Determina a qu hace referencia la nueva opcin ycmodebe serprocesadapor


Prcticoenelmomentoenqueelusuariohagaclicsobreella.

Accin interna/comando/objeto
: Clasifica el tipo de accin que ser ejecutada por la nueva opcin.
Las dos primeras hacen referencia a acciones que pueden pertenecer al Framework o a funciones
existentes en nuevos mdulos instalados, funciones personalizadas o mdulos desarrollados por
usted. La tercera hace referencia a los objetos creados con Prctico. Deesamanerapodrvincular
formularios, informes y dems elementos mediante opciones de men que posteriormente sern
asignadascomopermisosaunusuariooplantilla.

Visite

practico.org
paramsinformacin

50


Documentacinoficial.

Padre, Columna y Posible hacer clic son opciones en desuso. Sern eliminadas en futuras
versionespuessehaencontradounaformamsprcticaderealizarlatareacorrespondiente.

3.4.2.Comandosespeciales

3.4.3.Tpicosavanzados:Enrutamientodeusuariosacomandosinternos

3.5.Usuariosypermisos

3.5.1.Creacindeusuarios

Este mdulopermitelagestindecredenciales deusuarioqueaccedenaPrcticoylaaplicacindesarrollada


sobreeste.

Dentro de sus operaciones bsicas se encuentran la creacin de usuarios donde se defineunlogin,nombre,


descripcin, contrasea con niveles mnimos deseguridad,correoelectrnico,estadoinicialyniveldeacceso
alasopcionesadministrativasdePrctico.

Visite

practico.org
paramsinformacin

51


Documentacinoficial.

El nivel de acceso est dado por el nmero de estrellas, donde posteriormente se tendr la definicin de
nivelesparalosmenes,informesyformularios.

Deinters...

La creacin de un usuario no garantiza su acceso a las opciones de Prcticoy


la aplicacin desarrollada, ya que para algunas puede ser necesaria la
asignacin individual del permiso. El nivel de acceso al aplicativo y sus
opcionesestardefinidoentoncespordosmodelos:
Niveldeaccesopornmerodeestrellasmenoroigualalaopcin
requerida.
Adicindeopcionesindividualesparaelusuariosiempreycuandose
encuentrenenelmismonivelounoinferiorasuperfilactual.

Losusuariospuedenser
generadosautomticamente
cuandoseactivanotrosmedios
parasuautenticacin.

Veamsenelapartadode
motoresdeautenticacinexternos.

3.5.2.Asignacindepermisos

Elmduloparagestindepermisosseencuentradirectamentevinculadoconelmdulodeusuarios,por
cuantoalgenerarunlistadodeusuariossepuedeespecificarlospermisosonivelesdeaccesoindividuales
haciaMensoInformes.

Cuentaademsconlaposibilidaddeinhabilitarelusuariosineliminarsuscredencialesovisualizartodossus
movimientoscomounhistricodeauditoraquealmacenaPrcticoautomticamente.

Sepermitelacopiadepermisosentreusuarios,conloquesepuedencrearplantillasdeusuariosque
permanezcandeshabilitadosparafacilitarlacreacindeusuariosnuevosenelsistema.

3.5.3.Losusuariosespecialescomoplantilladepermisos

Prctico permite autenticar los usuarios desde diferentesorgenesoservicios. Esas comopermitemediante


el protocolo OAuth que usuarios de otros servicios y redes sociales ingresen a Prctico mediante sus
credencialesenesossistemaspreviaconfiguracindelasllavessuministradasporcadaproveedor.

Visite

practico.org
paramsinformacin

52


Documentacinoficial.

Sin embargo, asignar permisos a cada usuario puede ser una tarea dispendiosacuandosetratadecientoso
milesdeusuariosqueingresanlaaplicacinqueustedhadesarrollado.

Para automatizar en parte esta tarea, simplemente cree un usuario plantilla con el nombre que usted desee,
luegovayaasupaneldeconfiguracinparalaautenticacinconelproveedorexternoeindi

4.AmpliandolasposibilidadesdePrctico

4.1.Mdulosadicionales(oficiales)

4.1.1.Sistemademonitoreo

Paralosadministradoresdesistemasesfundamentalcontarconherramientasquelespermitanrealizarun
monitoreonoslodesusaplicacionessinotambindelacargadesusservidores,delasoperacionesen
basesdedatos,usodecanales,equiposdered,entreotros.ParaesoPrcticocuentaconunaopcinde
monitoreoatravsdesupaneldeconfiguracin,enlaquesepuedenconfigurarlossiguientestiposde
elemento:

EtiquetasHTML
:Permitenadicindetextosquepuedenserutilizadoscomoencabezadoso
informacinaclaratoriaacercadelmonitoreopresentadoporpantallaenelmomento.
Mquinas
:Utilizadascomnmenteparamonitorearnosloelestadodecomputadorasoservidores,
sinotambinelestadoderoutersyotrosdispositivosderedquerespondanaunasealdeping.
Tambinpermitemonitorearserviciosindependientesmedianteelusodesocketsparaidentificarpor
ejemplo,siademsdeestararribaunamquina,suservicioX(web,basededatos,correo,etc)se
encuentraactivo.Estetipodemonitorpermiteconfiguraralertassonorasyporcorreoelectrnico
cadavezqueunservicioestacado.
Comandosdeshell
:PermitenejecutarcomandosdeconsolasobreelservidordonderesidePrctico,
enestecasoporejemplo,esutilizadoparadesplegarestadosdetemperaturaentreotros.

Visite

practico.org
paramsinformacin

53


Documentacinoficial.

ConsultasSQL
:Ejecutaqueriessobrelabasededatosyretornaelsetderegistrosparaquesea
visualizadoenelmonitoreo.Elresultadoobtenidocomotablaodatonicodependerdelquery
enviadoylapersonalizacindesupresentacin.
Imgenes
:PermiteaPracticincluirdentrodesuspantallasdemonitoreocualquiertipodeimagen,
existenteenelservidoroinclusoexternayquepuedaampliargrficamentelosresultadosdel
monitoreo.
Embebidos
:Ayudaalainclusindeotrossitiosexternosdentrodelmonitoreo,deestamanera
Prcticopuedetomarpginaswebcompletasdeotrossistemasypresentarlasdentrodeunsolo
sistemademonitoreounificado.

CadaunodeloselementospuedeseragregadoadiferentespginasypesosmediantelascualesPrcticose
encargardevisualizarlosposteriormenteallanzarelsistemademonitoreo.

Unavistadealgunosmonitoresgenerados,perosinlimitarseaellos,puedenserlossiguientesdondese
aprecianmonitoreosdemquinasyequiposdered,imgenes(externas)decargadealgunosservicios,carga
generaldelsistemaysalidasdecomandosSQL,salidasdecomandosdeconsola,estadosdeIOydems
grficasgeneradasporterceraspartes:

Elsistemademonitoreopermiteademsqueseapresentadoapantallacompletasobrenavegadores,loque
ayudaaqueustedproyectesumonitoreoencualquierparteotambienlolleveconsigoenundispositivomvil.

Acontinuacinunabrevedescripcindelaspropiedadesquepuedenserencontradasenlaconfiguracindel
sistemademonitoreo:

Configuracinbsicacomn:
Tipo
:

Visite

practico.org
paramsinformacin

54


Documentacinoficial.

Pgina
:
Peso
:
Nombre
:
Saltosdelnea
:
Milisegundosparalectura
:

Configuracionesespecficasportipodemonitor:
Maquina/IP
:
Puerto
:
Mtodoutilizado
:
Comando
:
AnchoyAlto
:
TamaofuenteSQL
:
Ocultarttulos
:
URLesttica
:
Correoparaalertas
:
Alertasonora
:

4.1.1.SeguimientosporGoogleAnalyticsBeacon

Prctico cuenta con la posibilidad de seguir entiemporealelusode susaplicaciones,indicandoquin,desde


dnde y a qu funcionalidadingresa. Paraesto,seutilizalaherramienta libreGABeaconintegradadentrode
la aplicacin y que puede ser configurada de manera muy simple a travs del panel de configuracin con el
ingresodesucdigoentregadoporAnalyticsyquenormalmentetieneunformatoUAXXXXXXXosimilar.

Una vez agregado al archivo de configuracin usted podr revisar en tiempo real y tambin en histricos los
diferentes accesos a su aplicacin por medio del panel de Google Analytics como se aprecia en la siguiente
figura:

Visite

practico.org
paramsinformacin

55


Documentacinoficial.

4.2.Paquetesdeiconos

Visite

practico.org
paramsinformacin

56


Documentacinoficial.

4.3.Plantillasgrficas

4.3.1.PlantillasparaPC

4.3.2.Plantillasparadispositivosmviles,tabletas(touch)

Visite

practico.org
paramsinformacin

57


Documentacinoficial.

5.Tpicosavanzados

5.1.CambiandomimotordeautenticacinaLDAP

5.2.IntegrandolaautenticacinconproveedoresOAuth

5.3.Prcticocomoservidordeautenticacin

5.4.Autenticacinfederada

5.5.Creacindefuncionespersonalizadas

Visite

practico.org
paramsinformacin

58


Documentacinoficial.

5.6.Creacindemdulospropios

5.7.Generandoelementospblicos
LoselementospblicosseconsiderancomocualquierobjetooelementocreadoenPrcticoyquedebeestar
disponibleparacualquiervisitantesinnecesidaddehacerunloginenelsistema.

Puedetratarsedeinformes,formulariosodemscomponentesqueporalgnmotivoeldesarrolladordesee
dejarlosaccesiblesobviandoprocesosdeautenticacin.

ParagenerarelementospblicospuedevalersedeotrasfuncionalidadesexistentesenPrcticocomola
generacindeWebServicesyluegoenlazarestoscomponentesconlosWebServicesgenerados.Lospasos
resumidosseran:
Creacindelelemento,digamosunformulariooinforme.
GeneracindellavesdepasoparaunnuevoWebServiceas:
EnlaruedadentadadeconfiguracinseleccionelaopcinLlavesdewebservices
Diligencielainformacinasociadaalnuevoclienteconsumidor.Silodeseapuedeutilizaruno
existentecuandoaslopermitasudiseo.
Agregueelservicioautorizadoqueluegovincular,porejemplo
MiFormPublico
Medianteel{PCoder}agreguealarchivode
mod/personalizadas_ws.php
(outiliceunodiferentesisu
diseoaslopermite)dondedesarrollelaaccinqueserprocesadaporelconsumodeeseWeb
Serviceagregandocomomnimoelsiguientecdigo:
Ejemplo1:Cargasimpledelobjeto,sinestilosgrficosuotrasfunciones.
if($PCO_WSId=="
MiFormPublico"
)
{

//LlamalasfuncionesdePractico,verdocumentacinparaotrosdetalles

cargar_formulario
(1)//Cargarelformsobreventana
//
cargar_formulario
(1,0)//Cargarelformsinventana
//
cargar_formulario
(1,1,"id","15")//VerformbuscandoensutablaelID=15
}

Otrosusuariospuedennecesitarlainclusindeestilosgrficosdeacuerdoalaplantillautilizadapor
Prctico,ascomoactivarotrotipodescripts.Paraesopuedencomplementarelcdigoanteriordela
siguientemanera:
Ejemplo2:CargadelobjetoenmediodelainclusindeestilosgrficosdePrctico.
if($PCO_WSId=="
MiFormPublico"
)

Visite

practico.org
paramsinformacin

59


Documentacinoficial.

include
("core/marco_arriba_bs.php")

cargar_formulario
(1)

include
("core/marco_abajo.php")
}

GenerelaURLquellamarasuWebService.Deberaestarcompuestaporlossiguienteselementos
comomnimo:
URLasuinstalacindePrctico
Variablesdeactivacindelwebservicesjuntoconlasllavesasociadas
Mtodooservicioquedeseaconsumir
Ejemplo:
http://demo.practico.org/index.php?PCO_WSOn=
1
&PCO_WSKey=
C3KXTVF4TI
&PCO_WSSecret=
TMYALUI6C2
&
PCO_WSId=
MiFormPublico

Pruebeelaccesoasuformulariooelconsumogeneraldelwebserviceenunnavegador
dondeanno
sehayalogueadoenelsistema
,pueslaideaesprecisamentequelafuncionalidadseapblica.

Deberasegurarseademsquecualquierotrafuncinutilizadaduranteelconsumodelwebservicese
encuentredentrodelospermisosdisponibles.Serecomiendahacerusodefuncionesinternascadaquese
requiera,algunascomoguardar_datos_formularioosimilaresdisponiblesenprcticopuedensertilespara
estosmenesteres.

Noolvidequepuedetransportarlallave,secretoyactivadordewebservicesentrecadasolicitudparaquesu
consumidorpermanezcaactivo.

5.8.TrabajandopatronesMVC5 conPrctico

Es importante aclarar que trabajar con el patrn MVC no depende de un framework, es ms una forma de
trabajo propia que decide acoger el desarrollador. De hecho Prctico nohasidoescritomedianteMVCpero
spermitequeaquellosinteresadosendesarrollarconMVCpuedanhacerlo.

Estaseparacinhacequeelcdigoseamsmantenibleyfcildeadecuaranuevasnecesidades.

Grficoresmen:FuncionamientodeunaaplicacinMVC6

Paraampliarelconceptosepuederevisar:
ModeloVistaControlador.
Wikipedia,Laenciclopedialibre.

Enesteenlace
.
Imagendesde
http://miblogtecnico.wordpress.com

5
6

Visite

practico.org
paramsinformacin

60


Documentacinoficial.

En versiones 14.3 y posteriores Prctico cuenta con un mdulo de ejemplo sobre mod/mvcdondesetieneel
cdigo base de ejemplo para trabajar con MVC enPrcticoyalgunasdesusfunciones. Versionesanteriores
dePrcticopodrndescargarloydescomprimirloparaempezaratrabajarconl.

Aunque el mdulo cuenta con cdigo bien documentado, aqu se dan detalles sobre las posibilidades del
mismo para que el desarollador explote de la mejor manera posible las funcionalidades existentes en el
Framework de Prctico y pueda hacer aplicaciones no slo ms rpido, sino tambin compatibles con
cualquierversin,instalacinyconfiguracionesdePrcticoconsoporteinclusoparamltiplesidiomas.

Laestructuradelmdulodeejemploescomosigue:
/mod/mvc/
index.php
<

EnlaceentresumduloyPrctico
LEAME
<

Algunasinstruccionesbsicas
modelo/
<

FuncionespararecuperacindedatosyejecucindeconsultasaBD
vista/
<

Lasvistasmediantelascualespresentarlainformacinsumdulo
controlador/
<

Contieneelcontroladorprincipaldesumdulo
idiomas/
<

Opcional,contienelascadenasendiferentesidiomasparasumodulo

Visite

practico.org
paramsinformacin

61


Documentacinoficial.

Teniendo claro que en los patrones MVC el controlador es quien hace de intermediario entre la vista y el
modelo y responde a eventos (usualmente acciones del usuario) puede que usted quiera utilizar el archivo
index.php de entrada del mdulo como su controlador, no utilizar una carpeta separada para estopasandoa
ser tal vez ms eficiente de esta manera. Recuerde queesteestanslounejemployporesosehacenbien
diferenciadassuspartes...

Explicacindelcontenido:
Archivoindex.php
//ValidasesionactivadePractico
@
session_start
()
if
(!
isset
($Sesion_abierta))
{
echo

'<head><title>Error</title></head><body>Accesonoautorizado!</body>'

die
()
}

//Configuracionesbasicasdesumodulo(siaplican)
$raiz_modulo=
"mod/mvc/"

$ruta_modelos=$raiz_modulo.
"modelo/"

$ruta_vistas=$raiz_modulo.
"vista/"

$ruta_controladores=$raiz_modulo.
"controlador/"

$ruta_idiomas=$raiz_modulo.
"idiomas/"

if
($accion==
"probar_ejemplo_mvc"
)
{
//Llamaralcontroladorinicialdelaaplicacionomodulo
require
($ruta_controladores.
'controlador.php'
)
}

Inicialmente el archivo cuenta conlavalidacindesesindePrctico. Esecondicionaldeberaestarentodos


sus archivos de mdulo por seguridad y evitar as que alguien haga llamados a sus funciones sin tener una
seccinactivaenlaherramienta.

Posteriormente se encuentra una definicindevariables,enestecasovariablesparaindicaralgunospathsde


trabajodeacuerdoalmdulo.Engeneralpuedeircualquiervariableofuncinquenecesite.

Por ltimo, se encuentra el condicional que ejecuta ciertas acciones de acuerdoa lorequeridoporelusuario.
En este ejemplo, solamente cuando Prctico reciba una accin llamada probar_ejemplo_mvc ejecutar al
controlador.Laaccinpuedeservinculadacomocualquierotraconbotonesomenesensuaplicacin.

Este condicional podra operar perfectamente como si fuera su controlador, en lugar de tener un archivo
separadoconelcontroladorysimplementeubicarelcontenidodeesearchivodentrodelcondicional.

Explicacindelcontenido:Archivo
modelo/modelo.php
function
getAuditoria()
{
//LlamalasfuncionesdeBDdefinidasporPractico
//NohayquedefinirconexionesnivalidarexcepcionespuesPracticolo

Visite

practico.org
paramsinformacin

62


Documentacinoficial.

hace
$resultado=ejecutar_sql(
"SELECTid,usuario_login,accion,fecha,horaFROM
core_auditoriaWHERE1=1"
)

//Definevariable$registrosparaguardarlosresultados
$registros=
array
()

//Recorrelosregistrosagregandolosalarreglo
while
($registro_auditoria=$resultado>
fetch
())
$registros[]=$registro_auditoria

//Retornalavariableconelresultado
return
$registros
}

En el modelo podr crear las diferentes funciones que accesan la informacin, la manipulan o la crean de
acuerdoalosrequerimientosplanteadosparasuaplicacin.

En este caso vemos una funcin que simplemente consulta los registros de auditora y los retorna en una
variable. Primero ejecuta la sentencia SQL correspondiente y luego lleva todos los registros al arreglo que
retornar.

Otrasanotacionesdeintersparalosmodelos:
Para garantizar portabilidad y compatibilidad puede usar otras variables de entorno de Prctico
para que as su mdulo se adecue a otras instalaciones que pueden tener prefijos diferentes o
estructurasdebasesdedatosdiferentes.

Asporejemplo,teniendocomobaseelarchivo
inc/practico/def_basedatos.php
podriausarlavariable
quedescribelalistadecamposdeunatablaparagarantizarsufuncionamientoencualquierversin:
$resultado=ejecutar_sql(
"SELECTid,$ListaCamposSinID_auditoriaFROMcore_auditoriaWHERE
1=1"
)

Tambin podra utilizar la variable que indica los prefijos configurados durante la instalacin y hacer
compatiblesumdulooaplicacincondiferentesconfiguracionesdelasiguientemanera:
$resultado=ejecutar_sql(
"SELECTid,$ListaCamposSinID_auditoriaFROM"
.$TablasCore.
"auditoria
WHERE1=1"
)

Explicacindelcontenido:Archivo
vista/vista.php
<?php

?>

//Abreuncontenedor(Opcional)
abrir_ventana(
'Registrosdeauditoria'
,
'#BDB9B9'
,
''
)

Visite

practico.org
paramsinformacin

63


Documentacinoficial.

<h1>Listadodeaccionesencontradas</h1>
<tableclass="TextosVentana">
<tr>
<td>Id</td>
<td>Usuario</td>
<td>Accion</td>
<td>Fecha</td>
<td>Hora</td>
</tr>
<?php

foreach
($registros
as
$fila):
?>
<tr>
<td>
<?php

echo
$fila[
'id'
]
?>
</td>
<td>
<?php

echo
$fila[
'usuario_login'
]
?>
</td>
<td>
<?php

echo
$fila[
'accion'
]
?>
</td>
<td>
<?php

echo
$fila[
'fecha'
]
?>
</td>
<td>
<?php

echo
$fila[
'hora'
]
?>
</td>
</tr>
<?php

endforeach

?>
</table>

<?php
//Creaunabarradeestado(opcional)
abrir_barra_estado()
echo

'<inputtype="Button"class="BotonesEstadoCuidado"
value="'
.$MULTILANG_Cerrar.
'"onClick="document.core_ver_menu.submit()">'

cerrar_barra_estado()
?>

<?php
//Cierraelcontenedor(Obligatoriosisehaabiertoalguno)
cerrar_ventana()
?>

Este archivo se podra resumir solamente al cdigo HTML que en esencia es el encargado de presentar la
informacin, sin embargo se agregaron otrosejemplosconelusodefuncionespreexistentesenPrcticopara
mejorar mucho ms la presentacin de la vista sin necesidad de programar sus estilos propios y sobre todo
garantizandosucompatibilidadcontodaslasversionesfuturasyplantillasdePrctico.

Inicialmente se crea un contenedor o ventana conelttuloRegistrosdeAuditora,con uncolordefondoycon


anchovaco(autoajustablesegncontenido).

Luego se crea la tabla con los encabezados de la informacin a mostrar y luego son agregadas las filas con
los registros, que toman sus valores desde la variable procesada previamente por el modelo y entregada al
controlador.

Para finalizar, se usan algunas funciones de Prctico para crear una barra de estado con un botn decerrar
multiidiomaysecierralaventana.

Otrasanotacionesdeintersparalasvistas:

Visite

practico.org
paramsinformacin

64


Documentacinoficial.

Todos los mensajespodransoportarmltiplesidiomascreandosuspropiosarchivosdeinclusin


y llamando a estos de acuerdo a la variable de Prctico
$IdiomaPredeterminado que indica la
seleccindelusuariocomoporejemplo'es'o'en'paraqueustedpuedahaceralgocomo:
include
($ruta_idiomas.$IdiomaPredeterminado.
".php"
)

Puede hacer uso de todas las funciones existentes, por ejemplo la de creacin de barras de estado o
herramientas como se muestra al final del archivo e incluso hacer uso de las constantes de idioma
predefinidas en Prctico como se muestra en elbotnyelementosyformularios preexistentescomo seveen
sueventoonClick.

Las tablas, marcos y dems etiquetas HTML puedenhacerusodelosestilosCSSdefinidosporPrcticopara


que as cuando el usuario cambie plantillas o versiones su mdulo siga siendo presentado de manera
consistente.Verestiloaplicadoalatablaenelarchivodeejemplo.

ParaconsultarunalistadeconstantesdeidiomadisponiblesyunalistadeestilosCSSpodrrevisarlos
archivos/inc/practico/idiomasy/sking/nomo/

Explicacindelcontenido:Archivo
controlador/controlador.php

//1.Llamaalmodelo,encargadodeabstraerlasoperacionesdeconsultaaBD
require
($ruta_modelos.
'modelo.php'
)

//2.Pasalosdatosgeneradosporunafuncionexistenteenelmodeloaunvariable
independiente
$registros=getAuditoria()

//3.Llamaalavista,encargadadepresentarlosdatosgenericosentregadosdesdeel
modelo
require
($ruta_vistas.
'vista.php'
)

Finalmente, el controlador se encarga de articulartodocuandoesllamadoporlaaccin quedeseaelusuario.


Primero incluye las funciones del modelo, luego hace la solicitud al modelo para consultar los registros de
auditora y finalmente llama a la vista, encargada de formatear la salida que acaba de obtener elcontrolador
desdeelmodelo.

Estas operaciones ejecutadas por el controlador podran ser ejecutadas directamente sobre el archivo
index.phpdelmduloysobrecondicionalesqueindiquenaccionesespecficassolicitadasporelusuario.

Visite

practico.org
paramsinformacin

65


Documentacinoficial.

Visite

practico.org
paramsinformacin

66


Documentacinoficial.

5.9.FuncionesdisponiblesdelFramework

5.9.1.Funcionesgeneralesdebasededatos

ejecutar_sql:
Descripcin: Ejecutaunaconsultasobreelmotordebasededatosyretornaelarregloderegistrosdemaneraasociativa
Prototipo: ejecutar_sql($query,$lista_parametros="")
Parmetros:

query:Consultapreformateadaparaserejecutadaenelmotor
lista_parametros:Listadeparametrosquedebenserpreparadosparaelqueryseparadospordoble
barradecanalizacinopipe||comovaloresfijosocomovariablesPHP

Salida: Retornamensajeenpantallaconladescripcindevueltaporeldriverencasodeerror
Retornaunavariableconelarregloderesultadosencasodeserexitosalaconsulta
=
ejecutar_sql(
"SELECT*FROMtabla"
)

//Retornarlosregistroscorrespondientes
Ejemplosdeuso: $consulta

$registro=$consulta>fetch()
//Tomaelprimerregistroopuedeinsertarloenunciclopararecorrerlostodos

Silaconsultaespreparada(preferiblesporseguridad):
$consulta
=
ejecutar_sql(
"SELECT*FROMtablaWHEREcampo1=?ANDcampo2=?","$a||$b"
)

ejecutar_sql_unaria:
Descripcin: Ejecutaunaconsultaquenormalmentenodevuelveregistros,comoporejemplounINSERT,UPDATEo
DELETE
Prototipo: ejecutar_sql_unaria($query,$lista_parametros="")
Parmetros:

query:Consultapreformateadaparaserejecutadaenelmotor
lista_parametros:Listadeparametrosquedebenserpreparadosparaelqueryseparadospordoble
barradecanalizacinopipe||comovaloresfijosocomovariablesPHP

Salida: RetornaunacadenaquecontieneunadescripcindeerrorPDOencasodeerroryagregaunmensajeen
pantallaconladescripcindevueltaporeldriver
Retornaunacadenavacasilaconsultaesejecutadasinproblemas.
"DELETEFROMtablaWHEREid=1"
)

//Eliminarelregistro
Ejemplosdeuso: ejecutar_sql_unaria(
Silaconsultaespreparada(preferiblesporseguridad):
ejecutar_sql_unaria(
"DELETEFROMtablaWHEREid=?","$idregistro"
)

//Eliminarelregistro

ejecutar_sql_procedimiento:
Descripcin: Llamaaejecucinaunprocedimientoalmacenadodefinidodentrodesubasededatos
Prototipo: ejecutar_sql_procedimiento($procedimiento)
Parmetros:

procedimiento:Nombredelprocedimientoquedeseaejecutar

Salida: RetornaunacadenaquecontieneunadescripcindeerrorPDOencasodeerroryagregaunmensajeen
pantallaconladescripcindevueltaporeldriver
Retornaelresultadodeoperacindefinidoporsuprocedimiento
"limpieza_tablas"
)
Ejemplosdeuso: ejecutar_sql_procedimiento(

Visite

practico.org
paramsinformacin

67


Documentacinoficial.

5.9.2.Funcionesespecficasdebasededatos

existe_valor:
Descripcin: Determinasiunvalorexistedentrodeunatablaycampoespecfico
Prototipo: existe_valor($tabla,$campo,$valor)
Parmetros:

tabla:Nombredelatablaenlaquedeseabuscarelvalor
campo:nombredelcamposobreelculdeseacompararlosvalores
valor:valorbuscado

Salida: Retorna1encasodeencontrarunvalordentrodelatablaycampoespecificadasyquecoincidaconel
parmetrobuscado.
Retorna0cuandonoseencuentraunvalorenlatablaquecoincidaconelbuscado
"clientes","documento","123"
)
//Buscarenlatablaelvalor123yretornar1siexiste
Ejemplosdeuso: existe_valor(

ContarRegistros:
Descripcin: Devuelveelnmeroderegistrosalmacenadosenunatabla
Prototipo: ContarRegistros($tabla)
Parmetros:

tabla:Nombredelatabladondedeseacontarlosregistros

Salida: Valornumricoenteroqueindicacuntosregistrossetienenalmacenados.
"app_clientes"
)
//Cuentalosregistrosenlatablaapp_clientesyretornaelnmero
Ejemplosdeuso: ContarRegistros(

5.9.3.FuncionesgeneralesdisponiblesenPHP
auditar:
Descripcin: Realizaunregistroenlaauditoradelsistemaquepuedaserconsultadoposteriormenteenelpanelde
auditoras.
Prototipo: auditar($accion,$usuario="")
Parmetros:

accion:Descripcindelaaccinaseralmacenadaenlaauditora
usuario:Usuarioanombredelqueseregistralaaccin.Vacoparatomarelloguindeusuario
actual.

Salida: Registrodeauditoriallevadosobrelatabla
"Eliminaregistrodelatablaxxx"
)
Ejemplosdeuso: auditar(

CodigoQR:
Descripcin: PermitegenerarunaimagenenformatoPNGconuncdigoQRparaunacadenadetextodeterminada.
Prototipo: CodigoQR($contenido,$recuperacion_errores="L",$ancho_pixeles=3,$margen_pixeles=1,$ruta_al
macenamiento="tmp/",$archivo="")

Parmetros:

contenido:TextoquedeberserconvertidoaformatodeQR.Unacadenaconcualquiervalor.
recuperacion_errores:LocdigosQRcuentanconlaposibilidaddecorreccindeerroreso
redundancia,utilicelosvalores(L,M,Q,H)paraindicarunniveldelmsbajoalmsalto.
PredeterminadoL
ancho_pixeles:Cuntospixelesdebenserutilizadosporcadacuadroquecomponeelcdigo.Por
defecto3.
margen_pixeles:Cuntoscuadrosdemargenexteriortendrelcdigo.Pordefecto1.

Visite

practico.org
paramsinformacin

68


Documentacinoficial.

ruta_almacenamiento:ElpathsobreelservidordondeseralmacenadalaimgenconelcdigoQR.
Pordefectoseusarel/tmpsielusuarionoespecificauno.
archivo:Nombredelarchivoquecontendrlaimgen.Pordefectoserunaleatorioseguidodela
extensinPNG.

Salida:
ImagengeneradaparaelcdigoQR.Ejemplo:

"holamundo"
)
Ejemplosdeuso: CodigoQR(
CodigoQR(
"holamundo","L",2,1
)

TextoAleatorio:
Descripcin: Devuelveuntextoaleatoriocompuestopornmerosyletrasdeunalongituddeterminada
Prototipo: TextoAleatorio($longitud)
Parmetros:

longitud:Longituddelacadenadevueltaporlafuncin

Salida: Textoaleatorio
10
)

//Retornarunacadenade10caracteres
Ejemplosdeuso: TextoAleatorio(

enviar_correo:
Descripcin: Envauncorreoelectrnicohaciendousodelafuncinmail()dePHP.Prcticoseencargadedarelformato
yagregarencabezadosypiedepginacorrespondientes.
Prototipo: enviar_correo($remitente,$destinatario,$asunto,$cuerpo_mensaje,$destinatario_cc="",$desti
natario_bcc="")

Parmetros:

remitente:direccindecorreoelectrnicodelremitentedelmensaje.
destinatario
asunto
cuerpo_mensaje:textocontodoelmensajeaenviar.PuedecontenercodificacinHTML.
destinatario_cc
destinatario_bcc

Salida: Correoelectrnicoenviadoaldestinatario,destinatario_ccydestinatario_bcc
Retornaverdaderosielcorreofueencolado/aceptadoparaenvioofalsosifuerechazado
"
noreply@misistema.com
","destino@gmail.com","Hola!","Mensajedeprueba"
)
Ejemplosdeuso: enviar_correo(

5.9.4.FuncionesgeneralesdisponiblesenJavaScript

PCO_ObtenerContenidoAjax:
Descripcin: ObtieneURLsysuscontenidosdemaneradinmica
Prototipo: PCO_ObtenerContenidoAjax(PCO_ASINCRONICO,PCO_URL,PCO_PARAMETROS)
Parmetros:

PCO_ASINCRONICO:Indicalaformaenqueserrecuperadoelcontenido.Lorecomendadoes
asincrnico(valor1),sinembargootrospuedequerequieranrecibirlasrespuestasasuspeticiones
demanerasincrnica(valor0).
PCO_URL:Direccinalacualsehacelasolicitud.Slohastasurazonombredearchivo.
PCO_PARAMETROS:Parmetrosadicionales(quenormalmentesevenconcatenadosenunaURL)
yquedebenserenviadosconlapeticin.

Salida: Contenidosobtenidosretornadoscomocadenadecaracteres

Visite

practico.org
paramsinformacin

69


Documentacinoficial.

=PCO_ObtenerContenidoAjax(
0,"index.php","PCO_Accion=valor_campo_tabla&campo=Nombre&t
Ejemplosdeuso: Variable

abla=app_productos&condicion=id%3d"+document.datos.Producto.value+"&Presentar_FullScreen=1"
)

//Obtienedemanerasincrnicaunvalor

PaginaGoogle
=PCO_ObtenerContenidoAjax(
1,"http://www.google.com",""
)
//Obtiene todo el contenido
delapgina

PCOJS_MostrarMensaje:
Descripcin: PermitepresentarunmensajealusuariomedianteunPopUpdeBootstrap.
Prototipo: PCOJS_MostrarMensaje(TituloPopUp,Mensaje)
Parmetros:

TituloPopUp:Elttuloquedeseaponerasumensaje
Mensaje:Eltextoinformativoquedeseapresentaralusuario.SoportaetiquetasHTMLbsicas.

Salida: Dilogomodalbasadoenbootstrapconlapersonalizacinenviadaporelusuario
(
"Error","Ustedhaolvidadodiligenciaruncampoobligatorio"
)
Ejemplosdeuso: PCOJS_MostrarMensaje
PCOJS_MostrarMensaje
(
"Advertencia","Valorfueraderango"
)

PCOJS_MostrarMensajeCargando:
Descripcin: Permitepresentarunmensajedecarga,porcentajeodesarrollodetareasalusuariomedianteunPopUpde
Bootstrap.
Prototipo: PCOJS_MostrarMensajeCargando(TituloPopUp,Mensaje,PermitirCierre,Progreso)
Parmetros:

TituloPopUp:Elttuloquedeseaponerasumensaje
Mensaje:Eltextoinformativoquedeseapresentaralusuario.SoportaetiquetasHTMLbsicas.
PermitirCierre:Permitequeelcuadroseacerradoporelusuario.Valor1permitequeelusuario
cierreelcuadro,valordiferentede1impdealusuariocerrarelcuadro.
Progreso:Indicasidebeserpresentadaonounabarradeprogresoalusuario.Valormayoroiguala
ceromuestralabarraylainicializaenesevalor.Valoresnegativosocultanlabarra.

Salida: Dilogomodalbasadoenbootstrapconlapersonalizacinenviadaporelusuario
Ejemplosdeuso: //Presentarmensajedecargaquepuedesercerradoporelusuarioysinbarradeprogreso
PCOJS_MostrarMensajeCargando(
'Porfavorespere','Descargandocontenidos',1,1
)

//Presentarmensajequenopuedesercerradoporelusuarioysinbarradeprogreso
PCOJS_MostrarMensajeCargando(
'Porfavorespere','Descargandocontenidos',0,1
)

//Presentarmensajequenopuedesercerradoyconbarradeprogresoal10%
PCOJS_MostrarMensajeCargando(
'Porfavorespere','Descargandocontenidos',0,10
)

PCOJS_EstablecerPorcentajeProgreso:
Descripcin: Actualizaelvalordeunabarradeprogresodentrodelmensajedeprogresolanzadoalusuario
Prototipo: PCOJS_EstablecerPorcentajeProgreso(Porcentaje)
Parmetros:

Procentaje:Valorentreceroycien(0100)paraasignaralabarrayactualizarlavisualmente

Salida: Barradeprogresoactualizadaenpantalla
(
0
)
//Inicialabarravaca
Ejemplosdeuso: PCOJS_EstablecerPorcentajeProgreso

PCOJS_EstablecerPorcentajeProgreso
(
55
)
//Asignaelvalor55alabarra
PCOJS_EstablecerPorcentajeProgreso
(
100
)
//Llenacompletamentelabarradeprogreso

PCOJS_OcultarMensajeCargando:
Descripcin: Ocultaelmensajedecargainiciadoporelllamadoalafuncin
PCOJS_MostrarMensajeCargando()
de
maneraquemensajesdeestetipopuedansercerradosdesdeeventosdelaaplicacincuandoalusuariose
leprohibesucierre.

Visite

practico.org
paramsinformacin

70


Documentacinoficial.

Prototipo: PCOJS_OcultarMensajeCargando()
Parmetros:
Salida: Mensajecerradodevolviendoelcontroldelaaplicacinalusuario
()
Ejemplosdeuso: PCOJS_OcultarMensajeCargando

PCO_VentanaPopup:
Descripcin: PermitecargarunaURLcompletaenunaventanaemergente
Estafuncinesunclonmnemotcnicodelafuncinwindow.open()DisponibleenJavaScript.
Prototipo: PCO_VentanaPopup(URL,Titulo,ParametrosVentana)
Parmetros:

URL:DireccinoURLquesercargada.Puedeserestticaoconstruidaconbaseenvariables
JavaScript(vaseejemplos)
Titulo:Elttuloonombrenicodelaventana.Ventanasemergentesconunmismonombresern
cargadas(orecargadas)sobrelamismaventanacuandosonllamadasaltiempoomientrasalguna
deellasseencuentreabierta.Ventanasconttulosdiferentessonabiertasenventanas
independientes.
ParametrosVentana:Determinanlapresentacindelaventana,obedecenalosmismosparmetros
delafuncinoriginalenJavaScriptwindow.open()

Salida: Dilogomodalbasadoenbootstrapconlapersonalizacinenviadaporelusuario
(
'http://www.practico.org','PaginaProyecto','toolbar=yes,location=no,
Ejemplosdeuso: PCO_VentanaPopup

directories=no,status=yes,menubar=yes,scrollbars=yes,resizable=yes,fullscreen=no,
width=900,height=600'
)
PCO_VentanaPopup
(
'index.php?PCO_Accion=cargar_objeto&objeto=frm:16:1:ClienteId:'+IdCliente+'
&Presentar_FullScreen=1&Precarga_EstilosBS=1','SubFormulario','toolbar=no,location=no,
directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,fullscreen=no,
width=600,height=400'
)

PCO_AgregarElementoDiv:
Descripcin: AgregademaneradinmicaunelementocualquieraaunmarcoDIVdentrodelapgina
Prototipo:
Parmetros:
Salida:
Ejemplosdeuso:

PCO_AgregarElementoDiv:
Descripcin: AgregademaneradinmicaunelementocualquieraaunmarcoDIVdentrodelapgina
Prototipo:
Parmetros:
Salida:
Ejemplosdeuso:

Visite

practico.org
paramsinformacin

71


Documentacinoficial.

5.9.5.Funcionesdeformatoypresentacin
abrir_ventana:
Descripcin: Abrelosespaciosdetrabajodinmicossobreelcontenedorprincipaldondesedespliegainformacin.
Prototipo: abrir_ventana($titulo,$fondo,$ancho='100%',$barra_herramientas='')
Parmetros:

titulo:Nombredelaventanaavisualizarenlapartesuperior.AceptamodificadoresHTML.
fondo:ColordefondodelaventanaenformatoHexadecimal.Sinoesenviadosecreatransparente.
Sillegaunnombredeimagenesusado.
ancho:Anchodelespaciodetrabajodefinidoenpixelsoporcentajesobreelcontenedorprincipal.
barra_herramientas:cadenaquecontieneladefinicindeherramientasquesernpublicadasenla
barradettulo

Salida: Tablaconformatousadacomoventana
"Adicionderegistros","#FFFFFF"
)
//Creaunaventanadefondoblanco
Ejemplosdeuso: abrir_ventana(

abrir_ventana(
"Adicionderegistros","","400"
)
//Creaunaventanatransparentede400pixeles
abrir_ventana(
"Miventana","","70%"
)
//Creaunaventanaconunanchorelativoalcontenedor

cerrar_ventana:
Descripcin: Cierralosespaciosdetrabajodinmicoscreadosporunaventana.Deusoobligatoriocuandohayacreado
unaventanaparamantenerelordendesusmarcos.
Prototipo: cerrar_ventana()
Parmetros:
Salida: Cierredelatablaconformatousadacomoventana
)
Ejemplosdeuso: cerrar_ventana(

abrir_barra_estado:
Descripcin: Abreunespacioparaubicartextosinformativos,botonesdecomandoocualquierotrocontenido
Prototipo: abrir_barra_estado($alineacion="CENTER")
Parmetros:

alineacion:Indicalaalineacindeloselementosinternos

Salida: Tablaconformatousadacomobarradeestado
)
Ejemplosdeuso: abrir_barra_estado(

cerrar_barra_estado:
Descripcin: Cierralosespaciosdetrabajodinmicoscreadosporunabarradeestado.
Prototipo: cerrar_barra_estado()
Parmetros:
Salida: Cierredelatablaconformatousadacomobarradeestado
)
Ejemplosdeuso: cerrar_barra_estado(

Visite

practico.org
paramsinformacin

72


Documentacinoficial.

5.9.6.Variablesdeentornoyvariablesdeusuario

PrcticoFrameworkpermitelautilizacindevariablesPHPdesesin,definidasporelusuarioyotras
generadasdesdediferentespuntos.Pordefecto,seencuentrandisponibleslassiguientesvariablesen
cualquierpuntodesuaplicacin:

Variablesdesesion:

$PCOSESS_SesionAbierta
$PCOSESS_LoginUsuario

Variablesentiempodeejecucin:
$PCO_FechaOperacion
$PCO_FechaOperacionGuiones

$PCO_HoraOperacion
$PCO_HoraOperacionPuntos
$PCO_DireccionAuditoria
$PCO_NumeroParametros
$PCO_NombresParametros
$PCO_ValoresParametros

Variablessegnelcontexto:
$PCO_Accion
$PCO_CampoBusquedaBD
$PCO_ValorBusquedaBD

$PCO_ErrorTitulo
$PCO_ErrorDescripcion
$PCO_ErrorIcono
$PCO_ErrorEstilo
$Presentar_FullScreen
$Precarga_EstilosBS

Otrasvariablesespeciales:

$_SeparadorCampos_
$MULTILANG_*:Lasvariablesqueinicianconestanotacinsonusadasparaimpresinde
mensajesenmltiplesidiomas.Vaseelapartado"Administracindelidioma"
$IdiomaPredeterminado:

Visite

practico.org
paramsinformacin

73


Documentacinoficial.

5.10.Administracindelidioma

Prctico cuenta con la posibilidad de ser desplegado en mltiples idiomas, inicialmente cuenta con espaol
como su idioma nativo e ingls como una traduccin alternativa. Ambos idiomas se encuentran de manera
predeterminadaentodaslasinstalaciones.

Si se desea cambiar el idioma de la herramienta el administrador simplemente debe dirigirse al panel de


configuracin y seleccionar el idioma deseado. Una vez haga clic en guardar la configuracin a todos los
usuarioslesseractualizadosuidiomaenpantallasinnecesidaddereiniciarsusesin.

Las etiquetas y dems contenidos dependern del idioma con que sean ingresados en el sistema durante el
procesodediseodeformularios,informes,opcionesdemenydems.

Cmocrearmdulosmultiidioma?
Para establecer el idioma de trabajo Prctico lo nico que hace es incluirelarchivocorrespondientedesdeel
pathinc/practico/idiomas.

Si usted desea construir sus propios archivos de idioma podr ubicarlos dentro de la carpetadelmduloque
est desarrollando y luego hacer su inclusin de acuerdoal valordelavariablequeindicala configuracinde
idioma actual para la herramienta $IdiomaPredeterminado y que contendr un valor de dos letras, por
ejemplo,es,en.Asustedpodrcrearmltiplesarchivosconlosmensajespersonalizados.

5.11.Clonacinrpidadeaplicaciones
5.11.1.Clonacindeformularioseinformes

Laclonacindeelementostipoformularioeinformessepuederealizardemanerasencillaentresescenarios
diferentesmedianteunprocesodeexportacineimportacinposterior:
Clonacin"Enlnea"
Estopermitealdesarrolladordelaaplicacinc
rearunnuevoobjetoconIDindependienteidnticoal
actualperocontodossuselementosinternosvinculadosdemaneraquesepuedamanipularpara

Visite

practico.org
paramsinformacin

74


Documentacinoficial.

generarnuevaspantallas,formulariosoinformesderivados.

Lafuncinoperainmediatamentesobreelsistemaenejecucin,clonandoelobjetoseleccionadoy
presentandoaldesarrolladorelIDdelnuevoelementogeneradoparaqueprocedaasumodificacin
segnsunecesidad.Normalmentealoselementosclonadosdeestamaneraseanteponelapalabra
[COPIA]antesdelttuloparaqueseanfcilmentelocalizados.

XMLconIDactual:
ExportaelobjetoactualenformatoXMLparaquepuedaserimportadosobreotrosistema
conservandosumismoIDdeobjeto.

Estaformadeexportacinestilsideseasobreescribirformulariosoinformespreviosconmejoras
desdeotrossistemas,porejemplo,sisetuvieraunformularioalcualsehanhechomejorasenotro
sistemaoenun
sandbox
,ysedeseapasaraunnuevosistemaoalsistemaenproduccin
sobreescribiendoelformularioactual.

XMLconIDDinmico:
Exporta/ImportaelobjetoenformatoXMLperogenerandoestedemaneradinamicaparaquecuando
seaimportadosegenereunnuevoobjetocadavez,conIDdiferenteporcadavezqueimporteel
archivo.Utilparareplicarelcomportamientodelaopcin"EnLinea"perosobrediferentessistemas.

Pasosparaclonarunformulariooinforme:
Paraclonarunformulariooinformedirjasealaopcindediseocorrespondiente,unavezdesplegadalalista
deelementosidentifiqueaquelqueusteddeseaclonaryhagaclicsobreelbotn"
Crearcopia
".

Unavezseadesplegadalasiguientepantalla,seleccioneeltipodeexportacinquedesearealizarentrelos
tresdisponiblesteniendopresentequesegneltiposeleccionadoserelprocesodeimportacinposterior.

Hagaclicsobreelbotn"
Descargar
"paraobtenerunacopiadelelementoenformatoXML.Esnormalque
estoselementosseanexportadosconalgunoscamposdemaneranolegible,puessedebendejarenuna
notacin(enestecaso
Base647
)quepermitasucorrectaimportacininclusocuandoseantrozosdecdigo,
imgenesodemsobjetosespecialescontenidosenelelemento.

Comosehaaclaradoenlospuntosanteriores,laclonacindeelementos"Enlnea"esunprocesoquese
haceencalientesobreelsistemaencuestinysusresultadossepuedenverdemanerainstantneaenel
navegador,paraelrestodeopcionesdeexportacinustedpuedeprocederaimportarelarchivodela
siguientemanera:

Tengaencuentaque...

Base64.(2015,19demayo).
Wikipedia,Laenciclopedialibre.
Fechadeconsulta:20:45,mayo26,2015desde
http://es.wikipedia.org/wiki/Base64

Visite

practico.org
paramsinformacin

75


Documentacinoficial.

1. Dirjasealaopcincorrespondientealelementoquedeseaimportar
(FormulariosoInformes)
2. Enelformulariodecreacindenuevoselementoshagaclicsobreel
botn"
Importardiseodesdearchivo
".
3. Enlaventanadesplegadaadjunteelarchivopreviamenteexportadoy
hagaclicen"
Cargarelarchivo
".
4. Elsistemapresentarunmensajedeconfirmacindelcargue.Hagaclic
enelbotn"
Continuarconlarevisin
".
5. Reviselainformacinpresentadayconfirmelaimportacindelelemento
medianteelbotn"
Importar
".
6. Reviseelelementoimportado.

La importacin de elementos con


ID Dinmico puede no reflejar
todosloscomportamientoscuando
usted hace llamados a stos
elementos
desde
cdigos
personalizadosporsu ID,debidoa
que el ID delelementocambiaen
cadaimportacin.

Adems, recuerde que los


elementos exportados con ID
dinmico podrangenerar mltiples
elementos nuevos si usted repite
su proceso de importacin con el
mismoarchivo.

Visite

practico.org
paramsinformacin

76


Documentacinoficial.

6.Complementarios

6.1.Arquitecturadelaaplicacin

Del lado del cliente se encuentra undispositivodotadoconnavegadorweb(PC,Tableta,SmartPhone)elcual


hacelasdiferentessolicitudesalaaplicacin.

Prctico cuenta con un motor propio que despliega enpantallalosdiferentesobjetos(controlesdeformulario,


informes, mens y grficas) de acuerdo a cada solicitud del cliente y lo establecido por la lgica de la
aplicacin, la cual hace el puente como el ncleo de Prctico con el motor de base de datos para el
almacenamiento.

Este ncleo permite tambin la interaccin con otras aplicaciones mediante el acceso a bases de datos
compartidas y la ejecucindefunciones personalizadasporeldesarrolladorparaextenderlasfuncionalidades
delaherramienta.

Visite

practico.org
paramsinformacin

77


Documentacinoficial.

6.2.Capadedatos

Se ha incluido dentro de la herramienta un archivo con funciones destinadasarealizartodaslasoperaciones


con el motor de base de datos, de manera que todo sea adaptable a diferentes motores de bases de datos.
44
Para la estandarizacin de estas instrucciones se ha seleccionado la extensin PDO
dePHPyquepermite
tener mtodosuniformesparaaccederadiferentesmotoresdebasesdedatosdeacuerdoaloscontroladores
disponiblesenlaconfiguracindePHP.

Aunque el desarrollo oficial de la herramienta se hace sobre motores MySQL y MariaDB de manera oficial,
algunos de los drivers actualmente disponibles para PDO facilitan la adaptacin y/o ejecucin delcdigocon
lossiguientesmotoresdebasededatos:

MySQL(3.x/4.x/5.x)
MariaDB(5.x)
SQLite2
SQLite3
FreeTDS/MicrosoftSQLServer:Win32[versin2008]
FreeTDS/MicrosoftSQLServer:Win32&Linux[versin2000]
PostgreSQL
IBM(DB2)
DBLIB/Sybase
MicrosoftAccess(ODBCv3:IBMDB2,unixODBC,Win32ODBC)
ORACLE(OCIOracleCallInterface)
Informix(IBMInformixDynamicServer)

Visite

practico.org
paramsinformacin

78


Documentacinoficial.

Firebird(Firebird/Interbase6)
4D

6.3.Lgicadeprogramacin

Para su correcto funcionamiento, Prctico cuenta con algunas funciones internas que permiten realizar las
validaciones y controles de flujo del programa mientras se trabaja sobre la herramienta, sin embargo, todas
estas funciones internas se encuentran disponibles tambin para ser utilizadas dentrodelaaplicacinmisma
queesdiseadamediantePrcticoamaneradefuncionesdeFramework.

As pues, lo mdulos de Prctico trabajan de manera articulada mediante estas funciones garantizando las
operaciones entre el cliente (navegador web), el motor de Prctico generador de las interfaces de usuario e
informesyelmotordebasesdedatossobreelcualsealmacenalaaplicacinysusdatos.

La representacin de la lgica de programacin, validaciones y dems formalismosasociadosalosprocesos


y lgica de negocio que se desee implementar con la aplicacin mediante Prctico estarn implcitos en el
diseo de cada uno de los formularios y las opciones de men asociadas para su cargue por parte de los
usuarios finales de la aplicacin, componentes que son los que definen el comportamiento general de la
aplicacin.

Si bien el diseo de los formularios puedecontemplarlosaspectos claveasociadosaprocesosdevalidacin,


tambin se puede hacer el llamado a las funciones internas mediante la creacin de funciones o mdulos
personalizados que tomen los datos ingresados por el usuario y los procesen de manera diferente, por
ejemplo, mediante una nueva funcindefinidasobrelosarchivosdisponiblesenPrcticoparapersonalizacin
defuncionesosobremdulosindependientes.

6.4.Escenariosparadesplieguedeaplicaciones

Prctico se compone de un conjunto de scripts en PHP, archivos HTML, scripts SQL, imgenes y otros
elementos que sirven para la creacin de aplicaciones mediante esta herramienta, y como tal, puede ser
desplegado sobre cualquier servidor web que soporte PHP o bajo diferentes modalidades ofrecidas por
algunos proveedores en la red como PaaS (Palaforma como servicio), VPS (Servidores privados virtuales, o
dedicados),servidorescompartidos,entreotros.

Todos los archivos ycomponentesnecesariosparahacerunainstalacindePrcticoseencuentrandentrode


su archivo de paquete comprimido que puede ser descargado desde la web del proyecto.Estepaquetesirve
parainstalarlaherramientaenmododeproduccinoenmododepruebas.

Visite

practico.org
paramsinformacin

79


Documentacinoficial.

Las aplicaciones diseadas en Prctico son desplegadas en caliente, ya que amedidaquesoncreadoslos


objetos como tablas, formularios, informes y mens stos quedan disponibles de manera inmediata para los
usuarios. De esta manera si estas tareas son desarrolladas sobre una instalacin en produccin bastarcon
asignar los permisos de cada objeto diseado a los usuarioscorrespondientesylas nuevasopcionesestarn
disponiblesenlasiguientecargadelsistemaquehagaelusuario.

Aquellos desarrolladores que deseen tener un escenario de pruebas podrn realizar unasegundainstalacin
de Prctico sobre una base de datos diferente a la de produccin, o sobre la misma base de datos perocon
prefijos de tabla diferentes para poder realizar primero sus diseos antes de ser creados nuevamente en el
entornodeproduccin.

Grficamente, como posibles escenarios para el despliegue de Prctico, y a su vez, el despliegue de las
aplicacionesdesarrolladasenstesetienen:

6.4.1.Servidordewebybasededatosdedicadoaproduccin

Cuenta con un servidor web y de base de datos alojados en la misma mquina8 , sobreelcualsehaceunao
variasinstalacionesdePrcticoconfinesdeproduccinyqueservirlasaplicacionesalosusuariosfinales:

En este escenario el desarrollador tambin puede acceder directamente a la plataforma en produccin y


disear sobre esta los nuevosobjetos,quedandodisponiblesdemanerainmediatasobre laaplicacinservida
porPrctico.

Es un escenario orientado a desarrolladores experimentados en la herramienta pues los cambios realizados


sobre tablas o formularios pueden afectar el funcionamiento de la aplicacin. Es recomendable adoptar un
escenarioquecontempleunentornodepruebasparaeldiseodelosobjetosantesdeserpublicados.

Seentiendecomomquinaenestecontextoaunacomputadorasobrelacualcorredeterminadoservicio,siendoestafsicaovirtual.

Visite

practico.org
paramsinformacin

80


Documentacinoficial.

6.4.2.Servidorwebydebasededatosdedicadoaproduccinypruebas

Cuenta con un servidor web y de base de datos alojados en lamismamquina, sobrelacualsehacendos o


ms instalaciones de Prctico sobre diferentes path en elservidorwebylamismabasededatosconfinesde
produccinopruebas:

En este escenario eldesarrolladorpuedetenerotrasinstalacionesdePrcticosobre lamismamquinadonde


residenlosscriptsybasededatosdelsistemaenproduccin.

Contar con al menos una segunda instalacin para pruebas cuando no se cuenta con experiencia en la
herramienta es fundamental para garantizar la continuidad de las operaciones previniendo una posible falla
delserviciopordiseosmalrealizadosypublicadosenelentornodeproduccin.

6.4.3.Servidordewebybasededatosindependientesdedicadosaproduccin

Cuenta con un servidor web y de base de datos en mquinas diferentes, sobre el servidor web se pueden
tener mltiples instalaciones de Prctico y sobre el servidor de bases de datos mltiples bases de datos
asociadasacadainstalacindelaherramientaconfinesdeproduccin:

Visite

practico.org
paramsinformacin

81


Documentacinoficial.

6.4.4.Servidordewebybasededatosindependientesdedicadosaproducciny
pruebas

Este y otros escenarios pueden ser considerados como hbridos de los anteriormente descritos debidoaque
lostiposdeconfiguracindelaplataformasobrelacualresidelaherramientapuedensermltiples.

Elpasodeunaaplicacindepruebasaunentornodeproduccinpuedeserrealizadodedosmaneras:
1. Copiando (total o parcialmente) la base de datosdepruebasysusobjetossobrelabasededatosque
serdedicadaalsistemadeproduccin.
Copia de tablas con el prefijo del ncleo de la herramienta (predeterminado en core) harn
untraspasodeobjetoscomoformularios,informesycredencialesdeusuario.
Copia de las tablas con el prefijo de aplicacin (predeterminado en app) harn un traspaso
delosobjetostipotabladedatosquehansido
definidos por el desarrollador. Aqu se
podrdecidirentrehacer
una copia completa incluyendo los datosohacerunacopialimpia
conslolaestructuradelatabla.
El proceso de copia de estos elementos puede ser ejecutado por el desarrollador mediante
cualquierherramientaquetengadisponibledeacuerdoasumotordebasededatos.
2. Cambiando las variables de configuracin asociadas a los parmetros de conexin con el motor de
base de datos, aunque esto puede implicar la desconexin temporal de un sistema que ya se
encuentra en produccin. Lo ideal es contar con una instalacin de pruebas independiente y replicar
loselementossobrelainstalacindelsistemaenproduccin

En esencia, el despliegue de Prctico se podra comparar con aplicaciones que funcionan de manera similar
como Joomla!, las cuales sedescomprimensobreelservidorwebyseejecutaunasistentedeinstalacinque
generalastablasnecesariasparatrabajarydondecadacontenidoagregadoesservidoinmediatamente.

Visite

practico.org
paramsinformacin

82


Documentacinoficial.

6.4.5.DespliegueenHeroku

Prctico le permite desplegar sus aplicaciones y entornos de produccin de manera rpida de uno a cientos
demilesdeusuariosdemanerarpidautilizandoHeroku9.

En esencia, una vez registrado en Heroku, sin importar si su cuenta es gratuita o de pago, usted podr
sincronizar elrepositoriodePrcticoconsuplataformamedianteelbotndestinadoparaestoenelrepositorio
delproyectoenGitHuboenlapginaweboficial.

ApartirdeallsigalasinstruccionespropiasdeHerokupararealizareldesplieguedelaaplicacin.

6.4.6.Mododedemostracin

Prctico cuenta con un modo especial que le permite generar instalaciones (o convertir las existentes) en
aplicacionesenmododedemostracin,parasusdesarrolladores,clientes,visitantesdelaweb,etc.

Este mdulo es habilitable nicamente por el administrador del servidor o quien tenga acceso a la raz de
instalacin, ya que es controlado por un archivo que solamente puede ser puesto all por quien tenga
permisosdeescritura.

Para cambiar a Prctico a modo de demostracin simplemente deber crear un archivo llamado DEMO (en
mayscula)enlarazdesuinstalacin. Cuando Prcticodetecta queexisteesearchivoinmediatamentepasa
a modo demostracin muchas desusfuncionalidadesdentrodelascualespuedenestar,sinlimitarseastas,
lassiguientes:
Pantallasdeconfiguracindemotor,prefijosymodosdeautenticacin
Cambiodecontraseadelusuario
Actualizacindeperfilesdelusuario
MododeescrituradelPCoder
Mododeescrituraparaexploradoresdearchivosembebidos

Esto permitir que usted despliegue aplicacionesdondelosusuariospuedanexplorartodolocreadoeincluso


los administradores puedan realizar diseos nuevos o editar losexistentesperosinrealizarcambiosgravesa
laplataformaparaqueotrospuedanseguiringresando.

Sitiooficial:https://www.heroku.com/

Visite

practico.org
paramsinformacin

83


Documentacinoficial.

En este modo se encuentra el modo de demostracin de Prctico para quienes desean explorar su demo
ubicadoen
http://demo.practico.org

Adicionalmente, Prctico genera una variable de sesin que puede servir a usted paracontrolarsus mdulos
propiosyconocer elestadodel mododemo. Lavariable es
PCO_ModoDemoytomavaloresdeceroounosi
estdesactivadooactivadocorrespondientemente.

Visite

practico.org
paramsinformacin

84


Documentacinoficial.

Glosario

API: (del ingls


Application Programming Interface
) consiste en un conjunto de funciones y
procedimientos que se ofrecen por una librera o aplicacinparapoderserutilizadosporotrosoftware
comounacapadeabstraccin.

CGI:
(del ingls
Common Gateway Interface)
se conocecomounatecnologa quepermiteauncliente
solicitar datos de un programa que es ejecutado sobre un servidor web. Fue una de las primeras
formas que se tuvieron para la generacindinmicadecontenidos,ya quelosresultadosdeejecucin
de cada programa o guin CGI eran transferidos comorespuestaalservidor web,quienlosentregaba
asuvezalcliente.

CMS: (del ingls


Content Management System
) es un programa que corre sobre un servidor web
permitiendocrearyadministrarlosdiferentescontenidosquesernpublicadosdemanerasimplificada.

CRUD: Acrnimo que hace referencia a las operaciones bsicas de bases de datos como son la
Creacin,Consulta,ActualizacinyEliminacin.Delingls:Create,Read,Update,Delete

CSS:
(del ingls Cascading Style Sheets) consiste en un lenguaje que permite definir la presentacin
de un documento HTML. Permite separar la estructura de un documento de su presentacin, con lo
queelmismodocumentopodratenerasociadosdiferentesformatosdepresentacinenCSS.

GIT:
es un software para el control de versiones pensado para la eficiencia y confiabilidad del
mantenimientodeversionescuandostastienenungrannmerodearchivosensucdigofuente.

GNU:
acrnimo recursivo que significa GNU No es Unix (del ingls
GNU is not Unix
) que fue iniciado
comoproyectoporRichardStallmanparacrearunsistemaoperativocompletamentelibre.

GPL:
(del ingls
General Public License)
es una licencia creada por la Free Sfotware Foundation
orientadaprincipalmenteaprotegerladistribucin,modificacinyusodelsoftware.

GUI: (del ingls Graphical User Interface


) esunprogramainformticoqueactacomointerfazentreel
usuario y la mquinautilizandodiferenteselementosuobjetosgrficospararepresentarlainformacin
oaccionesdisponibles.

HTML: (del ingls


HyperText Markup Language)
hace referencia al lenguaje predominante para la
elaboracin de pginas web que describe toda lainformacinysuestructuragrficaenformadetexto
afindepoderserinterpretadoyvisualizadoporlosnavegadores.

LINUX:
es un ncleo libre desistemaoperativobasadoenUnix.Esunodelosprincipalesejemplosde
softwarelibrelicenciadobajolostrminosdelaGNU/GPL2.0

MER:
el Modelo Entidad Relacin es un diagrama paraelmodeladodedatosquepermiterepresentar
entidadesrelevantesdeunsistemadeinformacinascomosusinterrelacionesypropiedades.

Visite

practico.org
paramsinformacin

85


Documentacinoficial.

PDO:
(del ingls
PHP Data Objects)
es una extensin para el lenguaje de programacin PHP que
provee una capa de abstraccin de acceso a datos. Por medio de esta extensin se hace uso de las
mismasfuncionesparahacerconsultasyobtenerdatosdedistintosmanejadoresdebasesdedatos.

PHP:
acrnimo recursivo que significa
PHP Hypertext Preprocessor.
Esun lenguajedeprogramacin
deusogeneralqueseejecutadelladodelservidorwebparalageneracindepginasdinmicas.

RAD: (del ingls


Rapid Application Development)
es un proceso de desarrollo que comprende el
desarrollo interactivo, la construccin de prototipos y el uso de utilidades de ingeniera de software
asistidaporcomputadora.

SOFTWARE LIBRE
: es la denominacin que se da a un software que respetalalibertaddetodoslos
usuarios que adquirieron el producto de manera que una vez obtenido puede ser usado, copiado,
estudiado,modificadoyredistribuidolibrementeparacualquierfinalidad.

SQL:
(del ingls
Structured Query Language)
es un lenguaje declarativo de acceso a bases de datos
relacionalesquepermiteespecificardiversasoperacionessobreellas.

UML:
(del ingls
Unified Modeling Language)
es el lenguaje de modelado de sistemas de software
ms conocido y utilizado en la actualidad. De manera grfica visualiza, especifica, construye y
documentaunsistema.

VPS: (del ingls


Virtual Private Server
) se conoce como a una particin dentro de un servidor que
habilitavariasmquinasvirtuales.

Visite

practico.org
paramsinformacin

86


Documentacinoficial.

Referencias

[1]ARROYAVEGUTIRREZ,JohnFreddy.PRCTICO:GeneradordeAplicacionesWeb.Tesisde
MaestraLaureada.Bucaramanga.UniversidadAutnomadeBucaramangaUniversitatObertade
Catalunya.FacultaddeIngenieradeSistemas.2013.134p.

[2]ARROYAVEGUTIRREZ,JohnFreddy.ManualparaAplicacindeFormatoaDocumentosen
Lnea.ComunidadPrctico.2013.5p

Visite

practico.org
paramsinformacin

87

Anda mungkin juga menyukai