Admin.UpdateTimeSheetSettings-Methode
Aktualisiert die Einstellungen der Arbeitszeittabelle.
Namespace: WebSvcAdmin
Assembly: ProjectServerServices (in ProjectServerServices.dll)
Syntax
'Declaration
<SoapDocumentMethodAttribute("https://schemas.microsoft.com/office/project/server/webservices/Admin/UpdateTimeSheetSettings", RequestNamespace := "https://schemas.microsoft.com/office/project/server/webservices/Admin/", _
ResponseNamespace := "https://schemas.microsoft.com/office/project/server/webservices/Admin/", _
Use := SoapBindingUse.Literal, ParameterStyle := SoapParameterStyle.Wrapped)> _
Public Sub UpdateTimeSheetSettings ( _
dsDelta As TimeSheetSettingsDataSet _
)
'Usage
Dim instance As Admin
Dim dsDelta As TimeSheetSettingsDataSet
instance.UpdateTimeSheetSettings(dsDelta)
[SoapDocumentMethodAttribute("https://schemas.microsoft.com/office/project/server/webservices/Admin/UpdateTimeSheetSettings", RequestNamespace = "https://schemas.microsoft.com/office/project/server/webservices/Admin/",
ResponseNamespace = "https://schemas.microsoft.com/office/project/server/webservices/Admin/",
Use = SoapBindingUse.Literal, ParameterStyle = SoapParameterStyle.Wrapped)]
public void UpdateTimeSheetSettings(
TimeSheetSettingsDataSet dsDelta
)
Parameter
dsDelta
Typ: WebSvcAdmin.TimeSheetSettingsDataSetNeue Arbeitszeittabellen-Einstellungen enthält.
Hinweise
Arbeitszeittabellen-Einstellungen können auf der Seite Einstellungen und Standardwerte in der Project Web App (http:///ServerName/ProjectServerName/_layouts/pwa/Admin/TSSettings.aspx) festgelegt werden.
Zeile mit Komponenteneigenschaften in die TimeSheetSettingsDataSet.TimeSheetSettings[0] haben Einschränkungen. Sie darf nicht null sein. Verwenden Sie die ReadTimeSheetSettings -Methode zum Abrufen der aktuellen Einstellungen, und nehmen Sie Änderungen vor.
Project Server-Berechtigungen
Berechtigung |
Beschreibung |
---|---|
Ermöglicht es dem Benutzer Arbeitszeittabellen verwalten, die von Ressourcen übermittelt werden. Die globale Berechtigung. |
Beispiele
Im folgende Beispiel liest die aktuellen Einstellungen für die Arbeitszeittabelle, ändert die Werte der WADMIN_TS_MAX_HR_PER_TS und WADMIN_TS_MIN_HR_PER_TS in der TimeSheetSettingsDataSetund klicken Sie dann die UpdateTimeSheetSettings -Methode verwendet, um die maximale Anzahl der Stunden und minimale Stunden pro Arbeitszeittabelle ändern. Im Beispiel wird den SvcAdmin -Namespace in der Assembly für ProjectServerServices.dll Proxy verwendet. Das Beispiel schreibt auch die Updates, die in der neuen TimeSheetSettingsDataSet in eine XML-Datei sind.
Hinweis
The ConfigClientEndpoints method uses an app.config file for setting the WCF binding, behavior, and endpoint. For information about creating a PSI proxy assembly and an app.config file, see Prerequisites for WCF-Based Code Samples.
using System;
using System.Text;
using System.ServiceModel;
using System.Xml;
using PSLibrary = Microsoft.Office.Project.Server.Library;
namespace Microsoft.SDK.Project.Samples.UpdateTimeSheetSettings
{
class Program
{
private const string ENDPOINT = "basicHttp_Admin";
private const string OUTPUT_FILES = @"C:\Project\Samples\Output\";
private static SvcAdmin.AdminClient adminClient;
private static string outFilePath;
static void Main(string[] args)
{
outFilePath = OUTPUT_FILES + "TimesheetSettings.xml";
ConfigClientEndpoints(ENDPOINT);
Console.WriteLine("Retrieving the timesheet settings...");
SvcAdmin.TimeSheetSettingsDataSet timesheetSettingsDS =
new SvcAdmin.TimeSheetSettingsDataSet();
// Get the current timesheet settings, and then make changes to
// two settings: maximum and minimum hours per timesheet.
try
{
timesheetSettingsDS = adminClient.ReadTimeSheetSettings();
// Changes the timesheet settings to be 50 hours per week maximum
// and 15 hours per week minimum.
timesheetSettingsDS.TimeSheetSettings[0].WADMIN_TS_MAX_HR_PER_TS = 3000000;
timesheetSettingsDS.TimeSheetSettings[0].WADMIN_TS_MIN_HR_PER_TS = 900000;
// Write the changed dataset to an output file, for debugging purposes.
timesheetSettingsDS.WriteXml(outFilePath);
// Update the timesheet settings with the changes.
adminClient.UpdateTimeSheetSettings(timesheetSettingsDS);
}
catch (FaultException fault)
{
// Use the WCF FaultException, because the ASMX SoapException does not
// exist in a WCF-based application.
WriteFaultOutput(fault);
Console.Write("\nThe attempt to update the timesheet settings has failed.");
}
Console.WriteLine("\nSee XML output of the updated TimeSheetSettingsDataSet at:\n\t{0}",
outFilePath);
Console.Write("\nPress any key to exit... ");
Console.ReadKey(true);
}
// Extract a PSClientError object from the WCF FaultException object, and
// then display the exception details and each error in the PSClientError stack.
private static void WriteFaultOutput(FaultException fault)
{
string errAttributeName;
string errAttribute;
string errOut;
string errMess = "".PadRight(30, '=') + "\r\n"
+ "Error details: " + "\r\n";
PSLibrary.PSClientError error = Helpers.GetPSClientError(fault, out errOut);
errMess += errOut;
PSLibrary.PSErrorInfo[] errors = error.GetAllErrors();
PSLibrary.PSErrorInfo thisError;
for (int i = 0; i < errors.Length; i++)
{
thisError = errors[i];
errMess += "\r\n".PadRight(30, '=') + "\r\nPSClientError output:\r\n";
errMess += thisError.ErrId.ToString() + "\n";
for (int j = 0; j < thisError.ErrorAttributes.Length; j++)
{
errAttributeName = thisError.ErrorAttributeNames()[j];
errAttribute = thisError.ErrorAttributes[j];
errMess += "\r\n\t" + errAttributeName
+ ": " + errAttribute;
}
}
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine(errMess);
Console.ResetColor();
}
// Use the endpoints that are defined in app.config to configure the client.
public static void ConfigClientEndpoints(string endpt)
{
adminClient = new SvcAdmin.AdminClient(endpt);
}
}
// Helper method: GetPSClientError.
class Helpers
{
/// <summary>
/// Extract a PSClientError object from the ServiceModel.FaultException,
/// for use in output of the GetPSClientError stack of errors.
/// </summary>
/// <param name="e"></param>
/// <param name="errOut">Shows that FaultException has more information
/// about the errors than PSClientError has. FaultException can also contain
/// other types of errors, such as failure to connect to the server.</param>
/// <returns>PSClientError object, for enumerating errors.</returns>
public static PSLibrary.PSClientError GetPSClientError(FaultException e,
out string errOut)
{
const string PREFIX = "GetPSClientError() returns null: ";
errOut = string.Empty;
PSLibrary.PSClientError psClientError = null;
if (e == null)
{
errOut = PREFIX + "Null parameter (FaultException e) passed in.";
psClientError = null;
}
else
{
// Get a ServiceModel.MessageFault object.
var messageFault = e.CreateMessageFault();
if (messageFault.HasDetail)
{
using (var xmlReader = messageFault.GetReaderAtDetailContents())
{
var xml = new XmlDocument();
xml.Load(xmlReader);
var serverExecutionFault = xml["ServerExecutionFault"];
if (serverExecutionFault != null)
{
var exceptionDetails = serverExecutionFault["ExceptionDetails"];
if (exceptionDetails != null)
{
try
{
errOut = exceptionDetails.InnerXml + "\r\n";
psClientError =
new PSLibrary.PSClientError(exceptionDetails.InnerXml);
}
catch (InvalidOperationException ex)
{
errOut = PREFIX + "Unable to convert fault exception info ";
errOut += "a valid Project Server error message. Message: \n\t";
errOut += ex.Message;
psClientError = null;
}
}
else
{
errOut = PREFIX + "The FaultException e is a ServerExecutionFault, "
+ "but does not have ExceptionDetails.";
}
}
else
{
errOut = PREFIX + "The FaultException e is not a ServerExecutionFault.";
}
}
}
else // No detail in the MessageFault.
{
errOut = PREFIX + "The FaultException e does not have any detail.";
}
}
errOut += "\r\n" + e.ToString() + "\r\n";
return psClientError;
}
}
}
Es folgt ein Beispiel für die UpdateTimesheetSettings.xml-Datei, die die Anwendung speichert. Das Element WADMIN_TS_MIN_HR_PER_TS und das WADMIN_TS_MAX_HR_PER_TS -Element werden aktualisiert.
<?xml version="1.0" standalone="yes"?>
<TimeSheetSettingsDataSet xmlns="https://schemas.microsoft.com/office/project/server/webservices/TimeSheetSettingsDataSet/">
<TimeSheetSettings>
<WADMIN_UIDFAKE>446855fe-d085-4ba0-8006-9fce73e9c9fb</WADMIN_UIDFAKE>
<WADMIN_TS_IS_UNVERS_TASK_ALLOWED>true</WADMIN_TS_IS_UNVERS_TASK_ALLOWED>
<WADMIN_TS_PROJECT_MANAGER_COORDINATION>true</WADMIN_TS_PROJECT_MANAGER_COORDINATION>
<WADMIN_TS_PROJECT_MANAGER_APPROVAL>false</WADMIN_TS_PROJECT_MANAGER_APPROVAL>
<WADMIN_TS_IS_AUDIT_ENABLED>true</WADMIN_TS_IS_AUDIT_ENABLED>
<WADMIN_TS_IS_FUTURE_REP_ALLOWED>true</WADMIN_TS_IS_FUTURE_REP_ALLOWED>
<WADMIN_TS_FIXED_APPROVAL_ROUTING>false</WADMIN_TS_FIXED_APPROVAL_ROUTING>
<WADMIN_TS_TIED_MODE>true</WADMIN_TS_TIED_MODE>
<WADMIN_TS_MIN_HR_PER_TS>900000</WADMIN_TS_MIN_HR_PER_TS><WADMIN_TS_MAX_HR_PER_TS>3000000</WADMIN_TS_MAX_HR_PER_TS>
<WADMIN_TS_MAX_HR_PER_DAY>600000.000000</WADMIN_TS_MAX_HR_PER_DAY>
<WADMIN_TS_HOURS_PER_DAY>480000.000000</WADMIN_TS_HOURS_PER_DAY>
<WADMIN_TS_HOURS_PER_WEEK>2400000.000000</WADMIN_TS_HOURS_PER_WEEK>
<WADMIN_TS_DEF_DISPLAY_ENUM>7</WADMIN_TS_DEF_DISPLAY_ENUM>
<WADMIN_TS_CREATE_MODE_ENUM>1</WADMIN_TS_CREATE_MODE_ENUM>
<WADMIN_TS_REPORT_UNIT_ENUM>0</WADMIN_TS_REPORT_UNIT_ENUM>
<WADMIN_TS_DEF_ENTRY_MODE_ENUM>0</WADMIN_TS_DEF_ENTRY_MODE_ENUM>
<WADMIN_DEFAULT_TRACKING_METHOD>1</WADMIN_DEFAULT_TRACKING_METHOD>
<WADMIN_IS_TRACKING_METHOD_LOCKED>true</WADMIN_IS_TRACKING_METHOD_LOCKED>
<WADMIN_TS_ALLOW_PROJECT_LEVEL>true</WADMIN_TS_ALLOW_PROJECT_LEVEL>
</TimeSheetSettings>
</TimeSheetSettingsDataSet>