private string ObtenerPE(string sNumPE)
    {
        StringBuilder sb = new StringBuilder();

        try
        {
            //Obtengo los datos del proyecto
            PROYECTO        oProy   = PROYECTO.Obtener(tr, int.Parse(sNumPE));
            PROYECTOSUBNODO oPSNCON = PROYECTOSUBNODO.ObtenerContratante(null, int.Parse(sNumPE));

            return("OK@#@" +
                   Utilidades.escape(oProy.t301_denominacion) + "##" +
                   oProy.t301_estado + "##" + oProy.t301_categoria + "##" + oProy.t320_idtipologiaproy.ToString() + "##" + oProy.t323_idnaturaleza.ToString() +
                   "##" + Utilidades.escape(oProy.t323_denominacion) + "##" + oProy.t306_idcontrato.ToString() + "##" + Utilidades.escape(oProy.t377_denominacion) +
                   "##" + oPSNCON.t303_idnodo.ToString() + "##" + Utilidades.escape(oProy.t302_denominacion) + "##" + oProy.t302_idcliente_proyecto.ToString() +
                   "##" + (oProy.t323_coste?"1":"0"));
        }
        catch (Exception ex)
        {
            if (ex.Message == "No se ha obtenido ningun dato de PROYECTO")
            {
                return("OK@#@");
            }
            //return "error@#@Proyecto no encontrado.";
            else
            {
                return("error@#@Error al obtener el Proyecto Económico./n " + ex.Message);
            }
        }
    }