del método TimeSheet.ReadTimesheetList
Lee un parte de horas de resumen para el recurso especificado dentro del intervalo de fechas especificado.
Espacio de nombres: WebSvcTimeSheet
Ensamblado: ProjectServerServices (en ProjectServerServices.dll)
Sintaxis
'Declaración
<SoapDocumentMethodAttribute("https://schemas.microsoft.com/office/project/server/webservices/TimeSheet/ReadTimesheetList", RequestNamespace := "https://schemas.microsoft.com/office/project/server/webservices/TimeSheet/", _
ResponseNamespace := "https://schemas.microsoft.com/office/project/server/webservices/TimeSheet/", _
Use := SoapBindingUse.Literal, ParameterStyle := SoapParameterStyle.Wrapped)> _
Public Function ReadTimesheetList ( _
resUID As Guid, _
startDate As DateTime, _
finishDate As DateTime, _
select As Integer _
) As TimesheetListDataSet
'Uso
Dim instance As TimeSheet
Dim resUID As Guid
Dim startDate As DateTime
Dim finishDate As DateTime
Dim select As Integer
Dim returnValue As TimesheetListDataSet
returnValue = instance.ReadTimesheetList(resUID, _
startDate, finishDate, select)
[SoapDocumentMethodAttribute("https://schemas.microsoft.com/office/project/server/webservices/TimeSheet/ReadTimesheetList", RequestNamespace = "https://schemas.microsoft.com/office/project/server/webservices/TimeSheet/",
ResponseNamespace = "https://schemas.microsoft.com/office/project/server/webservices/TimeSheet/",
Use = SoapBindingUse.Literal, ParameterStyle = SoapParameterStyle.Wrapped)]
public TimesheetListDataSet ReadTimesheetList(
Guid resUID,
DateTime startDate,
DateTime finishDate,
int select
)
Parámetros
resUID
Tipo: System.GuidEl GUID de recurso.
startDate
Tipo: System.DateTimeLa fecha del parte de horas más antigua para devolver.
finishDate
Tipo: System.DateTimeLa fecha del parte de horas más reciente para devolver.
select
Tipo: System.Int32Filtro de estado de parte de horas; Use TimesheetEnum.ListSelect.
Valor devuelto
Tipo: WebSvcTimeSheet.TimesheetListDataSet
DataSet con una lista de resumen de partes de horas que cumplen los parámetros.
Comentarios
Use un valor de Microsoft.Office.Project.Server.Library.TimesheetEnum.ListSelect para el parámetro select . Puede combinar los valores de ListSelect con la operación de OR para filtrar por una combinación de propiedades. Por ejemplo, para seleccionar todos los partes de horas que el usuario ha creado que están en curso, establezca el parámetro select a CreatedByMeORInProgress.
Para devolver un registro vacío además de los partes de horas para un período donde no hay ningún parte de horas, establezca select en TimeSheetEnum.ListSelect.AllPeriods.
ReadTimesheetList omite resUID si el valor de select es simplemente CreatedByMe. Para obtener una lista de partes de horas de otra persona que se hayan creado por el usuario, es decir, partes de horas para la que está el suplente: pasar el GUID de recurso del otro usuario en resUID y un valor para select que es una operación de OR entre CreatedByMe y InProgress, Submitted, Acceptable, Approved, Rejectedo AllExisting.
Fechas válidas en Project Server son el 1 de enero de 1984 al 31 de diciembre de 2049.
Este método utiliza el objeto QueueSystem . La propiedad CorrelationGUID para el trabajo es igual que el valor de la propiedad TS_UID .
Permisos de Project Server
Permiso |
Descripción |
---|---|
No estándar |
El usuario actual es el propietario del parte de horas o el valor de select es CreatedByMe. |
Permite a un usuario ver partes de horas para un recurso. Se aplica sólo si el usuario actual no es el propietario del parte de horas. Permiso global. |
Ejemplos
El ejemplo de código siguiente lee todos los partes de horas en las fechas especificadas que se crean por el usuario y que están en curso. En el ejemplo se usa la clase TimeSheetUtils y la classe ExceptionHandlers para separar la funcionalidad de la clase Program . El método TimeSheetUtils.GetMyTimeSheetsInProgress usa el método GetCurrentUserUid en el servicio web de recursos para devolver el GUID del usuario.
For information about compiling the sample, see Prerequisites for Reference Code Samples.
using System;
using System.Net;
using System.Web.Services.Protocols;
using PSLibrary = Microsoft.Office.Project.Server.Library;
namespace Microsoft.SDK.Project.Samples.TestTimesheet
{
class Program
{
private static TimeSheetWebSvc.TimeSheet timesheet =
new TimeSheetWebSvc.TimeSheet();
private static ResourceWebSvc.Resource resource =
new ResourceWebSvc.Resource();
private static TimeSheetUtils timeSheetUtils = new TimeSheetUtils();
private static ExceptionHandlers exceptionHandlers = new ExceptionHandlers();
[STAThread]
static void Main()
{
try
{
const string PROJECT_SERVER_URI = "http:// ServerName/ProjectServerName/";
const string RESOURCE_SERVICE_PATH = "_vti_bin/psi/resource.asmx";
const string TIMESHEET_SERVICE_PATH = "_vti_bin/psi/timesheet.asmx";
// Set up the web service objects.
resource.Url = PROJECT_SERVER_URI + RESOURCE_SERVICE_PATH;
resource.Credentials = CredentialCache.DefaultCredentials;
timesheet.Url = PROJECT_SERVER_URI + TIMESHEET_SERVICE_PATH;
timesheet.Credentials = CredentialCache.DefaultCredentials;
// Get timesheet information for the specified dates.
DateTime startDate = new DateTime(2006, 11, 27);
DateTime finishDate = new DateTime(2006, 12, 1);
Guid resUid;
TimeSheetWebSvc.TimesheetListDataSet dsTimeSheetList =
timeSheetUtils.GetMyTimeSheetsInProgress(
timesheet, resource, startDate, finishDate, out resUid);
Console.WriteLine("Active timesheets for resource: " + resUid.ToString());
Console.WriteLine(string.Format("\tStart date: {0}\r\n\tFinish date: {1}",
startDate.ToString(), finishDate.ToString()));
for (int i = 0; i < dsTimeSheetList.Timesheets.Count; i++)
{
Console.WriteLine(dsTimeSheetList.Timesheets[i].TS_UID.ToString(),
dsTimeSheetList.Timesheets[i].TS_NAME);
}
}
catch (SoapException ex)
{ exceptionHandlers.HandleSoapException(ex); }
catch (WebException ex)
{ exceptionHandlers.HandleWebException(ex); }
catch (Exception ex)
{ exceptionHandlers.HandleException(ex); }
finally
{ exceptionHandlers.ResetConsole(); }
}
}
class TimeSheetUtils
{
public TimeSheetUtils()
{
}
// Get a list of timesheets that were created by the user and that are in progress.
public TimeSheetWebSvc.TimesheetListDataSet GetMyTimeSheetsInProgress(
TimeSheetWebSvc.TimeSheet timesheet,
ResourceWebSvc.Resource resource,
DateTime startDate,
DateTime finishDate,
out Guid resUid)
{
int select = Convert.ToInt32(
PSLibrary.TimesheetEnum.ListSelect.CreatedByMe
| PSLibrary.TimesheetEnum.ListSelect.InProgress);
resUid = resource.GetCurrentUserUid();
return timesheet.ReadTimesheetList(resUid, startDate, finishDate, select);
}
}
class ExceptionHandlers
{
public ExceptionHandlers()
{
}
public void HandleSoapException(SoapException ex)
{
PSLibrary.PSClientError error = new PSLibrary.PSClientError(ex);
PSLibrary.PSErrorInfo[] errors = error.GetAllErrors();
string errMess = "==============================\r\nError: \r\n";
for (int i = 0; i < errors.Length; i++)
{
errMess += "\n" + ex.Message.ToString() + "\r\n";
errMess += "".PadRight(30, '=') + "\r\nPSCLientError Output:\r\n \r\n";
errMess += errors[i].ErrId.ToString() + "\n";
for (int j = 0; j < errors[i].ErrorAttributes.Length; j++)
{
errMess += "\r\n\t" + errors[i].ErrorAttributeNames()[j] + ": "
+ errors[i].ErrorAttributes[j];
}
errMess += "\r\n".PadRight(30, '=');
}
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine(errMess);
}
public void HandleWebException(WebException ex)
{
string errMess = ex.Message.ToString() +
"\n\nLog on, or check the Project Server Queuing Service";
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Error: " + errMess);
}
public void HandleException(Exception ex)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Error: " + ex.Message);
}
public void ResetConsole()
{
Console.ResetColor();
Console.WriteLine("\r\n\r\nPress any key...");
Console.ReadKey();
}
}
}