desarrollo politico
TRANSCRIPT
![Page 1: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/1.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Esquema y Esquema y Estándares de Estándares de TrabajoTrabajo
29 de Septiembre de 201129 de Septiembre de 2011
![Page 2: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/2.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Esquema de trabajoEsquema de trabajo
29 de Septiembre de 201129 de Septiembre de 2011
![Page 3: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/3.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
ContenidoContenido
Relación Interdepartamental Esquema de Trabajo Interno
Source Control Plan de Trabajo Process Dashboard
![Page 4: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/4.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Ordenes de ServicioOrdenes de ServicioUna orden de servicio es básicamente un orden de trabajo que el personal de Soporte a Sistemas turna al personal de Desarrollo de Soluciones, para que este ultimo le de solución a un problema de la aplicación o bien realice una mejora de funcionalidad o mejora visual de acuerdo a una solicitud planteada por el usuario.
Usuario Help Desk Soporte a Sistemas Desarrollo
• El usuario detecta un error en la aplicación.
• Marca a DGI al Help Desk para levantar una orden de servicio.
• El personal captura la orden de servicio de acuerdo a lo que el usuario le comenta.
• Clasifica la orden de servicio para que sea revisada.
• El personal revisa la orden y trata de recrear el caso que el usuario especifico en la orden, de ser necesario se comunica con el para una mejor explicación
• Si la orden procede como error de sistema la turna a Desarrollo
• La orden es revisada y el caso es recreado una vez mas.
• Si es un error de lógica, se corrige el problema de fondo para que este no vuelva a ocurrir, si es de aplicación se corrige solamente.
• Generar nueva versión del ejecutable con el cambio realizado
![Page 5: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/5.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Propuesta de Flujo para O.S.Propuesta de Flujo para O.S.Problemas
Soporte a Sistemas Desarrollo
• El personal revisa la orden y trata de recrear el caso que el usuario especifico en la orden, de ser necesario se comunica con el para una mejor explicación.
• Revisar si realmente se trata de un error en la aplicación.
• Obtener una descripción mas detallada del error.
• Obtener los datos y el flujo mediante el cual se recrea el error.
• Obtener los datos del usuario (nombre, dependencia y extensión) para que el departamento de desarrollo pueda contactarlo de ser requerido.
• Prestar apoyo para corrección de información.
• La orden es revisada y el caso es recreado una vez mas, en caso de ser necesario.
• Si es un error de lógica, se corrige el problema de fondo para que este no vuelva a ocurrir.
• Si es de aplicación se corrige solamente.
• Si el error origina que se grabe mal la información en la base de datos y hay manera de corregirlo retroalimentar al departamento de soporte a sistemas para que este apoye en la corrección de información mientras se resuelve el problema de fondo.
• Proveer al departamento de Soporte a Sistemas de los querys requeridos para la corrección de información.
![Page 6: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/6.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Propuesta de Flujo para O.S.Propuesta de Flujo para O.S.Solicitudes
Soporte a Sistemas Desarrollo
• El personal revisa la orden y en caso de ser necesario se comunica con el para una mejor explicación de su solicitud.
• Revisar si es factible realizar esta modificación.
• Obtener una descripción mas especifica de la solicitud.
• Obtener los datos del usuario (nombre, dependencia y extensión) para que el departamento de desarrollo pueda contactarlo de ser requerido.
• En el caso de solicitud de reporte y/o consulta investigar el motivo o que información quieren explotar con ese reporte.
• Para reportes se deberá de solicitar al usuario un formato, la definición de las columnas, grupos y filtros que el usuario solicita que se incluyan en la ventana.
• La orden es revisada y se analiza la factibilidad de la solicitud.
• En el caso de reportes y/o consultas si se determina que el usuario puede obtener esa información en el sistema de alguna otra parte se debe de retroalimentar al personal de soporte a sistemas para que este transmita esta al usuario.
• Se analiza en conjunto con el usuario el requerimiento a fin de pulir la solicitud y aclarar puntos de duda sobre la orden.
• Desarrollo de la solicitud de acuerdo a lo solicitado.
• Proveer al departamento de Soporte a Sistemas de una retroalimentación del cambio para que este pueda apoyar al usuario en caso de cualquier mensaje de error.
• Alimentar las soluciones a problemas mas comunes que se pueden originar con la solución desarrollada.
![Page 7: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/7.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
ContenidoContenido
Relación Interdepartamental Esquema de Trabajo Interno
Source Control Process Dashboard
![Page 8: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/8.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Source ControlSource Control
Funciona para controlar las versiones y el desarrollo en equipo.
El líder del proyecto es el responsable de tener siempre todos los objetos y de ir soltando conforme se vayan requiriendo.
Facilidad para el líder de proyecto de generar versión mientras algunas actualizaciones sigan pendientes de terminarse.
![Page 9: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/9.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Source ControlSource Control
![Page 10: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/10.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Process DashboardProcess Dashboard
Contabilizar el tiempo de las actividades que realizamos dentro de nuestro horario de trabajo.
Registro de actividades que no llegan con anterioridad, con urgencia y/o de orden directa.
En combinación con el plan de trabajo nos permite encontrar desfases anticipados de los proyectos ‘bandera’.
Autocritica.
OJO: No es fiscalización es auto administración.
![Page 11: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/11.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Menú
Control de Tiempo
Estimación
Navegación Comentarios
Selección de Tareas Terminar
Process DashboardProcess Dashboard
![Page 12: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/12.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Process DashboardProcess Dashboard
Agregar, eliminar y modificar actividades.
Crear el árbol de trabajo a fin de detallar proyectos y actividades especificas.
Estructura propuesta.
![Page 13: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/13.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Process DashboardProcess Dashboard
Ver a detalle el tiempo empleado en cada tema y/o agregar comentario a las interrupciones.
Filtro por fechas para ver que se hizo en la semana. Acceso a la tarjeta de tiempos (Time Card View).
![Page 14: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/14.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Process DashboardProcess Dashboard
Ver a detalle el tiempo empleado en cada tema y/o agregar comentario a las interrupciones.
Filtro por fechas para ver que se hizo en la semana. Acceso a la tarjeta de tiempos (Time Card View).
![Page 15: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/15.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Ver a detalle por día el tiempo empleado en cada tema. Análisis de la distribución del tiempo entre temas. Insumo para obtener la hoja de tiempos y esfuerzos.
Process DashboardProcess Dashboard
![Page 16: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/16.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Click sobre el icono para pausar/contabilizar Ctrl + ‘Click’ para cambiar de actividad (incluso sin pausar). ‘Click’ con el botón derecho para abrir el menú.
Abrir la ventana de administración de actividades. Abrir la ventana ‘Log de Tiempos’.
Process DashboardProcess Dashboard
Minimizado en el Systray
![Page 17: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/17.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Estandarización y Estandarización y Optimización del Optimización del Desarrollo DesktopDesarrollo Desktop
![Page 18: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/18.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
¿Que buscamos?¿Que buscamos?
Ejemplos
dw_1.retrieve(a)
for i=1 to dw_1.rowcount() ls_b = dw_1.getitemstring(i,1)
if Len(ls_b)<0 Then else dw_1.setitem(i,5,’S’) dw_1.accepttext() end ifNext
dw_1.retrieve(a)for i=1 to dw_1.rowcount()ls_b = dw_1.getitemstring(i,’nombre’)if Len(ls_b)<0 Thenelsedw_1.setitem(i,’activo’,’S’)dw_1.accepttext()end ifNext
dw_1.retrieve(a)for i=1 to dw_1.rowcount() ls_b = dw_1.getitemstring(i,’nombre’) if Len(ls_b)<0 Then else dw_1.setitem(i,’activo’,’S’) dw_1.accepttext() end ifNext
![Page 19: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/19.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
¿Que buscamos?¿Que buscamos?
Ejemplos
![Page 20: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/20.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
¿Como reaccionamos?¿Como reaccionamos?
![Page 21: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/21.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Objetivos del TallerObjetivos del Taller
Permear las buenas prácticas de codificación a todo el departamento estandarizando la visión con la cual se diseñan o desarrollan las aplicaciones.
Reforzar el conocimiento de los estándares de desarrollo así como el uso de las librerías estándar.
Proveer de herramientas tanto al programador como al líder del proyecto sobre que es lo que se tiene que revisar en un producto antes de ser entregado.
Optimizar el tiempo de desarrollo fomentando la reutilización de código, esquemas de encapsulamiento de funcionalidad y herencia.
Generar una base de conocimientos para referencia de quien lo requiera y que pueda servir también como curso de inducción al personal nuevo.
![Page 22: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/22.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Contenido del TallerContenido del Taller
Checklist Visual Lógico Mensajes
Estándares Básicos Visuales Máscaras y Formatos Reportes Nomenclatura de Variables
![Page 23: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/23.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Contenido del TallerContenido del Taller
Buenas Prácticas de Codificación Indentación del Código Indentación de Sentencias SQL embebido Ámbito de Variables Referencia de Objetos en Variables Pasar parámetros entre ventanas DS/DW Blobs Funciones Esquema de Objetos Triggers, Procedures and Functions (BD).
![Page 24: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/24.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Contenido del TallerContenido del Taller
Librerías y Estándares Ruta de Trabajo Nomenclatura Librerías de Objetos Estándar Objetos Estándar que agilizan el Desarrollo
Recopilación de Trucos y Tips Tips SQL Tips PB
![Page 25: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/25.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Contenido del Taller (Día 1)Contenido del Taller (Día 1)
ChecklistChecklist Visual Lógico Mensajes
Estándares Básicos Visuales Máscaras y Formatos Reportes Nomenclatura de Variables
![Page 26: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/26.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
ChecklistChecklist
Como Programador.
Tener un marco de referencia de que es lo se tiene que revisar por default al entregar un producto con la calidad esperada.
Como Líder de Proyecto.
Es el primer punto de referencia de la supervisión si el producto entregado no cumple cuando menos con este checklist debe regresarse.
![Page 27: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/27.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Checklist 1: VisualChecklist 1: Visual
Estándares de Color Estándares de Formato Alineación de Controles Uso de Scrollbars (Verticales y Horizontales) Ventanas en Cascada (Sheets) ¡Ortografía!
![Page 28: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/28.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Checklist 2: LógicosChecklist 2: Lógicos
Validar valores nulos Capturar los errores de Llave Primaria y Llave
Foránea. Validaciones sobre Fechas Inhabilitar opciones de menú Longitud de Captura.
![Page 29: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/29.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Checklist 3: MensajesChecklist 3: Mensajes
Aviso Vs. Error ¿Que es un Aviso? ¿Que es un Error?
Redacción del Mensaje ‘Información Grabada Exitosamente’ Mensajes cortos/largos. ¡Ortografía!
Iconos para Mensajes Mensajes con w_dgi_espere.
Lineamientos Acción en Gerundio + Proceso. Messagebox y Rollback
![Page 30: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/30.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Contenido del Taller (Día 1)Contenido del Taller (Día 1)
Checklist Visual Lógico Mensajes
Estándares BásicosEstándares Básicos Visuales Máscaras y Formatos Reportes Nomenclatura de Variables
![Page 31: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/31.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Estándares BásicosEstándares Básicos
VISUALES
Tipo de letra Tamaño Color
Ms Sans Serif 8 Negro
Smallfonts* 7 Negro
Tipo de Letra
* Solo se puede utilizar en reportes
![Page 32: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/32.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Estándares BásicosEstándares Básicos
VISUALES Alineación
Rubro Alineación Captura
Alineación Despliegue
Claves Numéricas (Clave de Catálogo, Folios, etc..)
Centrado Centrado
Números enteros que representan cantidades a sumar (No. de registros)
Derecha Derecha
Fechas Centrado Centrado
Cantidades Monetarias Derecha Derecha
Porcentaje Derecha Derecha
Títulos de Columnas en ventanas/dw N/A Centrado
Títulos de Columnas en Reportes N/A Centrado
Etiquetas en Free Forms N/A Derecha
Campos de Texto Izquierda Izquierda
![Page 33: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/33.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Estándares BásicosEstándares Básicos
VISUALES Colores Estándar.
DW Tabular y DW Grid, DW Crosstab (Captura, Consulta en Pantalla)
Rubro Color Relleno/Letra Borde
Background del Datawindow Blanco/NA NA
Título de Columnas Button Face/Negro Raised
Campos de Edición (Texto, Dropdowns, etc..) Blanco/Negro None
Campos de Selección (Radios, Checkbox, etc..) Trasparente/Negro None
DW FreeForm y todos los demás (Captura y Consulta en Pantalla)
Rubro Color Relleno/Letra Borde
Background del Datawindow Button Face/NA NA
Título de Columnas (Etiquetas de Campo) Trasparente/Negro None
Campos de Edición (Texto, Dropdowns, etc..) Blanco/Negro Lowered
Campos de Selección (Radios, Checkbox, etc..) Trasparente/Negro None
![Page 34: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/34.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Estándares BásicosEstándares Básicos
DW para Reportes
Rubro Color Relleno/Letra Borde
Background del Datawindow Button Face/NA NA
Título de Columnas (Etiquetas de Campo) Trasparente/Negro None
Campos de Edición (Texto, Dropdowns, etc..) Trasparente/Negro None
Campos de Selección (Radios, Checkbox, etc..) Trasparente/Negro None
Ventanas
Rubro Color Relleno/Letra Borde
Background Button Face/NA NA
Etiquetas Trasparente/Negro None
Objetos de Edición (Texto, Dropdowns, etc..) Blanco/Negro Lowered
Objetos de Selección (Radios, Checkbox, etc..) Trasparente/Negro None
Groupbox Trasparente/Negro Lowered
Objetos Lista (Listbox, Treeview, Lists) Blanco/Negro Lowered
Botones Button Face/Negro NA
DW Control para todos los demás tipos NA Lowered
DW Control para FreeForm NA None
Contenedor Objetos OLE NA NA
Tabs Button Face/Negro NA
![Page 35: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/35.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Estándares BásicosEstándares Básicos
Mascaras y FormatosRubro Captura Despliegue Impresión
Texto Normal ( excepto URL’s y direcciones de E-mail)
Mayúsculas Mayúsculas Mayúsculas
Números que representan claves o folios
‘###0’ ‘###0’ ‘###0’
Números enteros que representan cantidades a sumar
‘#,##0’ ‘#,##0’ ‘#,##0’
Números enteros negativos que representan cantidades a sumar
‘-#,##0’ ‘-#,##0’ ‘-#,##0’
Números que representan cantidades monetarias
‘$#,##0.00’ ‘$#,##0.00’ ‘$#,##0.00’
Números Negativos que representan cantidades monetarias
‘(#,##0.00)’ ‘[RED](#,##0.00)’ ‘[RED](#,##0.00)’
Números que representan porcentajes
‘##0.00%’ ‘##0.00%’ ‘##0.00%’
Números Negativos que representan porcentajes
‘(##0.00%)’ ‘[RED]##0.00%’ ‘[RED]##0.00%’
Fecha ‘dd/mm/yyyy’ ‘dd/mm/yyyy’ ‘dd/mm/yyyy’
Hora ‘HH24:mm:ss’ ‘HH24:mm:ss’ ‘HH24:mm:ss’
Fecha y Hora ‘dd/mm/yyyy HH24:mm:ss’
‘dd/mm/yyyy HH24:mm:ss’
‘dd/mm/yyyy HH24:mm:ss’
![Page 36: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/36.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Estándares BásicosEstándares Básicos
ReportesEncabezado
Cuerpo
Pie de Página
![Page 37: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/37.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Estándares BásicosEstándares Básicos
EncabezadoNombre de
la Secretaría
Nombre de la
Dirección
Título del Reporte
Nombre de la
Empresa
Nombre de la
Aplicación
Logotipo de la
Empresa
Crear un reporte que será nesteado en todos los demás reportes de la aplicación. Este reporte deberá de llamar d_rep_header o algo parecido de acuerdo al estándar para
identificarlo como un reporte de encabezado. Debe de Recibir como argumentos el Path de la imagen y el Titulo del Reporte.
![Page 38: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/38.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Estándares BásicosEstándares Básicos
Cuerpo del ReporteEncabezado
Los encabezados de las columnas deberán ir siempre en mayúsculas. Todos los catálogos al final llevaran un conteo de registros. En los reportes agrupados siempre deberá de tener cuando menos un conteo de registros por
cada grupo, si son cantidades también a menos que el usuario especifique lo contrario. El uso de negritas es exclusivo de columnas que sean división de agrupamientos o bien en
las columnas de totales por grupo y total final.
Detalle de Información
![Page 39: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/39.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Estándares BásicosEstándares Básicos
Pie de PaginaNombre del
DW
Paginación
Fecha y Hora de la Impresión
Nombre del DW siempre a la Izquierda, Fecha y Hora al Centro y Paginación a la derecha La fecha y hora de impresión debe de ser un SYSDATE que se encuentra como campo
dentro del query del reporte La paginación es un compute predefinido por PowerBuilder al que se le tiene que cambiar
el texto al español
![Page 40: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/40.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Estándares BásicosEstándares Básicos
Nomenclatura de Variables Sintaxis del Nombrado de Variables (Notación Húngara)
Ámbito + tipo_dato + ‘_’ + nombreVariable
El nombre de la variable después del guión bajo se utilizará en notación camello.
Ejemplo:
li_tipoContribuyente
Evitar el uso de variables genéricas para contador o acumulador.
![Page 41: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/41.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Estándares BásicosEstándares Básicos
Nomenclatura de Variables Ámbito de las variables
Contexto Prefijo Uso
Local l Se utilizan únicamente dentro del evento o método donde son creadas.
Instancia i Cuando es necesario que únicamente los componentes, métodos y eventos que pertenecen al mismo objeto utilicen el valor de la variable.
Global g Cuando sea necesario que el valor sea utilizado en cualquier componente de la aplicación.
Shared s Cuando es necesario que el valor se mantengan durante todas las instancias que tenga un objeto.
![Page 42: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/42.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Estándares BásicosEstándares Básicos
Nomenclatura de Variables Tipo de Variables
Tipo Prefijo
Long l
Blob bl
Char c
Real r
Unsigned Long ul
Unsigned Integer ui
Tipo Prefijo
Boolean b
Integer i
Decimal d
Double db
String s
Date dt
Datetime dtt
![Page 43: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/43.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Contenido del Taller (Día 2)Contenido del Taller (Día 2)
Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación Comentarios en el Código Indentación del Código Indentación de Sentencias SQL embebido Ámbito de Variables Referencia de Objetos en Variables Pasar parámetros entre ventanas DS/DW Blobs Funciones Esquema de Objetos Triggers, Procedures and Functions (BD).
![Page 44: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/44.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Comentarios en el Código Generalidades
El comentario al inicio de funciones o eventos de usuario deben de especificar para que se creo la función, que argumentos recibe y quien la creó.
Los comentarios deben de hacerse donde inicia un proceso dentro de la ventana o bien para explicar el porque le aplicación toma cierta decisión.
No exagerar en los comentarios.
Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación
![Page 45: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/45.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación//En base al proceso se elige el formatoChoose Case as_proceso Case 'E‘ //Se obtiene el formato de Respuesta
SELECT FORMATO_EMIS INTO :li_formato FROM DGI.TIPO_TRAMITE_CONFIG WHERE TIPO_TRAMITE = :ai_tipo_tramite AND FORMA_PRES =:ai_forma_pres USING at_trans; if at_trans.sqlcode <> 0 then RETURN -1 if isnull(li_formato) then li_formato = 0
Case "R“ //Se obtiene el formato de Respuesta
SELECT FORMATO_RESP INTO :li_formato FROM DGI.TIPO_TRAMITE_CONFIG WHERE TIPO_TRAMITE = :ai_tipo_tramite AND FORMA_PRES =:ai_forma_pres USING at_trans; if at_trans.sqlcode <> 0 then RETURN -1 if isnull(li_formato) then li_formato = 0 End Choose
//En base al proceso se elige el formatoChoose Case as_proceso //Verifico el proceso Case 'E‘ //Se obtenie el formato de Respuesta //Leer el formato de la BD SELECT FORMATO_EMIS INTO :li_formato FROM DGI.TIPO_TRAMITE_CONFIG WHERE TIPO_TRAMITE = :ai_tipo_tramite AND FORMA_PRES =:ai_forma_pres USING at_trans;
//Si el query me da error salir de la funcion if at_trans.sqlcode <> 0 then RETURN -1 //Si el formato es nulo asignar 0 if isnull(li_formato) then li_formato = 0
Case "R“ //Se obtiene el formato de Respuesta //Leer el formato de la BD SELECT FORMATO_RESP INTO :li_formato FROM DGI.TIPO_TRAMITE_CONFIG WHERE TIPO_TRAMITE = :ai_tipo_tramite AND FORMA_PRES =:ai_forma_pres USING at_trans; //Si el query me da error salir de la funcion if at_trans.sqlcode <> 0 then RETURN -1 //Si el formato es nulo asignar 0 if isnull(li_formato) then li_formato = 0 End Choose //Fin de la seleccion
![Page 46: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/46.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación/* Funcion: uof_obtener_formato *//* Descripcion: Se elije el tipo de formato en base *//* al tipo de tramite y forma de *//* presentar la garantía. *//* Argumentos: ai_tipo_tramite, ai_forma_pres */ /* Regresa: El valor del formato a utilizar *//* Creada por: Luis Francisco López */ Case 'E‘ //Se obtenie el formato de Respuesta
SELECT FORMATO_EMIS INTO :li_formato FROM DGI.TIPO_TRAMITE_CONFIG WHERE TIPO_TRAMITE = :ai_tipo_tramite AND FORMA_PRES =:ai_forma_pres USING at_trans; if at_trans.sqlcode <> 0 then RETURN -1 if isnull(li_formato) then li_formato = 0
Case "R“ //Se obtiene el formato de Respuesta
SELECT FORMATO_RESP INTO :li_formato FROM DGI.TIPO_TRAMITE_CONFIG WHERE TIPO_TRAMITE = :ai_tipo_tramite AND FORMA_PRES =:ai_forma_pres USING at_trans; if at_trans.sqlcode <> 0 then RETURN -1 if isnull(li_formato) then li_formato = 0 End Choose
![Page 47: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/47.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación
Indentación de Código Condiciones if
Condiciones 1 sola líneaIf condición then return value
Condiciones MultilíneaIf condición then
//Sentencias
Else/Elseif
//Sentencias Else/Elseif
End If
CiclosWhile condición/for valorInicial to valorFinal
//Sentencias del Ciclo
Loop/Next
![Page 48: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/48.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación
Indentación de Código Condiciones Case
CHOOSE CASE variable
CASE caso_1
//Sentencias Caso_1
CASE caso_n
//Sentencias Caso_n
Else
//Sentencias Else
END CHOOSE
![Page 49: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/49.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Indentación de Código Generalidades
Se vale separar grupos de código mediante líneas en blanco (no se las cobran), sin embargo se recomienda usar comentarios.
La cantidad de código por línea es de acuerdo al espacio de trabajo de cada quien sin embargo trate en lo posible de no tener que mover el scroll horizontal para ver la línea completa.
En el caso de concatenar u operaciones que ocupen mas de una línea trate de continuar el código donde inicia la asignación o donde inician los argumentos.
LS_VALOR = CADENA1 + CADENA2 + CADENA3 + CADENA4 +&
CADENA5 + CADENA6 + CADENA7… + CADENAn
li_result = UOF_ACTUALIZAR_IMPUESTO(variable1, variable2, variable3,&
variable5, variable 6)
Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación
![Page 50: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/50.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación
Indentación de Sentencias SQL Sentencias SELECT
SELECT Columna1, Columna2, Columna3,… Columnan
INTO :variable1,:variable2,:variable3,… variablen
FROM Tabla1 Alias1,
Tabla2 Alias2,
Tablan Aliasn
WHERE Condicion1
AND Condicion2
AND Condicion3
AND Condicion4
Sentencias UPDATEUPDATE Tabla1
SET Columna1 = :variable1,Columna 2 = :variable2,
Columna3 = :variable3,… Columnan = :variablen
WHERE Condicion1
AND Condicion2
AND Condicion3
AND Condicion4
![Page 51: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/51.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación
Indentación de Sentencias SQL Sentencias INSERT
INSERT INTO Tabla1 (Columna1, Columna2, Columna3,… Columnan
VALUES (:variable1,:variable2,:variable3,… variablen);
INSERT INTO Tabla1 (Columna1, Columna2, Columna3,… Columnan
SELECT Columna1, Columna2, Columna3,… Columnan
FROM Tabla1 Alias1,
Tabla2 Aliasn
WHERE Condicion1
AND Condicion2;
Sentencias DELETEDELETE FROM Tabla1
WHERE Condicion1
AND Condicion2
AND Condicion3
AND Condicion4
![Page 52: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/52.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Indentación de Sentencias SQL Generalidades
La cantidad de columnas que contendrá un select o un insert dependerá de su pantalla, trate de que no tenga que mover el scroll para ver las columnas o las variables
En el caso de las columnas de select o insert estas deben de coincidir en número por renglón con las variables, por ejemplo.
SELECT CAMPO1, CAMP02, CAMPO3
INTO :VAR1, :VAR2, :VAR3
FROM TABLE
WHERE CONDICION.
SELECT CAMPO1, CAMPO2, CAMPO3,
CAMPO4
INTO :VAR1, :VAR2, :VAR3, :VAR4
FROM TABLE
WHERE CONDICION
Las tablas deberán de ser listadas, es decir un renglón por cada tabla que se utilice.
Usar alias para las tablas.
BIE
NM
A L
Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación
![Page 53: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/53.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación
Ámbito de Variables Variables Locales
Se utilizan únicamente dentro del evento o método donde son creadas. Deben utilizarse para procesos que van a iniciar y terminar dentro del mismo
código.
Variables de Instancia Cuando es necesario que únicamente los componentes, métodos y eventos que
pertenecen al mismo objeto utilicen el valor de la variable. Deben utilizarse como propiedades de objetos, o como variables que deben ser
accedidas desde la misma ventana para lectura y/o escritura.
Variables Globales Cuando sea necesario que el valor sea utilizado en cualquier componente
de la aplicación. La única variable global permitida en el sistema es la instancia del objeto
u_dgifc_aplmanager (Aplican restricciones).
![Page 54: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/54.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación
Paso de Parámetros entre Ventanas Se debe utilizar para evitar el uso de variables globales, si se
requiere que dos ventanas se comuniquen entre si. Se pueden enviar valores o bien variables Se recibe en la ventana destino mediante el objeto Message
Para enviar tipos de datos no incluidos en el objeto Message debe de ser mediante una estructura.
Contexto Uso
Doubleparm Valor numérico desde entero hasta double
Stringparm Valor cadena
Powerobjectparm Objeto de PowerBuilder (Objeto, estructura, transacciones, etc.)
![Page 55: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/55.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación
Datastore Vs. Datawindow
Datastore Datawindow
Es no visual No contiene eventos No es autoinstanciable
Visual Contiene eventos Es autoinstanciable
Ninguno es mejor simplemente tienen diferentes usos. Objeto No Visual = Uso de datastores. Es mejor utilizar un datastore que hacer un cursor (en su defecto store
procedure) Si en la función o ventana no se requieren utilizar eventos de un listado
utilizar datastores Es mejor utilizar un datastore que ocultar un datawindow.
![Page 56: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/56.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación
Binary Large Objects (BLOB’s)
PowerBuilder Se utiliza para guardar una ilimitada cantidad de datos (Imágenes, Texto muy Largo, Texto de Procesadores de Texto con Formato, etc..)
BLOB no es sinónimo de imágenes escaneadas, ni de RTF’s
Se usa en intercambio de información en aplicaciones cliente/servidor.
![Page 57: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/57.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación
Binary Large Objects (BLOB’s) Utilizando Blob’s con Datawindows/Datastores
GetFullState/SetFullState. NO ES un Rowscopy/Rowsmove Se mantienen las propiedades del DW, banderas de actualización, etc.. No se mantiene la transacción pero al asignarse de nuevo funciona como tal.
Envío un DW/ Recibo DS y Viceversa. Se convierte el DW a Blob y se envía a un objeto No Visual El DS regresa a la ventana y se convierte en DW
![Page 58: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/58.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación
Uso de Funciones
Tipo de Función Descripción
Funciones de PowerBuilder
Son las funciones que se crean como objetos de PowerBuilder, son funciones que pueden ser llamadas desde cualquier otro objeto de la aplicación.
Funciones de Ventana
Son funciones que se crean en una ventana para agregar funcionalidad, solo son válidas dentro de la ventana que las contiene.
Funciones de Objetos
Son funciones creadas por el usuario en los objetos de PowerBuilder (ya sea visuales o no visuales). Si bien estas funciones solo son válidas dentro del objeto donde fueron creadas basta que se instancie el objeto para poderlas utilizar.
![Page 59: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/59.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación
Uso de Funciones
Tipo de Acceso Descripción
Publica (Public) Función que puede ser vista y accedida desde cualquier parte de la aplicación, simplemente requiere que el objeto se encuentre instanciado.
Privada (Private) Función que puede ser vista y accedida únicamente desde el objeto/ventana donde fue creada.
Protegida (Protected) Función que puede ser vista y accedida desde cualquier parte de la aplicación, sin embargo esta no puede ser modificada, ni heredada.
Uso de Funciones
Sobrecarga de funciones Funciones que se llaman igual pero reciben diferentes argumentos y hacen
cosas diferentes. Permiten al programador una referencia mas rápida.
![Page 60: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/60.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación
Uso de Funciones Argumentos en Funciones
Casi cualquier cosa se puede mandar por argumento a una función sin embargo.
Evite pasar ventanas como argumento. Evite pasar objetos visuales a un objeto no visual. Los objetos de powerbuilder (excepto estructuras) mejor por referencia.
Los tipos de acceso de los argumentos en funciones son.
Tipo de Acceso Descripción
Valor (Value) La variable entra a la función y aunque su valor sea alterado dentro de ella al salir mantiene el valor con el que fue enviado.
Referencia (Reference) La variable entra a la función y si su valor es alterado dentro de ella al salir muestra el valor que se cambio dentro.
Readonly (Solo lectura) La variable entra y sale de la función pero su valor no puede ser alterado (como una constante)
![Page 61: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/61.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación
Esquema de Objetos
Tipo de Objetos Descripción
Visual Son objetos que encapsulan la funcionalidad de un o un grupo de objetos visuales.
No Visual Son en realidad para agrupar métodos de un funcionalidad especifica.
![Page 62: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/62.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación
Esquema de Objetos
Usuario:• Teclea los datos en la
forma de captura• Pulsa el botón
procesar• Espera los resultados
Ventana:• Muestra la forma• Espera a que el
usuario dispare algún evento
• Envía el procesamiento al objeto visual forma
Objeto Visual Forma:• Valida que los datos
proporcionados por el usuario sean los esperados
• Instancia e Inicializa el Objeto No Visual que procesará la información.
• Ejecuta el método del Objeto No Visual que procesará la información
Objeto No Visual:• Procesa la información
enviada desde la ventana.
• Sus funciones publicas son una caja negra.
Base de Datos:• Mediante un trigger
guarda una bitácora del procesamiento de la información
![Page 63: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/63.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación
Esquema de Objetos
Ventajas Desventajas
Separa la funcionalidad de la parte visual
Divide y Vencerás Encapsulamiento Fácil de compartir funcionalidad
(es una caja negra) Reutilización de funcionalidad
en otras ventanas.
Forzosamente hay que pensar en Sinergia.
Si se exagera se puede llegar al extremo de separar funcionalidad ya existente en objetos de PB.
![Page 64: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/64.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación
Esquema de Objetos Generalidades
Todas las variables de instancia (se conocen como propiedades del objeto) deben de ser declaradas como privadas.
Todas las funciones son de acceso privado excepto aquellas que disparan la funcionalidad principal del objeto.
El objeto debe ser capaz de tomar todas las decisiones para saber que hacer en cada caso.
Las funciones deben ser lo mas atómicas posibles, es decir servir a un solo propósito.
La función principal (o principales) deberá de, en lo posible, evitar el uso de código extra, esta función debe dedicarse a llamar funciones privadas del objeto.
Un objeto no visual no debe hacer referencia a ningún objeto visual (no usar DW como variables, no mandar llamar la w_dgi_espere, no desplegar MessageBox, no hacer referencia a ventanas o menús). Ojo: Ni siquiera por argumento.
![Page 65: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/65.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación
Esquema de Objetos (Ejemplo SEAF)
uo_remesa
![Page 66: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/66.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación
Esquema de Objetos (Ejemplo Cajas)
uo_cajas
![Page 67: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/67.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación
Esquema de Objetos (Ejemplo Inversión)
uo_mvto_fondo
![Page 68: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/68.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación
Triggers, Procedures y Functions (BD)
Tipo de Acceso Descripción
Triggers Son los equivalentes de los eventos pero en base de datos, el usuario puede programar cuando quiere que se disparen ya que se pueden ejecutar en cualquiera de las tres operaciones básicas sobre una tabla, INSERT, UPDATE, DELETE.
Procedures Son grupos de código que ejecutan una serie de instrucciones sin regresar ningún valor (si acaso pueden regresar en la variable de transacción de PowerBuilder si se ejecuto o no)
Functions Son grupos de código que ejecutan una serie de instrucciones pero estos si pueden regresar un resultado.
![Page 69: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/69.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación
Triggers, Procedures y Functions (BD) Cuando utilizar Procedimientos o Funciones
NOTA INICIAL: Primero hay que buscar que cualquier procedimiento de negocio quede en la programación no en la BD.
Procesos de llenado de históricos. Traspaso de información masiva entre base de datos. Cálculos complejos y lentos que no puedan ser parametrizados. Cálculos complejos y lentos que solo se ocupen para reportes y no para
la aplicación. Procesos de Base de Datos (Creación de Tablas Dinámicas, Creación de
Sinónimos, Creación de Usuarios, etc.).
![Page 70: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/70.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación
Triggers, Procedures y Functions (BD) Cuando utilizar Triggers
Procesos simples de Bitácora (Logs) Manejar el agrupamiento de status sin el involucramiento del usuario. Disparar procesos de tablas PIVOTE.
![Page 71: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/71.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Contenido del Taller (Día 3)Contenido del Taller (Día 3)
Librerías y EstándaresLibrerías y Estándares Ruta de Trabajo Nomenclatura Librerías de Objetos Estándar Objetos Estándar que agilizan el Desarrollo
Recopilación de Trucos y Tips Tips SQL Tips PB
![Page 72: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/72.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Librerías y EstándaresLibrerías y Estándares
Ruta de Trabajo
SIELCSIELC
ADMON PROYADMON PROY
ANALISISANALISIS
DISEÑODISEÑO
AUXIAUXI
LIBLIB
EXEEXE
SOPORTE DOCUMENTAL
SOPORTE DOCUMENTAL
REUNIONESREUNIONES
PLAN DE TRABAJOPLAN DE TRABAJO
DESCRIPCIÓN TÉCNICA
DESCRIPCIÓN TÉCNICA
DIAGRAMASDIAGRAMAS
BDBD
PB804-10575PB804-10575
PB105-6627PB105-6627
IMÁGENESIMÁGENES
COMPONENTESCOMPONENTES
![Page 73: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/73.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Librerías y EstándaresLibrerías y Estándares
Ruta de TrabajoCarpeta Uso
PROYECTO Esta carpeta deberá de nombrarse con las siglas que se le hayan asignado al proyecto, como máximo deberá de ser hasta 6 caracteres que identifiquen el proyecto.
ADMON PROY Esta carpeta tendrá toda la información referente a la administración del proyecto
SOPORTE DOCUMENTAL
Toda aquella documentación que de soporte al proyecto como por ejemplo ley del trabajo, tabuladores, por citar algunos.
REUNIONES Contendrá documentos como minutas, orden del día, listas de asistencia y todas aquellos documentos que soporten las reuniones que sean llevadas a cabo para el proyecto, para el nombrado de estos documentos ver documento (nombre documento).
PLAN DE TRABAJO Todos y cada uno de los planes de trabajo elaborados para el Proyecto (ver lo del nombrado de los planes).
ANALISIS Contendrá toda la documentación referente al Análisis del proyecto, de acuerdo a la metodología vigente.
DISEÑO Contendrá toda la documentación referente al Diseño del proyecto de acuerdo a la metodología vigente.
DESCRIPCIÓN TÉCNICA Deberán ser los documentos que soporten la Documentación Técnica del proyecto
![Page 74: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/74.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Librerías y EstándaresLibrerías y Estándares
Ruta de Trabajo
Carpeta Uso
DIAGRAMAS Contiene todos los diagramas que durante el diseño del proyecto se realicen y soporten al mismo.
BD Contiene el modelo de Base de Datos del proyecto y todos aquellos documentos que soporten al mismo y que tengan que ver con Base de Datos.
LIB Esta carpeta contendrá todas aquellas librerías que soporten al proyecto , dentro de ella se deberán de crear sub carpetas por cada versión y parche del lenguaje de programación que se esté utilizando en ese momento
AUXI Esta carpeta contendrá todo lo referente a los bmps, jpgs y demás auxiliares que sean necesarios para el buen funcionamiento de la aplicación.
IMÁGENES En esta carpeta se guardaran todas aquellas imágenes que sean necesarias para el buen funcionamiento de la aplicación.
COMPONENTES En esta carpeta se guardaran todas aquellas utilerías que sean necesarias para el buen funcionamiento del sistema, como por ejemplo .ocx, TextControl, entre otros
EXE Esta carpeta contendrá las librerías que conforman el ejecutable de la aplicación y que representa un respaldo del programador, aquí se deberá de tener la última versión del proyecto que se encuentre en el servidor de aplicaciones.
![Page 75: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/75.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Librerías y EstándaresLibrerías y Estándares
Nomenclatura Librerías Librería Principal
Siglas del Proyecto en Mayúsculas. Máximo 6 caracteres Ejemplo: SIECL.pbl
Librerías Subsecuentes
Siglas del Proyecto (Solo inicial en Mayúsculas) Siglas del Modulo (Máximo 4 caracteres) Consecutivo de Librería de 2 dígitos Ejemplo: Sieclemis01.pbl
![Page 76: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/76.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Librerías y EstándaresLibrerías y Estándares
Nomenclatura Librerías Librerías Especiales
Son librerías para un uso especifico dentro de la aplicación y son las siguientes.
Librería Uso
Acceso.pbl Esta librería se creara exclusivamente para contener objetos que hagan referencia a los objetos para configurar el acceso a la aplicación. Ejemplo: Catalogo de Usuarios, Catalogo de Configuración de Roles de Acceso, etc.
Catalogos.pbl Esta librería se creará para contener exclusivamente los objetos que hagan referencia a los catálogos principales de la aplicación.
Reportes.pbl Esta librería se creara para contener exclusivamente los objetos que hagan referencia al modulo de reportes estadísticos de la aplicación.
Consultas.pbl Esta librería se creara para contener exclusivamente los objetos que hagan referencia a las consultas especificas y estadísticas de la aplicación.
![Page 77: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/77.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Librerías y EstándaresLibrerías y Estándares
Nomenclatura Librerías
SIELCSIELC
AccesoAcceso
CatálogosCatálogos
ReportesReportes
ConsultasConsultas
Sielcemis01
Sielcemis01
![Page 78: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/78.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Librerías y EstándaresLibrerías y Estándares
Nomenclatura Objetos Sintaxis
PrefijoObjeto + SiglasLibreria + ConsecLibreria + Prefijo Uso + Nombre Objeto
Prefijo Objeto
Tipo de Objeto Prefijo (Máx. 3 dígitos)
Windows w_
Menús m_
Querys q_
Data windows d_
DataWindowContenedor de Externos
dc_
Objetos No Visuales uo_
Objetos Visuales vuo_
Tipo de Objeto Prefijo (Máx. 3 dígitos)
DataWindow External de_
DataWindow Multiselección dm_
Project p_
Pipeline pp_
Funciones f_
Structure str_
![Page 79: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/79.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Librerías y EstándaresLibrerías y Estándares
Nomenclatura Objetos Siglas Librería y Consec Librería
Se refiere al nombre de la librería en donde se esta guardando el objeto. Utilizar el nombre de la librería sin las iniciales del proyecto. Ejemplo: Sielcemis01 emis01
Prefijo Uso
Uso del Objeto Prefijo (Max. 2 dígitos)
Reporte r
Catálogo c
Consulta k
Proceso p
Listado l
Contenedor de Listado cl
![Page 80: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/80.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Librerías y EstándaresLibrerías y Estándares
Nomenclatura Objetos Nombre Objeto
Descripción breve del objeto que permita identificar de que se trata o que
hace el objeto. Ejemplos
Nombre del Objeto Descripción
w_cat01c_tipo_licencia Es un objeto ‘Window’ que se encuentra en la librería ‘Catalogos.pbl’ y que se refiere al ‘Tipo de Licencia’
d_emis01l_estado Es un objeto de tipo ‘Datawindow’ que se encuentra en la librería ‘Sielcemis01.pbl’ que se utiliza como un listado de estados (para dropdown).
w_emis01k_recibos_pagados Es un objeto de tipo ‘Window’ que se encuentra en la librería ‘Sielcemis01.pbl’ y que se utiliza para una consulta de recibos pagados.
d_emis01r_prevista_volante Es un objeto de tipo ‘Datawindow’ que se encuentra en la librería ‘Sielcemis01.pbl’ y que se utiliza para imprimir un volante.
de_emis01cl_estado Es un objeto de tipo ‘Datawindow’ sin query que se encuentra en la librería ‘Sielcemis01.pbl’ que se utiliza para contener un Datawindow de listado.
![Page 81: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/81.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Librerías y EstándaresLibrerías y Estándares
Librerías de Objetos Estándar Básicas
Nombre del Objeto Descripción
estandar.pbl Template de la aplicación, esta librería debe renombrarse con las siglas de la aplicación, esta librería tiene ya los objetos estándar para control de acceso.
dgiapi.pbd Contiene las funciones api de windows importadas como objetos de PowerBuilder, muy útil sobre todo en el control de actualizaciones.
dgibd.pbd Contiene las rutinas para comparar esquemas de base de datos
dgifund.pbd Contiene las clases fundamentales de las cuales están heredadas las demás ventanas del propio estándar.
dginvis.pbd Contiene funciones definidas y objetos no visuales con funcionalidad común en las aplicaciones que puede ser reutilizada
dgitxt.pbd Contiene toda la funcionalidad para implementar la creación de documentos dinámicos utilizando DW como base.
dgiutil.pbd Contiene algunos objetos visuales y no visuales que agregan funcionalidad y facilitan la programación.
dgiutilbd.pbd Contiene funcionalidad para algunos procesos de base de datos que se requieren dentro de las aplicaciones.
dgivis.pbd Contiene objetos visuales de las cuales se puede heredar los procesos mas comunes en una aplicación.
![Page 82: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/82.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Librerías y EstándaresLibrerías y Estándares
Librerías de Objetos Estándar Envío de Correos
Nombre del Objeto Descripción
dgimail.pbd Contiene todos los objetos para implementar el proceso de envío de correos a través de cualquier servidor smtp.
DemoniosNombre del Objeto Descripción
dgidemon.pbd Contiene todos los objetos para implementar aplicaciones tipo demonio que corren en memoria esperando una hora o un evento para dispararse.
Interpretación de Mensajes del SistemaNombre del Objeto Descripción
dgiserv.pbd Contiene todos los objetos para implementar una ayuda para el usuario basada en el sistema de servicios.
![Page 83: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/83.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Objeto(s): w_util_catalogo_listadoLibrería: dgiutil.pblPara que se utiliza :Catálogos donde se requiere que el usuario capture en freeform (por la cantidad de datos) pero se requiere una referencia de listado.
Librerías y EstándaresLibrerías y Estándares
Objetos Estándar que agilizan el Desarrollo
Objeto(s): w_dgi_catalogo_estaticoLibrería: dgivis.pblPara que se utiliza:Catálogos de tipo tabular del tipo clave/descripción.
Catálogos Catálogos
![Page 84: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/84.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Librerías y EstándaresLibrerías y Estándares
Objetos Estándar que agilizan el Desarrollo
Objeto(s): w_dgi_maestro_detalleLibrería: dgivis.pblPara que se utiliza :Catálogos cuya información requiera ser capturada como Maestro/Detalle.
Objeto(s): w_dgi_catalogo_sin_dwLibrería: dgivis.pblPara que se utiliza :Catálogos complejos, por ejemplo catálogos con filtros en cascada (no maestro detalle)
Catálogos Catálogos
![Page 85: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/85.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Librerías y EstándaresLibrerías y Estándares
Objetos Estándar que agilizan el Desarrollo
Objeto(s): uo_doc_visual, uo_param, w_rep_reporte.Librería: dgiutil.pbdPara que se utiliza :Cualquier llamado a reportes o consultas que se haga en la aplicación.
Objeto(s): w_argumentsLibrería: dgiutil.pbdPara que se utiliza :Ventana de Argumentos para reportes estadísticos
Reportes Argumentos de Reportes
![Page 86: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/86.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Librerías y EstándaresLibrerías y Estándares
Objetos Estándar que agilizan el Desarrollo
Otros Objetos
![Page 87: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/87.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Contenido del Taller (Día 3)Contenido del Taller (Día 3)
Librerías y Estándares Ruta de Trabajo Nomenclatura Librerías de Objetos Estándar Objetos Estándar que agilizan el Desarrollo
Recopilación de Trucos y TipsRecopilación de Trucos y Tips Uso de la Ayuda de PB Tips PB Tips SQL
![Page 88: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/88.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Tip’s PowerBuilderTip’s PowerBuilder Regresar el valor anterior a un campo cuando no pasa una
validación en el Itemchanged.
Crear un evento que reciba de argumento la fila, la columna y el valor que se le quiere poner a la columna, este evento lo que hace es hacer setitem con el valor a la fila y a la columna que se le envían como parámetro.
En el evento itemchanged codificar que una ves que el dato no pase la validación que se espera, mande llamar en forma post al evento creado en el paso anterior y hacer return.
En el Itemchanged
la_rfc_ant = this.getitemstring(row,dwo.column)
If Len(Trim(Data)) < 10 and this.getitemstring(row,’tipo_contrib’) = ‘F’ Then
MessageBox(“Aviso”,”El rfc para una persona física debe de contener 10 caracteres”)
This.post event ue_corrige_dato(row,dwo.column,la_rfc_ant)
Return 1
End If
![Page 89: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/89.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Tip’s PowerBuilderTip’s PowerBuilder Regresar el valor anterior a un campo cuando no pasa una
validación en el Itemchanged.
En el ue_corrige_dato
this.SetItem(ai_ren, as_columna, aa_dato)
this.SetColumn(as_columna)
![Page 90: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/90.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Tip’s PowerBuilderTip’s PowerBuilder
Páginas de Tip’s de PowerBuilder
http://www.rgagnon.com/howto.html
http://www.softtreetech.com/hightech/tips.htm
http://www.pbdr.com/pbtips/index.htm
http://www.dvl-software.com/pbtips/
http://power-builder.blogspot.com/
![Page 91: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/91.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Tip’s SQL y OracleTip’s SQL y Oracle
Un poco de Teoría Existen dos tipos de acceso de la Base de Datos a una tabla:
SIN USAR INDICES Table Access Full (FULL SCAN). USANDO INDICES Table Access by ROWID (ROWID ACCESS).
De la misma forma, existen 2 tipos de barrido a un índice: INDICE UNICO Unique (único). INDICE NO UNICO Range (por rangos).
![Page 92: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/92.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Tip’s SQL y OracleTip’s SQL y Oracle
Orden de tablas en el FROMEl orden de las tablas en el FROM debe ser de arriba hacia debajo de mayor a menor número de registros, la primer tabla siempre es el PIVOTE o la que inicia la ejecución del query.
Solo las columnas NecesariasEn cualquier Query solo deben extraerse las columnas a utilizar, especialmente en un subquery, ya que a mayor número de columnas mayor memoria se consume y se pueden omitir barridos a tablas que no era necesarias.
Orden del JOIN y columnas (Teoría no expresada en libro Oracle)Se debe armar la serie de Joins en el mismo orden en que están las tablas en el FROM, empezando en el WHERE de derecha a izquierda, respetando el orden de los campos dentro de los índices y tratando de emplear el mayor número de columnas con UNIQUE INDEXES. Al final se agregan las condiciones con constantes.
![Page 93: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/93.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Tip’s SQL y OracleTip’s SQL y Oracle
SubquerySolo hay que emplearlo cuando sea necesario, muchas veces con un JOIN o un EXISTS se puede extraer la información necesaria.
Decode vs. UnionSe puede omitir el uso de múltiples Uniones en algunos queries con el uso de DECODE, condicionando los valores de las columnas según los valores de las columnas o expresiones.
IN vs. EXISTS vs. JOINEl IN como vimos anteriormente, realiza varias búsquedas para extraer la información, es mas rápido emplear un EXIST y aún mas un JOIN.
![Page 94: DESARROLLO POLITICO](https://reader036.vdocuments.net/reader036/viewer/2022062708/558a806dd8b42ae6638b47be/html5/thumbnails/94.jpg)
DIRECCIÓN GENERAL DE INFORMÁTICA
Tip’s SQL y OracleTip’s SQL y Oracle
Páginas de Tip’s de SQL
http://www.devjoker.com/
Páginas de Errores de Oracle
http://www.ora-code.com/
http://www.orasite.com/errores/