Архиви на категоријата: SharePoint

Како да се смена мистериозни SharePoint грешки.

Преглед:

Дебагирање е тешко кога развивање на сопствени функционалност за Windows SharePoint Services 3.0 (WSS) или Microsoft Office SharePoint Server (Мос). 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.

Го употребив оваа техника со голем успех да се реши поинаку мистериозни грешки.

Пристап:

SharePoint заштедува голем број информации за дијагностички најавите во дневник датотека во 12 кошница.

The "12 hive" is usually located at "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12". (Не сум сигурен дали тоа е можно за 12 кошница да живеат на друго место, всушност).

Идејата е да се лоцираат на тековниот лог датотека, 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.
  • Копирате и залепите убаво во MS Excel.

Мој омилен метод:

  1. Се отвори Windows Explorer покажува кон 12 кошница логови.
  2. Сортирање цел да се покаже со пат е изменета датум (најновите прво).
  3. Нагласи најактуелните log датотеката.
  4. Во веб прелистувач прозорец, сила на грешка да се случи.
  5. Брзо отворање на тековниот лог датотека и копирање на нивната содржина на MS Excel.
  6. Префрли се на крајот и анализираат релевантните записи.

Други белешки:

Од стандардните, дијагностички најавите се наоѓа во 12 кошница Дневници директориум.

MS Најдобри практики (кец на десетка од Мајк Т. на 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, во кој случај ти очигледно ќе треба да се најде на log датотеката постои, наместо на стандардната 12 кошница локација).

Овој запис прашањата како што се:

  • SharePoint работното успеа да започне поради внатрешна грешка.
  • (повеќе да се додаде со текот на времето)
  • Забелешка: Оваа страница е корисно дијагностицирање на работното грешки (e.g. "The workflow failed to start due to an internal error").

Мос: Ефективно воведување на една организација

(овој запис крстот испратени меѓу http://paulgalvin.spaces.live.com/blog/ и http://blogs.conchango.com)

На работи на овој сајт се моето и не ги одразуваат ставовите Conchango е, стратегии или мислења.

Преглед:

Оваа страница ја опишува некоја позадина информации за голем (3,000 корисници) Microsoft Office SharePoint Server (Мос) 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, ние сме приближно 50% complete with the first phase of the project. As things progress, Јас ќе се ажурира овој запис и / или пишувај нови записи.

Во конкретниот случај, 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. Како што можете може да се замисли, ова не е најдоброто ширењето стратегија (кој клиентот признава дека) и кога Мос пристигна на местото на настанот, the client resolved to "do it right" и ни најмен да им помогне.

Една од централните прашања со кои се соочува нас кога ние започнавме да го реализираме овој проект беше: Како ние да се воведе Мос за овој клиент? Given that the client already had experience with SharePoint, се запрашавме — do we need to do "differential" обука или да почнеме од земјата нагоре? 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, управување со документи, пребарување, безбедност, публика насочување, управување со проекти, "fabulous forty" шаблони, работното, деловни податоци конектор, итн. Couple this with the fact that it’s a large organization that може навистина прават користењето на речиси сите поголеми Мос функција и ќе имаат профит од голем проект со едно претпријатие дофат и многу добри работи што се случуваат.

Ние сме соочени со ова прашање време и време повторно … Мос има едно претпријатие дофат со своите претпријатие функција-сет, Сепак, дури и малку софистицирани клиенти имаат тешко време ментално апсорбирање оние карактеристики, а камоли инкорпорирање на значителен дел од нив во нивната секојдневна рутина.

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.

Обемот:

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" е лошо. Всушност, the "less" that we decided for the initial rollout was miles ahead of where they were before we started. Во нашиот случај, the "less" се претвори во:

  • Едноставен за управување со документи со користење документ библиотеки, version control and content types.
  • Ефикасно пребарување врз основа на содржината видови и кориснички однапред пребарување (преку успеа својства, XSLT да се произведе прилично резултати, итн).

Во прилог на погоре претпријатие-широк карактеристики (што значи дека тие требаше да бидат стркала до сите одделенија и корисници), додадовме следниве Синглтон во опсегот мини-проекти:

  • Доказ за концепт ЦРБ интеграција.
  • Мулти-чекор и мулти-филијала работното процес создадени преку СПД.
  • Комплекс InfoPath формулар.
  • Површина KPI е за некои бизнис процес (веројатно човечки ресурси талент стекнување во нашиот случај, иако тоа може да се промени).

Опсегот тука не е 100% accurate but representative of our approach and sufficient for my purpose here, which is to explain what I consider to be an "effective" воведувањето на Мос која ќе го поставите на клиентот цврсто одредување на златниот патот кон целосна Мос усвојување.

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. Сепак, they will be "out there" и еден надева дека другите деловни единици ќе се знае на или дознаат повеќе за нив и сакаат оние карактеристики за себе, leading to greater adoption. These singleton success stories also serve to provide our sales team "ammunition" за успешно освојување втор, third and n-phase projects.

Што Дали Ние се воведе и зошто?

Откако се населиле на управување со документи и пребарување како основа претпријатие-широк барање, we needed to start gathering details. As a practical matter, ова се вртел околу разбирање на нивните документи и дека во крајна линија одбележан со разбирање типови содржини.

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, има колони и колони се дефинира во однос на типови на податоци, но КТ типови на податоци вклучуваат повеќе од едноставна цел број / датум, but also "choice" and "lookup" and the like." We can talk about "extending" типови содржини, 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. Односно, речиси сите што е важно во ширењето Мос.

Using a white board is iffy. I’ve presented the idea of a content type and drawn brilliant (или па тие се чини) слики на типови на содржина и она што го прават за вас во поглед на пребарување и како тие може да се прошири, итн. На крајот, тоа се чувствува како некои светилки се вклучен, but the resulting white board picture is a mess.

Ова нè доведоа до нашите сегашни и досега повеќето ефективни Целна место: на Мос песок сајт конфигуриран да се покаже овие карактеристики.

Користење на песок сајт, ние демонстрира:

  • Типови содржини:
    • Креирање на КТ со повеќе типови на податоци (текст, датум, избор, логичка, пребарување, итн).
    • Продолжување на КТ, преку создавање на нови КТ врз основа на родител.
    • Во потрага по документи со користење на КТ метаподатоци.
  • Документ библиотеки:
    • Асоцирањето една КТ со библиотека.
    • Што се случува кога ќе испратите документот на таа библиотека?
    • Асоцирањето повеќе КТ со библиотека doc.
    • Што се случува кога ќе испратите документот на таа библиотека?
    • Филтрирање и сортирање преку колона наслови во doc lib.
    • Документ библиотека пати:
      • Сортирање
      • Групирање
      • "Quick entry" (Податоци поглед)
      • "Untagged data" (да им помогне со миграцијата кон Мос од други содржини извори; повеќе информации за ова подолу).

Мапа на Sandbox:

Ние дизајниравме нашиот песок сајт да биде постојана карактеристика во развој на животната средина да се користи за целите на обуката долго откако ќе заврши проектот и се вклучени неколку артефакти како што е опишано:

Типови содржини:

Ние ги дефинираше следните типови содржини: Фактура, Нарачка, Услуги Фактура.

Ние избрани Фактура и купување на цел бидејќи тие се повеќе или помалку универзално под
stood entities. Everyone in business understands that an invoice is a demand for payment to a клиент за износот издава на одредени датум треба да се плати, како на некои начин на плаќање. This leads to a natural definition of a CT which we called "Training Invoice" (да се разликува од било кој друг вид на фактура). The purchase order is similarly easily defined. We also created a "Training Services Invoice" by creating a new CT based upon the "Training Invoice" КТ и додава само една колона, "services rendered".

Со горенаведените, ние сега можат да покажат некои клучни карактеристики на КТ без добивање забодувајќи се обидува да објасни апстрактен концепт прв; everyone already understands what we mean by "invoice" and "purchase order" а треба да се во можност да се фокусира на механика на КТ себе.

Прилагодено листи:

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" КТ.

Документ библиотеки:

Ние направивме две документ библиотеки: "Invoices" and "Mixed Documents".

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

We configured the "Mixed Documents" библиотека да управуваат со сите три КТ е.

Направете неколку пати кои покажуваат сортирање, филтрирање, Податоци и групирање.

Пребарување:

Ние дефинирани две нови успеа својства и одбележан нив да фактура број и клиентите.

We created a new customized advance search site and modified it to enable users to search for "invoices" користење на овие две одбележан својства.

Измени на XSLT, така што на фактурата и клиентот број, кога се присутни, appear in an HTML table in a bright color. The objective here is to demonstrate that such formatting is possible.

Ставањето на сето тоа заедно:

Ние организираме за клучни корисници да учествуваат во демо.

Ние ја следиме оваа едноставна скрипта:

  1. Опише значењето и целта на КТ, користење на фактури и купување на налози како примери.
  2. Покаже на фактурата КТ дефиниција, додека истовремено ги уверувајќи дека тие не треба да ги користат овие екрани се, само земам концепти.
  3. Оди до документот фактури библиотека.
  4. Испратите документот.
  5. Покажуваат дека на клиентите паѓачката е навистина извори од сопствени листа.
  6. Додај нов клиент до клиент листа, а потоа ажурирање мета податоци на неодамна качен фактура со новосоздадените клиент.
  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. Покажат колона на ниво на филтрирање.
  10. Покажуваат различни ставови кои ќе покажат мулти-ниво на сортирање, филтрирање и групирање.
  11. Покажуваат податоците на состојба поглед.
  12. Explain the purpose of a "untagged documents" видите.
  13. Префрли се на кориснички напредно пребарување.
  14. До сега, неодамна поставени документ треба да се запиша и индексираат, па извршите пребарување покажува дека способноста да се лоцира кој фактура преку одбележан сопственост.
  15. Ние демонстрира разликата меѓу пребарување преку одбележан својства наспроти. само пребарување на текст.

Во овој момент, we are more or less done with the demo. It seems to take about 30 да 45 минути, во зависност од тоа колку многу прашања на луѓето прашуваат.

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, и двете на високо ниво (само име и деловна намена) 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.

Во Резиме:

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 / примери се.

Business users walk away from theses sessions with "homework" во форма на ексел документи кои што се сега надлежните да пополните и да го користите за дизајнирање свој прв-намалување на типови на содржина.

Конечно, како што вршат демо снимки со текот на времето, членовите на тимот на клиентот самите да станат способни да го носат напред, стори демонстрација на себе и, генерално, се ослободи остатокот од нас до работа на повеќе комплексни прашања, како што се глобалното таксономија, сложени работни текови, ЦРБ и слично.

Мос: Функционални Пример - сопствени податоци Тип

Бизнис сценарио:

Претпријатие-широк имплементација на Мос за производство на компанијата со 30+ сајтови и неколку десетици корпоративни сектори.

Бизнис Цел:

И покрај мноштво на бизнис-групи (одделенија, локации, итн), одредени податоци треба да се одржува на глобално ниво. На пример, авторитетен господар листа на сите физички локации на компанијата (e.g. производствени капацитети, складиште локации, продажбата на канцеларии) треба да се одржува во една централна локација.

Технички проблем:

На претпријатието таксономија беше имплементиран со користење на повеќе сајт колекции. Ние би сакал да се создаде авторитетен листа на физички локации во сопствен WSS листа. Потоа, кога ни е потребно да имаме колона во типот на содржина (или колона додадена на листа или doc библиотека) кои се содржани корпоративни локации, we would create a column using the "lookup" тип на податоци и точка за овој господар листа.

За жал, lookup datatypes must access a source list "locally" што значи дека нашите авторитетен листа не може да span сајт колекции.

Техничко решение:

Спроведе нова сопствен тип на податок спроведува врз основа на SPField и претставен како DropDownList во корисничкиот интерфејс, чии ListItems доверат од WSS господар листа.

Ние направивме нов сајт колекција наречена "http://localhost/EnterpriseData". Има, we created a custom list named "Corporate Locations". This list just uses the standard "Title" поле ги содржи листа на вистинските корпоративниот локации.

Се следат неколку дискретни чекори за да креирате сопствени тип на податоци во WSS. Тие се:

  1. Се дефинира класа која наследува од SPField (може да се наследат од други области ако е потребно).

Еве го кодот за тоа:

јавноста класа XYZZYCorporateLocationField : SPFieldText
{
јавноста XYZZYCorporateLocationField
(SPFieldCollection полиња, низа typeName, низа displayName)
: база(полиња, typeName, displayName) { }

јавноста XYZZYCorporateLocationField
(SPFieldCollection полиња, низа displayName)
: база(полиња, displayName) { }

јавноста избегне BaseFieldControl FieldRenderingControl
{
добие
{
BaseFieldControl control = нови XYZZYCorporateLocationFieldControl();
control.FieldName = овој.Внатрешна Име;
се врати control;
} //добие
} // fieldrenderingcontrol

јавноста избегне низа GetValidatedString(објект вредност)
{
ако (овој.Required || value.ToString().Еднакво(Стринг.Празни))
{
фрли нови SPFieldValidationException ("Department is not assigned.");
}
се врати база.GetValidatedString(вредност);
} // getvalidatedstring

} // XYZZYCorporateLocation

  1. Дефинираат друга класа која наследува од база теренска контрола, како и во:

јавноста класа XYZZYCorporateLocationFieldControl : BaseFieldControl
{
заштитени DropDownList XYZZYCorporateLocationSelector;

заштитени избегне низа DefaultTemplateName
{
добие
{
се врати "XYZZYCorporateLocationFieldControl";
}
} // DefaultTemplateName

јавноста избегне објект Вредност
{
добие
{
EnsureChildControls();
се врати овој.XYZZYCorporateLocationSelector.SelectedValue;
} // добие
постави
{
EnsureChildControls();
овој.XYZZYCorporateLocationSelector.SelectedValue = (низа)овој.ItemFieldValue;
} // постави
} // override object Value

заштитени избегне поништат CreateChildControls()
{

ако (овој.Field == нула || овој.ControlMode == SPControlMode.Прикажување)
се врати;

база.CreateChildControls();

овој.XYZZYCorporateLocationSelector =
(DropDownList)TemplateContainer.FindControl("XYZZYCorporateLocationSelector");

ако (овој.XYZZYCorporateLocationSelector == нула)
фрли нови Исклучок("ERROR: Cannot load .ASCX file!");

ако (!овој.Page.IsPostBack)
{

користење на (SPSite site = нови SPSite("http://localhost / enterprisedata"))
{
користење на (SPWeb web = site.OpenWeb())
{

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

foreach (Плукаат XYZZYCorporateLocation во currentList.Items)
{
ако (XYZZYCorporateLocation["Title"] == нула) продолжи;

низа theTitle;
theTitle = XYZZYCorporateLocation["Title"].ToString();

овој.XYZZYCorporateLocationSelector.Items.Add
(нови ListItem(theTitle, theTitle));

} // foreach

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

} // if not a postback

} // CreateChildControls

} // XYZZYCorporateLocationFieldControl

Горенаведените кодот во основа спроведува логика за населувањето на DropDownList со вредности од WSS обичај листа наоѓа на http://localhost/enterprisedata and named "Corporate Departments".

Јас дефинирани двете паралелки во сингл. Cs датотека, Составувач го и ставете го во GAC (силна потребните, се разбира).

  1. Спроведување на контрола дефиниција (.ascx) како што е прикажано:

<%@ Контрола Јазик="C#" Наследува="Microsoft.SharePoint.Portal.ServerAdmin.CreateSiteCollectionPanel1,Microsoft.SharePoint.Portal,Верзија = 12.0.0.0, култура = неутрален,PublicKeyToken = 71e9bce111e9429c" compilationMode="Always" %>
<%
@ Регистрирај се Tagprefix="wssawc" Именски простор="Microsoft.SharePoint.WebControls" Собранието="Microsoft.SharePoint, Верзија = 12.0.0.0, Култура = неутрален, PublicKeyToken = 71e9bce111e9429c" %> <%@ Регистрирај се Tagprefix="SharePoint" Именски простор="Microsoft.SharePoint.WebControls" Собранието="Microsoft.SharePoint, Верзија = 12.0.0.0, Култура = неутрален, PublicKeyToken = 71e9bce111e9429c" %>
<SharePoint:Рендерирање Шаблон Проект="XYZZYCorporateLocationFieldControl" runat="server">
<Дефиниција>
<asp:DropDownList Проект="XYZZYCorporateLocationSelector" runat="server" />
</Дефиниција>
</
SharePoint:Рендерирање Шаблон>

На погоре е зачувана во в:\Program Files заеднички додадени фајлови Мајкрософт Муабет веб сервер екстензии 12 controltemplates.

  1. Конечно, ние создаваме XML датотека за да ја зачувате во ..... 12 XML директориумот. Ова е CAML што ги дефинира нашите сопствени тип на податок и за мојот пример, изгледа вака:

<?XML верзија="1.0" кодирање="UTF-8" ?>
<
FieldTypes>
<
FieldType>
<
Поле Името="TypeName">CorporateLocations</Поле>
<
Поле Името="ParentType">Текст</Поле>
<
Поле Името="TypeDisplayName">Corporate Locations</Поле>
<
Поле Името="TypeShortDescription">All XYZZY Corporate locations including manufacturing or other facilities.</Поле>
<
Поле Името="UserCreatable">ТОЧНО</Поле>
<
Поле Името="ShowInListCreate">ТОЧНО</Поле>
<
Поле Името="ShowInDocumentLibraryCreate">ТОЧНО</Поле>
<
Поле Името="ShowInSurveyCreate">ТОЧНО</Поле>
<
Поле Името="ShowInColumnTemplateCreate">ТОЧНО</Поле>
<
Поле Името="FieldTypeClass">Conchango.XYZZYCorporateLocationField, XYZZYCorporateLocationField, Верзија = 1.0.0.0, Култура = неутрален, PublicKeyToken=b0b19e85410990c4</Поле>
<
RenderPattern Името="DisplayPattern">
<
Префрлате>
<
Expr>
<
Колона />
</
Expr>

<Случај Вредност=""/>

<Стандардно>
<
HTML>
<![CDATA[
<span style="color:Red"><б>]]>
</
HTML>

<
Колона SubcolumnNumber="0" HTMLEncode="ТОЧНО"/>

<HTML><![CDATA[</б></век>]]></HTML>

</
Стандардно>
</
Префрлате>

</
RenderPattern>
</
FieldType>
</
FieldTypes>
This XML file adds the custom data type to the WSS "library" и натпревари до против GAC'd собранието.

По преселувањето сите овие битови во место, iisreset на серверот и сето тоа треба да почне да работи убаво.

Мос: Ажурирање на сопствени листа

Постојат многу добри примери за ажурирање на сопствени листи преку пакети. Тука е уште еден.

Бизнис проблем: InfoPath формулар е дизајниран која им овозможува на корисниците да влезат во онлајн купување требувањата. PO официјално барање броеви треба да биде традиционален низа базирани целобројни вредности и се пресметуваат автоматски.

Бизнис решенија: Креирате сопствени Мос листа ги содржи две колони: "ControlField" and "ControlValue". Вредноста колона го содржи следно купување реквизиција број. Note that the generic "control" именување на конвенцијата обезбедува за идните контрола области во кои можат да се користат колку што е потребно.

Техничко решение: Создаде веб сервис посетена од страна на InfoPath клиент. На веб сервис се враќа назад на следно купување реквизиција број и надградби на вредноста на листа.

Научени лекции:

  • Кога додавање на овој веб сервис како извор на податоци на InfoPath формулар, Најдов дека е неопходно да го конвертирате во УДЦ и чувајте го во податочна врска библиотека.
  • Јас исто така, утврди дека е неопходно да им се овозможи крстот домен скриптирање преку централниот услуги администрација // апликација за управување со // форма сервер.
  • Прв пат во форма Пробавте да пристапите до веб сервис, тоа трае некое време и по повод, тоа ќе Time Out. Јас си свиркавме со поставки во форма сервер да се прошири на истек на време поставки и што се чинеше да им помогне на.

Го кодот:

користење на Систем;
користење на System.Web;
користење на System.Web.Services;
користење на System.Web.Services.Protocols;
користење на Microsoft.SharePoint;
користење на System.Configuration;

[WebService(Namespace = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
јавноста класа PoService : System.Web.Services.WebService
{
јавноста PoService () {

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

/// <резиме>
/// Obtain the next PO number from the sharepoint po number control list.
/// Increment the PO number in that list.
/// </резиме>
/// <се враќа></се враќа>
[WebMethod]
јавноста низа GetNextPoNumber()
{
низа SpPoControlSiteName; // Name of the actual MOSS site that hosts the PO Control list.
низа SpPoControlListName; // Name of the actual MOSS list containing the Po control.

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

низа nextPoReqNumber = "xyzzy";

користење на (SPSite site = нови SPSite(SpPoControlSiteName))
{
користење на (SPWeb web = site.OpenWeb())
{

SPList currentList = web.Lists[SpPoControlListName];

foreach (Плукаат controlItem во currentList.Items)
{

ако (((низа)controlItem["ControlField"]).Еднакво("NextPoNumber"))
{
nextPoReqNumber = (низа)controlItem["ControlValue"];

int int_nextPoReqNumber;
int_nextPoReqNumber = Конвертирате.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")

се врати nextPoReqNumber;

}
}