public static Boolean corregirIntegridad()
        {
            try
            {
                BOUsuariosPermisos bo = new BOUsuariosPermisos();
                DataSet ds = bo.GetByN("Consistencia", "");
                int y, j;

                if (ds.Tables[0].Rows.Count == 0)
                    return true; // la tabla de usuarios está vacía.

                Int32 nVerificacion = 0;
                Int32 nSuma = 0;
                string sCadena = "";
                j = 0;
                foreach (DataRow dr in ds.Tables[0].Rows)
                {
                    nVerificacion = 0;
                    sCadena = "";
                    for (int i = 0; i <= ds.Tables[0].Columns.Count - 2; i++)
                    {   // Armo un string largo con todos los campos de la tabla.
                        if (typeof(DateTime) == dr[i].GetType())
                        {
                            sCadena = String.Concat(sCadena, Convert.ToDateTime(dr[i]).Ticks);
                        }
                        else
                        {
                            sCadena = String.Concat(sCadena, Convert.ToString(dr[i]));
                        }
                    }

                    for (int i2 = 0; i2 <= sCadena.Length - 1; i2++)
                    {   // Obtengo el valor en int de cada caracter del string largo
                        char sPos = Convert.ToChar(sCadena.Substring(i2, 1));
                        nVerificacion = nVerificacion + Convert.ToInt32(sPos);
                    }
                    bo.UpdateBy("Verificacion", dr[0], nVerificacion);
                    y = Convert.ToInt32(ds.Tables[0].Rows[j]["Verificacion"]);
                    nSuma = nSuma + nVerificacion;
                    j = j + 1;
                } // Fin Recorro todas las filas de la tabla

                Int32 nIntVertical = BRDVVertical.consistenciaVertical("TransArte_Usuarios_Permisos");
                if (!nIntVertical.Equals(nSuma))
                {
                    BRDVVertical.actualizarUsuarios_Permisos("TransArte_Usuarios_Permisos");
                    BRBitacora.registrarEvento("Rev. Consist. Vertical Tabla TransArte_Usuarios_Permisos:OK!", BeanException.Critico);
                }
                BRBitacora.registrarEvento("Rev. Consist. Horizontal Tabla TransArte_Usuarios_Permisos:OK!", BeanException.Critico);
                return true;
            }
            catch (Exception ex)
            {
                throw;
            }
        }
        private static void actualizarDVH(int id, double nValor)
        {
            BOUsuariosPermisos bo = new BOUsuariosPermisos();
            try
            {
                bo.UpdateBy("Verificacion", id, nValor);
            }
            catch (Exception ex)
            {

                throw;
            }
        }
        public static void modificarBloqueo(int idUsuarioPermiso, bool bloqueado)
        {
            try
            {

                BOUsuariosPermisos bo = new BOUsuariosPermisos();
                bo.UpdateBy("Bloqueo", idUsuarioPermiso, (bloqueado?1:0) );
                Int32 nVerificacion = calcularDVH(idUsuarioPermiso);
                actualizarDVH(idUsuarioPermiso, nVerificacion);
                BRDVVertical.actualizarUsuarios_Permisos("TransArte_Usuarios_Permisos");
                BRBitacora.registrarEvento("Se ha dado modificado el bloquedo de idUsuarioPermiso = " + idUsuarioPermiso + " bloqueado = " + bloqueado, BeanException.Critico);

            }
            catch (Exception ex)
            {
                throw;
            }
        }