private string EliminarProyectos(string slIDProy)
    {
        string sResul = "", sEstado, sMens = "", sBorrados = "";
        int    IdProy, IdPSN;
        bool   bBorrable = true;

        #region apertura de conexión y transacción
        try
        {
            oConn = Conexion.Abrir();
            tr    = Conexion.AbrirTransaccionSerializable(oConn);
        }
        catch (Exception ex)
        {
            sResul = "Error@#@" + Errores.mostrarError("Error al abrir la conexión", ex);
            return(sResul);
        }
        #endregion
        try
        {
            string[] lstProy = Regex.Split(slIDProy, "##");
            for (int i = 0; i < lstProy.Length; i++)
            {
                string[] oProy = Regex.Split(lstProy[i].ToString(), ",");
                if (oProy[0].ToString() != "")
                {
                    IdPSN     = int.Parse(oProy[0].ToString());
                    IdProy    = int.Parse(oProy[1].ToString());
                    sEstado   = oProy[2].ToString();
                    bBorrable = true;
                    #region Comprobaciones
                    if (sEstado == "A")
                    {
                        //Compruebo que no haya meses cerrados
                        if (SEGMESPROYECTOSUBNODO.HayMesesCerradosPosteriores(tr, IdPSN, 0))
                        {
                            bBorrable = false;
                            sMens    += "El proyecto " + IdProy.ToString("#,###") + " no se puede borrar pues tiene meses cerrados.\n";
                        }
                        if (bBorrable)
                        {
                            //Compruebo que no tenga réplicas
                            SqlDataReader dr = PROYECTOSUBNODO.ObtenerReplicasDeProyecto(tr, IdPSN);
                            if (dr.Read())
                            {
                                bBorrable = false;
                                sMens    += "El proyecto " + IdProy.ToString("#,###") + " no se puede borrar pues tiene proyectos replicados.\n";
                            }
                            dr.Close();
                            dr.Dispose();
                        }
                        if (bBorrable)
                        {
                            //Compruebo que no tenga imputaciones
                            if (PROYECTOSUBNODO.TieneConsumos(tr, IdPSN))
                            {
                                bBorrable = false;
                                sMens    += "El proyecto " + IdProy.ToString("#,###") + " no se puede borrar pues tiene imputaciones de IAP.\n";
                            }
                        }
                        if (bBorrable)
                        {
                            //Compruebo que no tenga ANOTACIONES EN gasvi
                            if (PROYECTOSUBNODO.TieneApuntesGasvi(tr, IdPSN))
                            {
                                bBorrable = false;
                                sMens    += "El proyecto " + IdProy.ToString("#,###") + " no se puede borrar pues tiene anotaciones en GASVI.\n";
                            }
                        }
                    }
                    #endregion
                    if (bBorrable)
                    {
                        PROYECTO.Delete(tr, IdProy);
                        sBorrados += IdProy.ToString() + "#";
                        //Si estamos borrando el último proyecto al que hemos accedido lo elimino de las vbles de sesión
                        if (IdPSN.ToString() == Session["ID_PROYECTOSUBNODO"].ToString())
                        {
                            Session["ID_PROYECTOSUBNODO"]          = "";
                            Session["MODOLECTURA_PROYECTOSUBNODO"] = false;
                            Session["RTPT_PROYECTOSUBNODO"]        = false;
                            Session["MONEDA_PROYECTOSUBNODO"]      = "";
                            break;
                        }
                    }
                }
            }
            Conexion.CommitTransaccion(tr);
            //sResul = "OK@#@" + sBorrados + "@#@" + sMens;
            sResul = "OK@#@" + sMens;
        }
        catch (Exception ex)
        {
            Conexion.CerrarTransaccion(tr);
            sResul = "Error@#@" + Errores.mostrarError("Error al borrar los proyectos indicados.", ex);
        }
        finally
        {
            Conexion.Cerrar(oConn);
        }
        return(sResul);
    }