CustomFields.ReadCustomFieldsByMdPropUids-Methode
Ruft die benutzerdefinierte Felddefinitionen für die angegebene benutzerdefinierte Feld eindeutigen Bezeichner ab.
Namespace: WebSvcCustomFields
Assembly: ProjectServerServices (in ProjectServerServices.dll)
Syntax
'Declaration
<SoapDocumentMethodAttribute("https://schemas.microsoft.com/office/project/server/webservices/CustomFields/ReadCustomFieldsByMdPropUids", RequestNamespace := "https://schemas.microsoft.com/office/project/server/webservices/CustomFields/", _
ResponseNamespace := "https://schemas.microsoft.com/office/project/server/webservices/CustomFields/", _
Use := SoapBindingUse.Literal, ParameterStyle := SoapParameterStyle.Wrapped)> _
Public Function ReadCustomFieldsByMdPropUids ( _
md_prop_uids As Guid(), _
autoCheckOut As Boolean _
) As CustomFieldDataSet
'Usage
Dim instance As CustomFields
Dim md_prop_uids As Guid()
Dim autoCheckOut As Boolean
Dim returnValue As CustomFieldDataSet
returnValue = instance.ReadCustomFieldsByMdPropUids(md_prop_uids, _
autoCheckOut)
[SoapDocumentMethodAttribute("https://schemas.microsoft.com/office/project/server/webservices/CustomFields/ReadCustomFieldsByMdPropUids", RequestNamespace = "https://schemas.microsoft.com/office/project/server/webservices/CustomFields/",
ResponseNamespace = "https://schemas.microsoft.com/office/project/server/webservices/CustomFields/",
Use = SoapBindingUse.Literal, ParameterStyle = SoapParameterStyle.Wrapped)]
public CustomFieldDataSet ReadCustomFieldsByMdPropUids(
Guid[] md_prop_uids,
bool autoCheckOut
)
Parameter
md_prop_uids
Typ: []Ein Array von benutzerdefinierten Felds GUIDs
autoCheckOut
Typ: System.BooleanWenn true, den benutzerdefinierten Feldern für Änderung Auschecken.
Rückgabewert
Typ: WebSvcCustomFields.CustomFieldDataSet
Hinweise
Tipp
Die ReadCustomFieldsByMdPropUids -Methode wird dem Gebietsschema des Computers mit Project Server ignoriert. Die ReadCustomFieldsByMdPropUids2([], Boolean) -Methode gibt eine CustomFieldDataSet mit Gebietsschema abhängiger Werte für Formeln, die benutzerdefinierte Felder und grafische Indikatoren zu berechnen.
Project Server-Berechtigungen
Berechtigung |
Beschreibung |
---|---|
Ermöglicht einem Benutzer von Project Professional aus eine Verbindung mit Project Server-Datenbank. Die globale Berechtigung. |
|
Ermöglicht einem Benutzer das Ändern der Definitionen von benutzerdefinierten Enterprise-Felder und Nachschlagetabellen, Werte. Die globale Berechtigung. |
|
Ermöglicht einem Benutzer das Verwalten von Project Server-Benutzer und Gruppen. Die globale Berechtigung. |
|
Ermöglicht einem Benutzer das Erstellen eines Projekts. Die globale Berechtigung. |
|
Ermöglicht einen Benutzer das Anzeigen von ressourcenzuordnungsdaten. Die globale Berechtigung. |
|
Ermöglicht einem Benutzer das Anzeigen des Ressourcenplans. Die globale Berechtigung. |
|
Ermöglicht einem Benutzer das Erstellen oder Bearbeiten von Priorisierungen für Project Portfolioanalysen. Die globale Berechtigung. |
|
Ermöglicht einen Benutzer das Erstellen von Portfolioanalysen. Die globale Berechtigung. |
|
Ermöglicht einem Benutzer das Verwalten von Einstellungen für die Erstellung von OLAP-Cubes. Die globale Berechtigung. |
Beispiele
Im folgenden Beispiel wird ReadCustomFieldsByMdPropUids und ReadCustomFieldsByMdPropUids2 zum Lesen von eines benutzerdefinierten Felds verwendet, und schreibt den Inhalt customFieldDSCustomFieldDataSet.xml und CustomFieldDataSet2.xml, jeweils. Mit Ausnahme von MD_PROP_FORMULAzurückgeben die beiden Methoden dieselben Daten.
For more information, including a procedure that shows how to use Project Web App and Project Professional 2010 with the same formula, see Using Formulas and Graphical Indicators with Custom Fields.
Das Formelfeld MD_PROP_FORMULA , die von ReadCustomFieldsByMdPropUids zurückgegeben wird, hängt das Gebietsschema (die Sprache des Servers und der Project-Installation). Nachfolgend sehen Sie das Formelfeld MD_PROP_FORMULA , die von ReadCustomFieldsByMdPropUidszurückgegeben wird.
<MD_PROP_FORMULA>Switch(Not ([MSPJ188743724] >= #01/01/1984# And [MSPJ188743724] < #01/01/2050#),
"No Baseline", ([MSPJ188743685] + 1) / ([MSPJ188743686] + 1) > 1.2, "Overbudget by 20% or more",
([MSPJ188743685] + 1) / ([MSPJ188743686] + 1) > 1, "Overbudget", True, "Under budget")</MD_PROP_FORMULA>
Das Formelfeld MD_PROP_FORMULA , die von ReadCustomFieldsByMdPropUids2 zurückgegeben wird, (wie im folgenden Code dargestellt) wird unabhängig vom Gebietsschema. Es funktioniert die gleiche Weise wie bei anderen Sprachinstallationen. Aus diesem Grund ist die ReadCustomFieldsByMdPropUids2 -Methode der ReadCustomFieldsByMdPropUids -Methode.
<MD_PROP_FORMULA><MD_PROP_FORMULA>Switch(Not ([Baseline Estimated Finish] >= #1/1/1984# And [Baseline Estimated Finish] < #1/1/2050#),
"No Baseline", ([Cost] + 1) / ([Baseline Cost] + 1) > 1.2, "Overbudget by 20% or more",
([Cost] + 1) / ([Baseline Cost] + 1) > 1, "Overbudget", True, "Under budget")</MD_PROP_FORMULA>
Darüber hinaus im Beispiel wird die Formel geändert und ruft die UpdateCustomFields2 -Methode, um das benutzerdefinierte Feld aktualisieren und das aktualisierte Dataset in UpdatedCustomFieldData.xml schreibt
Es ruft die CheckInCustomFields So checken Sie das benutzerdefinierte Feld nach der Änderung und ruft die CheckOutCustomFields , um den benutzerdefinierten Feldern auszuchecken, bevor Sie geändert werden.
The example uses the SvcCustomFields namespace in the ProjectServerServices.dll proxy assembly. The ConfigClientEndpoints method and the SetClientEndpoints method use 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.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.ServiceModel;
namespace Microsoft.SDK.Project.Samples.TestCustomFields
{
class CustomFields
{
private static SvcCustomFields.CustomFieldsClient customFieldClient;
private static SvcResource.ResourceClient resourceClient;
private const string RES_ENDPOINT = "basicHttp_Resource";
private const string CUST_ENDPOINT = "basicHttp_CustomFields";
private const string OUTPUT_FILES = @"C:\Projects\Samples\Output\";
private static string outFilePathCustomFields;
private static string outFilePathCustomFields2;
private static string outFilePathCustomFields3;
static void Main(string[] args)
{
try
{
Guid[] customFieldID = new Guid[1];
customFieldID[0] = new Guid("4bfa524a-ce48-4a31-a2d6-5e8baa6c9d29");
ConfigClientEndpoints(CUST_ENDPOINT);
SetClientEndpoints(RES_ENDPOINT);
// If directory does not exist, create it.
if (!Directory.Exists(OUTPUT_FILES))
{
Directory.CreateDirectory(OUTPUT_FILES);
}
// Assign the path where the output XML file will be saved.
outFilePathCustomFields = OUTPUT_FILES + "CustomFieldData.xml";
outFilePathCustomFields2 = OUTPUT_FILES + "CustomFieldData2.xml";
outFilePathCustomFields3 = OUTPUT_FILES + "UpdatedCustomFieldData.xml";
// Create a custom fields dataset.
SvcCustomFields.CustomFieldDataSet customFieldDS =
new SvcCustomFields.CustomFieldDataSet();
// Read the custom fields data by using ReadCustomFieldsByMdPropUids.
customFieldDS = customFieldClient.ReadCustomFieldsByMdPropUids(
new Guid[] { customFieldID[0] }, false);
// Write the dataset to an XML file
customFieldDS.WriteXml(outFilePathCustomFields);
Console.WriteLine("\nSee XML output of the CustomFieldDataSet at {0}",
outFilePathCustomFields);
// Read the custom fields data by using ReadCustomFieldsByMdPropUids2.
customFieldDS = customFieldClient.ReadCustomFieldsByMdPropUids2(
new Guid[] { customFieldID[0] }, false);
// Write the dataset to an XML file.
customFieldDS.WriteXml(outFilePathCustomFields2);
bool checkedOut = false;
// Get the ID of the user.
Guid me = resourceClient.GetCurrentUserUid();
// Check whether the custom field to be updated is checked out.
foreach (SvcCustomFields.CustomFieldDataSet.CustomFieldsRow custRow in customFieldDS.CustomFields)
{
if (custRow.MD_PROP_UID.ToString() == customFieldID[0].ToString())
{
if (custRow.IsNull("MD_PROP_CHECKOUTBY")) // If the custom field is not checked out.
{
// Check out the custom field.
customFieldClient.CheckOutCustomFields(new Guid[] { custRow.MD_PROP_UID });
checkedOut = true;
Console.WriteLine("Custom field checked out.....");
break;
}
else
{
// Check whether the custom field is checked out by you.
if (custRow.MD_PROP_CHECKOUTBY == me)
{
checkedOut = true;
Console.WriteLine("The custom field is already checked out by you");
break;
}
else
{
// The custom field is checked out by some other user.
checkedOut = false;
Console.WriteLine("This custom field has already been checked out");
Console.ReadLine();
break;
}
}
}
}
if (checkedOut)
{
// Modify the formula field of the custom field.
// Type the following statement in a single line.
customFieldDS.CustomFields[0].MD_PROP_FORMULA =
"Switch(Not ([Baseline Estimated Finish] >= #1/1/1984# And [Baseline Estimated Finish] < #1/1/2050#),
\"No Baseline\", ([Cost] + 1) / ([Baseline Cost] + 1) > 1.5, \"Overbudget by 50% or more\",
([Cost] + 1) / ([Baseline Cost] + 1) > 1, \"Overbudget\", True, \"Under budget\")";
// Update the dataset.
customFieldClient.UpdateCustomFields2(customFieldDS, false, false);
customFieldDS.WriteXml(outFilePathCustomFields3);
// Write the custom field data to an XML file.
Console.WriteLine("\nSee XML output of the CustomFieldDataSet at {0}",
outFilePathCustomFields3);
// Check in the custom field.
customFieldClient.CheckInCustomFields(new Guid[] { customFieldID[0] }, false);
}
}
catch (CommunicationException e)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("\n***System.ServiceModel.CommunicationException:");
Console.WriteLine(e.ToString());
Console.ResetColor();
}
finally
{
Console.Write("\r\n\r\nPress any key....");
Console.ReadKey();
}
}
// Configure the custom field client endpoints.
public static void ConfigClientEndpoints(string endpt)
{
customFieldClient = new SvcCustomFields.CustomFieldsClient(endpt);
}
// Configure the resource client endpoints.
public static void SetClientEndpoints(string ept)
{
resourceClient = new SvcResource.ResourceClient(ept);
}
}
}
Das aktualisierte Dataset, mit der geänderten Formelfeld MD_PROP_FORMULAwird in UpdatedCustomFieldData.xml geschrieben und in den folgenden Code dargestellt ist.
<?xml version="1.0" standalone="yes"?>
<CustomFieldDataSet xmlns="https://schemas.microsoft.com/office/project/server/webservices/CustomFieldDataSet/">
<CustomFields>
<MD_PROP_UID>4bfa524a-ce48-4a31-a2d6-5e8baa6c9d29</MD_PROP_UID>
<MD_PROP_ID>188776464</MD_PROP_ID>
<MD_PROP_UID_SECONDARY>64546b89-9a2a-49d8-b3ce-190119a3c562</MD_PROP_UID_SECONDARY> <MD_PROP_ID_SECONDARY>255885317</MD_PROP_ID_SECONDARY>
<MD_ENT_TYPE_UID>ebad93e7-2149-410d-9a39-a8680738329d</MD_ENT_TYPE_UID>
<MD_PROP_NAME>Budget Indicator</MD_PROP_NAME>
<MD_PROP_IS_WORKFLOW_CONTROLLED>false</MD_PROP_IS_WORKFLOW_CONTROLLED>
<MD_PROP_IS_REQUIRED>false</MD_PROP_IS_REQUIRED>
<MD_AGGREGATION_TYPE_ENUM>9</MD_AGGREGATION_TYPE_ENUM>
<MD_PROP_TYPE_ENUM>21</MD_PROP_TYPE_ENUM>
<MD_PROP_IS_MULTILINE_TEXT>false</MD_PROP_IS_MULTILINE_TEXT>
<MD_PROP_DESCRIPTION>Test for graphical indicator example in SDK</MD_PROP_DESCRIPTION>
<MD_PROP_MAX_VALUES>1</MD_PROP_MAX_VALUES>
<MD_PROP_FORMULA>Switch(Not ([Baseline Estimated Finish] >= #1/1/1984# And [Baseline Estimated Finish] < #1/1/2050#),
"No Baseline", ([Cost] + 1) / ([Baseline Cost] + 1) > 1.5, "Overbudget by 50% or more",
([Cost] + 1) / ([Baseline Cost] + 1) > 1, "Overbudget", True, "Under budget")</MD_PROP_FORMULA>
<MD_PROP_GRAPHICAL_INDICATOR>[[==No baseline][5]][[==Overbudget by 50% or more][3]]
[[==Overbudget][2]][[==Under budget][1]]</MD_PROP_GRAPHICAL_INDICATOR>
<MD_PROP_SUMM_GRAPHICAL_INDICATOR>[[==No baseline][5]][[==Overbudget by 50% or more][3]]
[[==Overbudget][2]][[==Under budget][1]]</MD_PROP_SUMM_GRAPHICAL_INDICATOR>
<MD_PROP_PROJ_SUMM_GRAPHICAL_INDICATOR>[[==No baseline][5]][[==Overbudget by 50% or more][3]]
[[==Overbudget][2]][[==Under budget][1]]</MD_PROP_PROJ_SUMM_GRAPHICAL_INDICATOR>
<MD_PROP_GRAPHICAL_INDICATOR_TOOLTIP>false</MD_PROP_GRAPHICAL_INDICATOR_TOOLTIP>
<MD_PROP_ROLLDOWN_TO_ASSN>false</MD_PROP_ROLLDOWN_TO_ASSN>
<MD_PROP_COPY_ON_REASSIGNMENT>false</MD_PROP_COPY_ON_REASSIGNMENT>
<MD_PROP_CHECKOUTDATE>2010-02-08T10:57:21.21-08:00</MD_PROP_CHECKOUTDATE>
<MOD_DATE>2010-02-08T11:12:40.78-08:00</MOD_DATE>
</CustomFields>
</CustomFieldDataSet>