Arkivat e Kategorisë: SharePoint

Si të troubleshoot gabime misterioze SharePoint.

Përmbledhje:

Debugging is difficult when developing custom functionality for Windows SharePoint Services 3.0 (WSS) or Microsoft Office SharePoint Server (Moss). The main culprit is that SharePoint normally surfaces very little diagnostic information on the web browser when an error occurs. This blog entry describes how to locate additional system-generated diagnostic information that can often provide that extra bit of detail that one needs in order to identify root causes. This can then lead to solving the problem.

I have used this technique with great success to solve otherwise mysterious errors.

Approach:

SharePoint saves a great deal of information to a diagnostic log in a log file in the 12 zgjua.

The "12 hive" is usually located at "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12". (Unë nuk jam i sigurt nëse kjo është e mundur për 12 hive të jetojnë diku tjetër, në të vërtetë).

Ideja është për të gjetur skedarin aktual log, force the error and then quickly open the log file. These log files are characterized by:

  • Copious amounts of information. SharePoint generates a very large amount of diagnostic information and writes it to that log file very quickly. You need to be quick with the fingers to capture it.
  • Multiplicity. SharePoint does not write to a single log file but rather generates multiple log files in sequence.
  • Copy dhe paste bukur në MS Excel.

Metoda ime e preferuar:

  1. Hap një Windows Explorer duke treguar për 12 hive logs.
  2. Lloj pamje për të treguar nga data e modifikuar (most recent first).
  3. Highlight the most current log file.
  4. In a web browser window, force the error to occur.
  5. Quickly open the current log file and copy its contents to MS Excel.
  6. Jump to the end and analyze the relevant entries.

Other Notes:

By default, the diagnostic log is located in the 12 hive\LOGS directory.

MS Best practices (as per Mike T. of Microsoft) state that the log files should be saved to a separate hard drive. One does this via central admin. Your system administrator may have done this, in which case you’d obviously need to find the log file there instead of the default 12 hive location).

This entry addresses issues such as:

  • SharePoint workflow failed to start due to an internal error.
  • (more to be added over time)
  • This entry has been helpful diagnosing workflow errors (e.g. "The workflow failed to start due to an internal error").

Moss: Prezantimi efektiv në një organizatë

(ky kryq hyrje postuar në mes të http://paulgalvin.spaces.live.com/blog/ dhe http://blogs.conchango.com)

Të Komente në këtë faqe janë të mi dhe nuk përfaqësojnë domosdoshmërisht qëndrimet e Conchango, strategjitë apo opinionet.

Përmbledhje:

Kjo hyrje përshkruan disa informata mbi një pjesë të madhe (3,000 Përdoruesit) Microsoft Office SharePoint Server (Moss) rollout and what we did to get the project rolling in such a way that the client is happy and firmly down a path that ends with full adoption of the MOSS feature set. As of the writing of the entry, ne jemi përafërsisht 50% complete with the first phase of the project. As things progress, Unë do update këtë hyrje dhe / ose të shkruajnë shënimet e reja.

Në këtë rast të veçantë, the company had already installed SharePoint Portal Server 2003. The IT group installed the product in a sort of "let’s see if anyone cares" fashion. It was quickly adopted by many business users and became quite popular in the enterprise at large. Siç mund ta imagjinoni, kjo nuk ishte strategjia më e mirë rollout (të cilat klienti pranon të gatshme) MOSS dhe kur mbërritën në vendngjarje, the client resolved to "do it right" dhe na punësohen për t'i ndihmuar ata.

Një nga pyetjet me të cilat përballet qendrore ne kur kemi filluar implementimin e këtij projekti ishte: Si nuk kemi futur Moss për këtë klient? Given that the client already had experience with SharePoint, ne wondered — do we need to do "differential" trajnim ose nuk kemi të fillojë nga toka lart? After working with key users, we determined that treating this as a green field project made more sense.

That decision gave a starting point but still left us with the major requirement of figuring out a good strategy for rolling MOSS out to the enterprise. MOSS is such a big animal … it includes content management, menaxhimin dokument, kërkoni, siguri, Publiku i synimeve të dhënësit, Projekti i menaxhimit të, "fabulous forty" templates, workflow, Biznesi dhënat lidhës, etj. Couple this with the fact that it’s a large organization that mund me të vërtetë e bëjnë përdorimin e pothuajse çdo tipar i madh myshk dhe ju keni fitim të një projekti të madh me një të arritur të ndërmarrjeve dhe shumë gjëra të mira ndodh.

Ne jemi ballafaquar me këtë çështje kohë dhe prapë kohë … Moss ka arritur një ndërmarrje me ndërmarrjen e tij me metrazh të caktuar, Por edhe klientët disi të sofistikuara të ketë një kohë të vështirë mendërisht thithjen ato tipare, le të vetëm duke inkorporuar një fraksion të dukshëm prej tyre në rutinën e tyre të përditshme.

I don’t have a magic solution to the problem. I instead address just the very first steps that we’ve taken with the client to lead them down the path to successful long-term adoption.

Fushë:

As much as I wanted the team to craft a project plan that included such milestones as "PoepleSoft Integration via BDC Completed", "New Cross-Departmental Product Launch Workflow Complete" and "Executive Management KPI’s Accepted", I had to settle for something less. This is not to say that "less" është e keqe. Në të vërtetë, the "less" that we decided for the initial rollout was miles ahead of where they were before we started. Në rastin tonë, the "less" u shndërrua në:

  • Simple menaxhimit dokument duke përdorur bibliotekat dokument, version control and content types.
  • Kërko efektive bazuar në lloje të përmbajtjes dhe Kërkim i Përshtatur paradhënie (nëpërmjet pronave të menaxhuara, XSLT për të prodhuar rezultate mjaft, etj).

Përveç sa më sipër ndërmarrje të gjerë karakteristika të (që do të thotë se ata ishin të mbështjellë nga të gjitha departamentet dhe shfrytëzuesve), kemi shtuar Singleton mëposhtëm në fushëveprimin-mini-projekte:

  • Prova e QZHB integrimit koncept.
  • Multi-hap dhe multi-dega proces workflow krijuar me anë të SPD.
  • Formë komplekse InfoPath.
  • Surfacing KPI për disa procesit të biznesit (ndoshta blerjes HR talent në rastin tonë, pse se mund të ndryshojë).

Qëllimi këtu nuk është 100% accurate but representative of our approach and sufficient for my purpose here, which is to explain what I consider to be an "effective" Futja e MOSS që do të përcaktojë klientin në mënyrë të vendosur poshtë në rrugën e artë të plotë miratimit MOSS.

I won’t write much more about the singleton in this entry. I do want to point out that these are part of our over-arching strategy. The idea is to implement the core document management and search features to all users yet provide highly functional, high visible and highly representative examples of other core MOSS features which are simply beyond the ability of most users to absorb at this early stage. Megjithatë, they will be "out there" dhe ai shpreson se njësitë e tjera të biznesit do të dinë apo mësojnë rreth tyre dhe duan ato karakteristika për veten, leading to greater adoption. These singleton success stories also serve to provide our sales team "ammunition" për të fituar sukses të dytë, third and n-phase projects.

Çfarë A Ne Futja dhe Pse?

Duke u vendosën mbi menaxhimin dokument dhe kërkimit, si një ndërmarrje të gjerë kërkesë bazë, we needed to start gathering details. As a practical matter, kjo sillej rreth të kuptuarit dokumentet e tyre dhe se plotësisht në fund të fundit për të kuptuar llojet e përmbajtjes.

I’ve found it’s difficult to explain content types without visual aides. More technical folk can walk away from a discussion about content types when CT’s are described in database terms. "A CT is similar to a database table, ajo ka kolona dhe kolona janë të përcaktuara në drejtim të tipeve të të dhënave, por CT lloje të të dhënave përfshijnë më shumë se numër i plotë thjeshtë / data, but also "choice" and "lookup" and the like." We can talk about "extending" Llojet e përmbajtjes, much like one can inherit functionality from a base class in object oriented languages. However this is obviously not helpful for the transportation department admin person who has no technical background. Dmth, pothuajse të gjithë që ka rëndësi në një rollout MOSS.

Using a white board is iffy. I’ve presented the idea of a content type and drawn brilliant (ose në mënyrë që ata duket) fotografitë e llojeve të përmbajtjes dhe çfarë bëjnë ata për ju në aspektin e kërkimit dhe se si ata mund të zgjerohet, etj. Në fund, ajo do të ndjehen si disa llamba e kanë kthyer në, but the resulting white board picture is a mess.

Kjo na çoi të tanishëm tonë dhe vendin e deritashëm më efektive ulje: një vend sandbox MOSS konfiguruar për të treguar këto tipare.

Duke përdorur faqen e internetit sandbox, ne demonstrojmë:

  • Llojet Përmbajtja:
    • Krijimi i një CT me lloje të shumta të të dhënave (tekst, data, zgjedhje, boolean, lookup, etj).
    • Zgjerimi i një CT CT duke krijuar një re të bazuar në një prind.
    • Duke kërkuar për dokumente duke përdorur metadata CT.
  • Document bibliotekat:
    • Shoqërimin e një CT të vetme me një bibliotekë.
    • Çfarë ndodh kur ne të ngarkoj një dokument në atë bibliotekë?
    • Shoqërimin e shumëfishta CT me një bibliotekë doc.
    • Çfarë ndodh kur ne të ngarkoj një dokument në atë bibliotekë?
    • Filtrimin dhe zgjidhja nëpërmjet titujt e kolonave në një lib doc.
    • Views bibliotekës Document:
      • Klasifikim
      • Grupim
      • "Quick entry" (Shiko dhënat e fletë)
      • "Untagged data" (për të ndihmuar me migracionin në MOSS nga burime përmbajtjes tjera; më shumë për këtë më poshtë).

Site Sandbox:

Ne projektuar faqen tonë sandbox të jetë një tipar i përhershëm në mjedis të zhvillimit që do të përdoret për qëllime të trajnimit të gjata pasi kemi përfunduar projektin dhe ka përfshirë disa objekte, siç përshkruhet:

Llojet Përmbajtja:

Ne përcaktuar llojet e mëposhtme përmbajtje: Faturë, Urdhër blerja, Sherbime Faturë.

Ne kemi zgjedhur rendin dhe Faturë Blerje, sepse ata janë më shumë ose më pak universale nën
stood entities. Everyone in business understands that an invoice is a demand for payment to a klient për një sasi lëshuar në një farë data për t'u paguar sipas disa Kushtet e pagesës. This leads to a natural definition of a CT which we called "Training Invoice" (për të dalluar atë nga çdo lloj tjetër të faturës). The purchase order is similarly easily defined. We also created a "Training Services Invoice" by creating a new CT based upon the "Training Invoice" CT dhe shtoi vetëm një kolonë, "services rendered".

Me lart, ne tani mund të tregojë disa karakteristika kyçe të CT-së, pa marrë bogged poshtë duke u përpjekur për të shpjeguar një koncept abstrakt parë; everyone already understands what we mean by "invoice" and "purchase order" dhe janë në vend në gjendje të përqëndrohet në mekanikën e CT vetë.

Listat Custom:

CT with columns of type "lookup" point to a custom list or document library. We use this extensively and for the sandbox, we created one supporting custom list that contains customers. We picked customers because it’s an easy concept to understand and easy to demonstrate. The Invoice CT has a column, "customer" that is defined of type "lookup" that points at this list.

We created a similar custom list to manage "vendors" for the "Purchase Order" CT.

Document bibliotekat:

Ne krijuam dy biblioteka dokument: "Invoices" and "Mixed Documents".

We configured the invoices document library to manage only documents of CT type "Invoice".

We configured the "Mixed Documents" Biblioteka për të menaxhuar të gjitha tre e CT.

Krijo pikëpamjet disa që tregojnë klasifikim, filtrim, të dhënat e fletë dhe grupim.

Kërko:

Ne kemi përcaktuar dy prona të reja menaxhohet dhe plotësisht ato për numrin e faturës dhe Konsumatorit.

We created a new customized advance search site and modified it to enable users to search for "invoices" duke përdorur këto dy veti mapped.

Ndrysho XSLT mënyrë që fatura dhe numri i konsumatorëve, kur pranishëm, appear in an HTML table in a bright color. The objective here is to demonstrate that such formatting is possible.

Vënë atë të gjithë së bashku:

Ne organizojmë për përdoruesit kyç për të marrë pjesë në një demo.

Ne ndjekim këtë dorëshkrim i thjeshtë:

  1. Përshkruani kuptimin dhe qëllimin e një CT, duke përdorur faturat e blerjes dhe urdhra si shembuj.
  2. Trego përkufizimin faturë CT ndërsa njëkohësisht duke i siguruar ata se ata nuk kanë nevojë të përdorin ato ekranet veten, vetëm të vini deri konceptet.
  3. Shko në bibliotekë dokument faturave.
  4. Ngarko një dokument.
  5. Demonstrojnë se konsumatori drop-down është me burim të vërtetë nga një listë me porosi.
  6. Shto një klient të ri në listën e klientit dhe pastaj të azhurnojnë të dhënat e faturës Ngarkuar fundit e meta me konsumatorin e sapokrijuar.
  7. Switch to the "mixed documents" library and upload a document. Explain how the system prompts for a document type.
  8. Go back to invoices document library and show how clicking on a column name changes sort order.
  9. Demonstrojnë kolona të nivelit filtrim.
  10. Trego pikëpamje të ndryshme që demonstrojnë multi-nivelit klasifikim, filtrimin dhe grupimin.
  11. Trego pamjen TË DHËNAT MBI NDËRMARRJEN.
  12. Explain the purpose of a "untagged documents" pamje.
  13. Kaloni në kërkimin e përshtatur të avancuar.
  14. Deri tani, Dokumenti ngarkuar së fundi duhet të ketë qenë crawled dhe të indeksuara, kështu që të kryejë një kërkim që tregon aftësinë për të gjetur se fatura me anë të pasurisë të drejtëpërdrejtë,.
  15. Ne demonstruar dallimin në mes të kërkoni me anë të pronave mapped vs. vetëm një kërkim tekst.

Në këtë pikë, we are more or less done with the demo. It seems to take about 30 në 45 minuta, në varësi se si shumë njerëz pyesin pyetje.

We then send them back to their desks with "homework". This consists of a simple excel spreadsheet where we ask them to define for us what they think they need in terms of CT’s, të dy në një nivel të lartë (vetëm emri dhe qëllimi i biznesit) as well as columns and type of data they would store in the column. We don’t ask them to define column data types in MOSS terms, but business terms.

Në Përmbledhje:

We’ve created a sandbox environment that we can use to demonstrate some core MOSS features whose appeal are enterprise-wide.

We have modeled easily understood and common business entities so that users can focus on MOSS and not get bogged down on the entities / shembuj vetë.

Business users walk away from theses sessions with "homework" në formën e dokumente excel cilat ata janë tashmë kompetente te mbushur jashtë dhe përdorur për projektimin e tyre para-prera llojet e përmbajtjes.

Më në fund, si ne të kryer popull me kalimin e kohës, Anëtarët e klientit ekipit vetë të bëhen më të aftë për të kryer përpara, të bëjë demo-së vetë dhe në përgjithësi të lirë deri në pjesën tjetër prej nesh për të punuar mbi çështjet më të ndërlikuara, të tilla si taksonomisë globale, workflows komplekse, QZHB dhe si.

Moss: Shembull funksionale - Custom Dhënave Lloji

Skenari Biznes:

Ndërmarrjeve të gjerë zbatimi i MOSS për kompaninë prodhuese me 30+ faqet dhe një duzinë disa departamenteve të korporatave.

Objektivi Biznes:

Pavarësisht nga një numër të grupeve të biznesit (departamentet, Lokacionet, etj), të dhëna të caktuara duhet të mbahet në një nivel global. Për shembull, një listë autoritativ mjeshtër i të gjitha lokacionet fizike të kompanisë (e.g. Objektet e prodhimit, warehouse locations, sales offices) should be maintained in a central location.

Technical Problem:

The enterprise taxonomy was implemented using multiple site collections. We would have liked to create the authoritative list of physical locations in a custom WSS list. Pastaj, when we needed to have a column in a content type (or a column added to a list or doc library) that contained corporate locations, we would create a column using the "lookup" datatype and point to this master list.

Unfortunately, lookup datatypes must access a source list "locally" meaning that our authoritative list cannot span site collections.

Zgjidhja teknike:

Implement a new custom data type implemented based on SPField and represented as a DropDownList in the UI whose ListItems populate from the master WSS list.

We created a new site collection called "http://localhost/EnterpriseData". There, we created a custom list named "Corporate Locations". This list just uses the standard "Title" field to contain the list of actual corporate locations.

One follows several discrete steps to create a custom data type in WSS. They are:

  1. Define a class which inherits from SPField (one may inherit from other fields if required).

Here is the code for that:

publik klasë XYZZYCorporateLocationField : SPFieldText
{
publik XYZZYCorporateLocationField
(SPFieldCollection Fushat, varg typeName, varg displayName)
: base(Fushat, typeName, displayName) { }

publik XYZZYCorporateLocationField
(SPFieldCollection Fushat, varg displayName)
: base(Fushat, displayName) { }

publik shkel BaseFieldControl FieldRenderingControl
{
get
{
BaseFieldControl control = i ri XYZZYCorporateLocationFieldControl();
control.FieldName = kjo.InternalName;
kthehem control;
} //get
} // fieldrenderingcontrol

publik shkel varg GetValidatedString(object vlerë)
{
nëse (kjo.Required || value.ToString().Është e barabartë me(String.Empty))
{
hedh i ri SPFieldValidationException ("Department is not assigned.");
}
kthehem base.GetValidatedString(vlerë);
} // getvalidatedstring

} // XYZZYCorporateLocation

  1. Define another class that inherits from the base field control, si në:

publik klasë XYZZYCorporateLocationFieldControl : BaseFieldControl
{
mbrojtur DropDownList XYZZYCorporateLocationSelector;

mbrojtur shkel varg DefaultTemplateName
{
get
{
kthehem "XYZZYCorporateLocationFieldControl";
}
} // DefaultTemplateName

publik shkel object Vlerë
{
get
{
EnsureChildControls();
kthehem kjo.XYZZYCorporateLocationSelector.SelectedValue;
} // get
i vendosur
{
EnsureChildControls();
kjo.XYZZYCorporateLocationSelector.SelectedValue = (varg)kjo.ItemFieldValue;
} // i vendosur
} // override object Value

mbrojtur shkel pavlefshme CreateChildControls()
{

nëse (kjo.Field == zero || kjo.ControlMode == SPControlMode.Display)
kthehem;

base.CreateChildControls();

kjo.XYZZYCorporateLocationSelector =
(DropDownList)TemplateContainer.FindControl("XYZZYCorporateLocationSelector");

nëse (kjo.XYZZYCorporateLocationSelector == zero)
hedh i ri Exception("ERROR: Cannot load .ASCX file!");

nëse (!kjo.Page.IsPostBack)
{

përdorim (SPSite site = i ri SPSite("http://localhost/enterprisedata"))
{
përdorim (SPWeb web = site.OpenWeb())
{

SPList currentList = web.Lists["Corporate Locations"];

foreach (Pështyj XYZZYCorporateLocation currentList.Items)
{
nëse (XYZZYCorporateLocation["Title"] == zero) vazhdoj;

varg theTitle;
theTitle = XYZZYCorporateLocation["Title"].ToString();

kjo.XYZZYCorporateLocationSelector.Items.Add
(i ri ListItem(theTitle, theTitle));

} // foreach

} // using spweb web = site.openweb()
} // using spsite site = new spsite("http://localhost/enterprisedata")

} // if not a postback

} // CreateChildControls

} // XYZZYCorporateLocationFieldControl

The above code basically implements the logic for populating the DropDownList with values from the WSS custom list located at http://localhost/enterprisedata and named "Corporate Departments".

I defined both classes in a single .cs file, compiled it and put it into the GAC (strong required, sigurisht).

  1. Implement a control template (.ascx) siç tregohet:

<%@ Control Language="C#" Inherits="Microsoft.SharePoint.Portal.ServerAdmin.CreateSiteCollectionPanel1,Microsoft.SharePoint.Portal,Version=12.0.0.0,Culture=neutral,PublicKeyToken = 71e9bce111e9429c" compilationMode="Always" %>
<%
@ Regjistrohem Tagprefix="wssawc" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version = 12.0.0.0, Culture = neutral, PublicKeyToken = 71e9bce111e9429c" %> <%@ Regjistrohem Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version = 12.0.0.0, Culture = neutral, PublicKeyToken = 71e9bce111e9429c" %>
<SharePoint:RenderingTemplate ID="XYZZYCorporateLocationFieldControl" runat="server">
<Shabllon>
<nëpërkë:DropDownList ID="XYZZYCorporateLocationSelector" runat="server" />
</Shabllon>
</
SharePoint:RenderingTemplate>

The above is saved into c:\program files\common files\microsoft shared\web server extensions\12\controltemplates.

  1. Më në fund, we create an XML file to save into the …..\12\XML directory. This is CAML that defines our custom data type and for my example, looks like this:

<?xml version="1.0" encoding="utf-8" ?>
<
FieldTypes>
<
FieldType>
<
Field Emër="TypeName">CorporateLocations</Field>
<
Field Emër="ParentType">Tekst</Field>
<
Field Emër="TypeDisplayName">Corporate Locations</Field>
<
Field Emër="TypeShortDescription">All XYZZY Corporate locations including manufacturing or other facilities.</Field>
<
Field Emër="UserCreatable">TRUE</Field>
<
Field Emër="ShowInListCreate">TRUE</Field>
<
Field Emër="ShowInDocumentLibraryCreate">TRUE</Field>
<
Field Emër="ShowInSurveyCreate">TRUE</Field>
<
Field Emër="ShowInColumnTemplateCreate">TRUE</Field>
<
Field Emër="FieldTypeClass">Conchango.XYZZYCorporateLocationField, XYZZYCorporateLocationField, Version = 1.0.0.0, Culture = neutral, PublicKeyToken=b0b19e85410990c4</Field>
<
RenderPattern Emër="DisplayPattern">
<
Switch>
<
Expr>
<
Column />
</
Expr>

<Case Vlerë=""/>

<Default>
<
HTML>
<![CDATA[
<span style="color:Red"><b>]]>
</
HTML>

<
Column SubColumnNumber="0" HTMLEncode="TRUE"/>

<HTML><![CDATA[</b></hapësirë>]]></HTML>

</
Default>
</
Switch>

</
RenderPattern>
</
FieldType>
</
FieldTypes>
This XML file adds the custom data type to the WSS "library" and matches it up against the GAC’d assembly.

After moving all these bits into place, iisreset on the server and it should all start working nicely.

Moss: Përditësimi një listë me porosi

Ka shumë shembuj të mirë të përditësimit të listave porosi nëpërmjet SDK. Këtu është ende një.

Problemi Biznes: Forma InfoPath ka qenë i dizajnuar që i mundëson përdoruesve për të hyrë shkresave blerje online. Shkresë PO numrat duhet të jenë të bazuara në vlerat tradicionale rend numër të plotë dhe llogaritet automatikisht.

Zgjidhja e Biznesit: Krijo një listë me porosi Moss përmban dy kolona: "ControlField" and "ControlValue". The value column contains the next purchase requisition number. Note that the generic "control" naming convention provides for future control fields that may be used as needed.

Zgjidhja teknike: Create a web service accessed by the InfoPath client. The web service returns back the next purchase requisition number and updates the value of the list.

Mësimet e mësuara:

  • When adding this web service as a data source to the InfoPath form, I found it necessary to convert it to a udc and store it into a data connection library.
  • I also found it necessary to enable cross domain scripting via central services administration // application management // form server configuration.
  • The first time the form tried to access the web service, it takes a while and on occasion, it would time out. I fiddled with settings in form server configuration to expand the timeout settings and that seemed to help.

Kodi:

përdorim Sistem;
përdorim System.Web;
përdorim System.Web.Services;
përdorim System.Web.Services.Protocols;
përdorim Microsoft.SharePoint;
përdorim System.Configuration;

[Webservice(Namespace = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
publik klasë PoService : System.Web.Services.Webservice
{
publik PoService () {

//Uncomment the following line if using designed components
//InitializeComponent();
}

/// <përmbledhje>
/// Obtain the next PO number from the sharepoint po number control list.
/// Increment the PO number in that list.
/// </përmbledhje>
/// <returns></returns>
[WebMethod]
publik varg GetNextPoNumber()
{
varg SpPoControlSiteName; // Name of the actual MOSS site that hosts the PO Control list.
varg SpPoControlListName; // Name of the actual MOSS list containing the Po control.

SpPoControlSiteName = ConfigurationSettings.AppSettings["PoControlListHostingSite"].ToString();
SpPoControlListName = ConfigurationSettings.AppSettings["PoControlList"].ToString();

varg nextPoReqNumber = "xyzzy";

përdorim (SPSite site = i ri SPSite(SpPoControlSiteName))
{
përdorim (SPWeb web = site.OpenWeb())
{

SPList currentList = web.Lists[SpPoControlListName];

foreach (Pështyj controlItem currentList.Items)
{

nëse (((varg)controlItem["ControlField"]).Është e barabartë me("NextPoNumber"))
{
nextPoReqNumber = (varg)controlItem["ControlValue"];

int int_nextPoReqNumber;
int_nextPoReqNumber = Convert.ToInt32(nextPoReqNumber);

int_nextPoReqNumber ;

controlItem["ControlValue"] = int_nextPoReqNumber;
controlItem.Update();
}

} // Locating, reading and updating the PO number in the list.


} // using spweb web = site.openweb()
} // using spsite site = new spsite("http://localhost/mizuho")

kthehem nextPoReqNumber;

}
}