Категория Архиви: SharePoint

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

Общ преглед:

Е трудно при разработването персонализирани функции за Windows SharePoint Services 3.0 (WSS) или Microsoft Office SharePoint Server (МОС). Основният виновник е, че SharePoint обикновено повърхности много малко диагностична информация на уеб браузъра, когато възникне грешка. Този блог пост описва как да намерите допълнителни генериран от системата диагностична информация, която често могат да предвидят, че допълнителната малко подробности, че един трябва да се идентифицират основните причини. Това може да доведе до решаване на проблема.

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

Подход:

SharePoint спестява голяма част от информацията за диагностичен регистрационен файл в регистрационен файл в 12 кошер.

"12 кошера" обикновено се намира в "C:\Програма FilesCommon FilesMicrosoft споделениуеб сървър Extensions12 ". (Аз не съм сигурен дали това е възможно за 12 кошер да живея никъде другаде, Всъщност).

Идеята е да се намери на текущия регистрационен файл, сила грешка и след това бързо отваряне на регистрационния файл. Тези регистрационни файлове се характеризират с:

  • Обилно количество информация. SharePoint генерира много голям обем на диагностична информация и много бързо, той пише за този регистрационен файл. Трябва да се бърза с пръсти да го плен.
  • Множеството. SharePoint не пише за отделен регистрационен файл, но по-скоро генерира множество регистрационни файлове в последователност.
  • Копирайте и поставете добре в MS Excel.

Моят любим метод:

  1. Отворен горе Прозорец Изследовател, сочещи към 12 hivelogs.
  2. Сортирай изгледа да показва по дата на промяна (най-новите отпред).
  3. Осветяване на най-актуалните регистрационния файл.
  4. В прозореца на уеб браузъра, сила грешка се появява.
  5. Бързо отваряне на текущия регистрационен файл и копиране на съдържанието му в MS Excel.
  6. Направо до края и анализ на съответните вписвания.

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

По подразбиране, дневник на диагностиката се намира в 12 hiveLOGS директория.

MS най-добри практики (Според Майк T. на Microsoft) посочва, че регистрационните файлове трябва да бъдат записани на отделен твърд диск. Човек прави това чрез централен администратор. Вашият системен администратор може да направи това, в този случай очевидно трябва да се намери в регистрационния файл там вместо по подразбиране 12 кошер местоположение).

Този запис се отнася въпроси като:

  • Работния поток на SharePoint не успя да стартира поради вътрешна грешка.
  • (повече да се добави във времето)
  • Този запис е била полезна, диагностициране на грешки на работен поток (e.g. "Работният поток не можа да стартира поради вътрешна грешка").

МОС: Ефективното въвеждане на организация

(този запис за кръстосана Публикувано между http://paulgalvin.spaces.live.com/blog/ и http://blogs.conchango.com)

Публикации в този сайт са моите собствени и не отразяват непременно позициите на Conchango в, стратегии или становища.

Общ преглед:

Този запис описва някои фон информация за голям (3,000 потребители) Microsoft Office SharePoint Server (МОС) внедряването и какво направихме да получите на проекта, търкаляне по такъв начин, че клиентът е щастлив и здраво надолу път, който завършва с пълно въвеждане на Мос функцията набор. Тъй като за написването на записа, Ние сме около 50% завърши с първата фаза на проекта. Като нещата напредък, Аз ще актуализира този пост или да пишете нови записи.

В този конкретен случай, компанията вече са инсталирани SharePoint Portal Server 2003. Групата на ИТ инсталирани продукта в един вид "Нека да видим дали някой му пука" мода. Той бързо беше приета от повечето бизнес потребители и стана доста популярна в предприятието като цяло. Както можете да си представите, Това не е най-добрата стратегия за внедряване (които клиентът с готовност си признава) а когато Мос пристигна на сцената, Клиентът реши да "го направиш нали" и наел да им помогне.

Един от централните въпроси, пред които сме изправени, когато започна изпълнението на този проект е: Как да се въведат Мос на този клиент? Предвид факта, че клиентът вече е имал опит с SharePoint, Ние се чудеха — Ние трябва да направите "диференциал" обучение или не започваме от нулата нагоре? След работа с ключови потребители, сме установили, че се третира като идеен проект, по-смислено.

Това решение даде отправна точка, но все още ни оставя с основното изискване на фигуриращ се добра стратегия за подвижен Мос на предприятието. Мос е такъв голям животно … Тя включва управление на съдържанието, управление на документи, Търсене, сигурност, насочване към аудитория, управление на проекти, "приказна четиридесет" шаблони, работен поток, конектор за бизнес данни, н. Двойка това с факта, че това е една голяма организация, може да наистина да се възползват от почти всички големи Мос функция и има заложби на един голям проект с предприятие reach и много добри неща случва.

Ние сме изправени пред този проблем отново и отново … Мос е предприятието достигне с неговото предприятие черта поставям, още дори малко сложни клиентите имат твърд време психически усвояване на тези функции, Нека сам, включващи значителна част от тях в ежедневната си практика.

Аз нямам магическо решение на проблема. Вместо това адрес само с първите стъпки, които сме взели с клиента, за да ги води по пътя към успешното дългосрочно приемане.

Приложно поле:

Колкото и аз исках на отбора да занаят един план на проекта, който включва такива важни събития като "PoepleSoft интеграция чрез BDC завършени", "Нов Междуведомствен продукт стартира работен поток пълен" и "Изпълнителен управление KPI приети", Аз трябваше да се разреши за нещо по-малко. Това е не да се каже, че "по-малко" е лош. Всъщност, "по-малко" решихме за първоначалното внедряване е мили напред от където те са били преди да започнем. В нашия случай, "по-малко" се превърна в:

  • Управление на прости документи с помощта на библиотеките с документи, версия контрол и съдържание видове.
  • Ефективно търсене въз основа на типове съдържание и персонализирани предварително търсене (през управлявани свойства, XSLT за производство красиви резултати, н).

Освен по-горе характеристики на предприятието (което означава, че те са били да се разточва на всички отдели и потребители), добавихме следните лъжливо в обхвата мини-проекти:

  • Доказателство на понятие BDC интеграция.
  • Процес на многоетапно и мулти-клон работен поток, създадени чрез SPD.
  • Комплекс формуляр на InfoPath.
  • Настилка на KPI за някои бизнес процес (вероятно HR талант придобиване в нашия случай, Макар че може да се промени).

Тук е не 100% точна, но представител на нашия подход и достатъчни за моята цел тук, което е да се обясни това, което считам за "ефективно" въвеждането на Мос, която ще създаде клиент здраво надолу златни пътя на пълно осиновяване на Мос.

Аз няма да пиша много повече за лъжливо в този запис. Искам да подчертая, че това са част от нашата главна стратегия. Идеята е да се приложат основните документи за управление и търсене функции за всички потребители все още предоставят високо функционални, високо видими и силно представителни примери за други основни Мос функции, които са просто извън възможностите на повечето потребители за усвояване на този ранен етап. Въпреки това, те ще бъдат "там" и един се надява, че други филиали ще знаят от или Научете повече за тях и искате тези характеристики за себе си, което води до по-голямо приемане. Тези изолирани успехи също служат да осигурят нашият екип по продажбите "боеприпаси" за успешно печели второ място, трети и n фаза проекти.

Какво направихме ние въведе и защо?

Като се заселват на управлението на документи и търсене като изходно предприятието изискване, трябваше да започне събирането на данни. Като практически, Това се върти около разбирането им документи и които в крайна сметка съпоставени към разбирането на типове съдържание.

Аз открих, че е трудно да се обясни типове съдържание без визуални помощници. Повече технически фолк могат да тръгна от дискусия за типове съдържание, когато CT на са описани в база данни на термините. "А CT е подобна на таблица на база данни, Тя има колони и колоните са дефинирани от гледна точка на типове данни, но CT типовете данни включват повече от просто число/дата, но също така "избор" и "справка" и други подобни." Можем да говорим за "разширяване" типове съдържание, много като един може да наследи функционалност от базов клас в обектно-ориентирани езици. Това обаче очевидно не е полезно за транспорт отдел администратор човек, който не е технически фон. Т.е., почти всеки, което има значение в Мос внедряването.

Използването на бяла дъска е iffy. Аз съм представи идеята на тип съдържание и съставен блестящ (или поне така изглежда) снимки на типовете съдържание и какво правят те за вас по отношение на търсене и как те могат да бъдат разширени, н. В края, Тя се чувстват като сте включили някои крушки, но бяла дъска картината е бъркотия.

Това ни доведе до нашите текущи и толкова далеч най-ефективната кацане място: Мос пясък сайт, конфигуриран да покаже тези функции.

Използвайки сайта на пясък, ние показваме:

  • Типове съдържание:
    • Създаване на CT с различни типове данни (текст, дата, избор, булев, Търсене, н).
    • Удължаване КАТ чрез създаване на ново КТ, въз основа на родител.
    • Търсене на документи с помощта на CT метаданни.
  • Библиотеки с документи:
    • Асоцииране на един CT с библиотека.
    • Какво се случва, когато ние качване на документ към тази библиотека?
    • Асоцииране на няколко CT с док библиотека.
    • Какво се случва, когато ние качване на документ към тази библиотека?
    • Филтриране и сортиране чрез заглавията на колоните на библиотека с документи.
    • Изгледи на библиотеката на документи:
      • Сортиране
      • Групиране
      • "Бърз запис" (данни: изглед на лист)
      • "Немаркирани данни" (да помогне с миграцията на Мос от други източници на съдържание; повече за това по-долу).

Сайта на пясък:

Проектирахме нашата пясък сайт да бъде постоянна черта в средата за разработване на да се използва за целите на обучението дълго след като приключим проекта и включва няколко артефакти, както е описано:

Типове съдържание:

Определихме следните типове съдържание: Фактура, Поръчка за покупка, Фактура за услуги.

Избрахме фактура и покупка поръчки, защото те са повече или по-универсално под
застана образувания. Всеки в бизнеса разбира, че фактурата е искането за плащане към клиент за сума издаден на определен дата да се заплащат според някои условия на плащане. Това води до естествено определение на КАТ, която нарекохме "фактура за обучение" (да го отличават от всякакъв друг вид фактура). Поръчката за покупка е аналогично лесно определени. Ние също така създава "обучение фактура за услуги" чрез създаване на ново КТ, въз основа на фактура за обучение "" КАТ и добавя само една колона, "услуги".

С по-горе, Ние може да покаже някои основни характеристики на CT на без да задълбавате се опитва да обясни първо, абстрактно понятие; всеки вече разбира, какво имаме предвид под "фактура" и "поръчка за покупка" и вместо да се съсредоточи върху механиката на CT самата.

Потребителски списъци:

CT с колони от тип "справка" посочете към потребителски списък или документ библиотека. Ние използваме това широко и за пясък, Ние създадохме една подкрепа потребителски списък, който съдържа клиенти. Ние качват клиенти, защото тя е лесен концепцията за разбиране и лесно за демонстрират. Фактурата CT има колона, "клиент" Това се определя от тип "справка" това сочи към този списък.

Ние създадохме подобен потребителски списък за управление на "доставчици" за поръчка за покупка"" CT.

Библиотеки с документи:

Ние създадохме две библиотеки с документи: "Фактури" и "Смесени документи".

Ние конфигурирана библиотека с документи фактури за управление само документи от CT тип "Фактура".

Ние конфигурирани на "смесени документи" Библиотека за управление на всички три CT.

Създаване на няколко изгледи, които показват сортиране, филтриране, Фиш и групиране.

Търсене:

Ние определя две нови контролирани свойства и ги съпостави с номер на фактура и клиент.

Създадохме нов сайт за търсене на потребителски предварително и промяна е да се даде възможност на потребителите да търсят "фактури" с помощта на тези две съпоставените свойства.

Промяна на XSLT така че номер на фактурата и клиент, Ако са налични, се появяват в HTML таблица в светъл цвят. Целта тук е да се докаже, че такова форматиране е възможно.

Прилагане на всичко заедно:

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

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

  1. Опишете на смисъла и целта на КАТ, използване на фактури и поръчки за покупка като примери.
  2. Покажи дефиницията на фактурата CT докато едновременно ги увери, че те не трябва да използвате тези екрани, самите, просто вземете понятията.
  3. Отидете на библиотеката с документи на фактурите.
  4. Качване на документ.
  5. Докаже, че клиента падащото наистина е произхождащи от списък по избор.
  6. Добавяне на нов клиент към списъка на клиенти и след това актуализирайте наскоро качените фактура мета данни с новосъздадения клиента.
  7. Превключване към "смесени документи" библиотека и качване на документ. Обясни как системата пита за даден вид документ.
  8. Се върнете към библиотека с документи на фактурите и показват как щракнете върху име на колона промени ред на сортиране.
  9. Демонстрират филтриране на ниво на колона.
  10. Показване на различни изгледи, които показват многостепенното сортиране, филтриране и групиране.
  11. Показване на изгледа на лист с данни.
  12. Обяснява целта на "немаркирани документи" изглед.
  13. Превключване на персонализирани Разширено търсене.
  14. До сега, Наскоро качения документ трябва да има обходен и индексира, така че извършване на търсене, което показва способността да се локализира тази фактура чрез съпоставено свойство.
  15. Ние показваме разликата между търсене по съпоставените свойства срещу. просто търсене на текст.

В този момент, Ние сме повече или по-малко прави с демо. Тя изглежда да предприеме за 30 за да 45 минути, в зависимост от това колко въпроси хора питат.

Ние тогава ги изпрати обратно на бюрата си с "домашна работа". Той се състои от един прост excel електронна таблица, където ние ги помолете да дефинирате за нас какво мислят, че те се нуждаят от гледна точка на КТ в, и двете на високо ниво (само името и служебния цел) колони и типа на данните, те ще се съхранява в колона. Ние не поиска да дефинирате типове данни за колоните в Мос термини, но бизнес термини.

В Резюме:

Ние създадохме пясък околната среда, които можем да използваме да демонстрира някои основни Мос функции, чието обжалване са предприятие широк.

Ние са моделирани лесно разбрани и общи бизнес организации, така че потребителите могат да се съсредоточи върху мъх и не задълбавам на структурите / примери, самите.

Бизнес потребителите се отдалечи от тезите сесии с "домашното" под формата на excel документи, които сега са компетентни да попълват и използват за проектиране на собствени типове съдържание на първо нарязания.

Най-накрая, като извършваме демонстрации във времето, членовете на екипа на клиента, те стават по-способни да прехвърли, демо себе си и като цяло освободи останалата част от нас да работят по по-сложни въпроси, като глобална класификация, сложни работни потоци, BDC и подобни.

МОС: Функционални пример-потребителски тип данни

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

Предприятието изпълнението на Мос за производствена компания с 30+ сайтове и няколко десетки корпоративни отдели.

Бизнес цел:

Въпреки множество бизнес групи (отдели, места, н), някои данни трябва да се поддържа в световен мащаб. За пример, авторитетен главен списък на всички физически места на компанията (e.g. производствените мощности, складови местоположения, офиси за продажба) трябва да се поддържа на централно място.

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

В класификацията на предприятието е било изпълнено с помощта на няколко колекции от сайтове. Бихме искали да се създаде достоверен списък на физически места в WSS списък по избор. След това, когато ние трябва да има колона в типа съдържание (или колона добавя към списък или документ библиотека) които съдържат корпоративни места, Ние ще създадете колона с помощта на справката"" тип данни и точка за този главен списък.

За съжаление, Търсене типове данни трябва да имат достъп до източник списък "локално" което означава, че нашите достоверен списък не може да заема колекции от сайтове.

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

Прилага нов потребителски тип данни прилагат въз основа на SPField и представени като DropDownList в UI, чиито ListItems пренесат от главния списък на WSS.

Ние създадохме нова колекция от сайтове се нарича "http://localhost/EnterpriseData". Там, Ние създадохме списък по избор, наречена "Корпоративни места". Този списък само използва стандартната "заглавие" поле да съдържа списък на действителните корпоративни места.

Една следва няколко дискретни стъпки, за да създадете потребителски тип данни в WSS. Те са:

  1. Дефиниране на клас, който наследява от SPField (един може да наследи от други полета, ако е необходимо).

Тук е кодът за тази:

обществени клас XYZZYCorporateLocationField : SPFieldText
{
обществени XYZZYCorporateLocationField
(SPFieldCollection полета, низ typeName, низ Показвано име)
: база(полета, typeName, Показвано име) { }

обществени XYZZYCorporateLocationField
(SPFieldCollection полета, низ Показвано име)
: база(полета, Показвано име) { }

обществени замени BaseFieldControl FieldRenderingControl
{
Вземи
{
BaseFieldControl контрол = нов XYZZYCorporateLocationFieldControl();
контрол. FieldName = Това.InternalName;
връщане контрол;
} //Вземи
} // fieldrenderingcontrol

обществени замени низ GetValidatedString(обект стойност)
{
Ако (Това.Изисква || стойност. ToString().Е равно(Низ.Празен))
{
хвърлят нов SPFieldValidationException ("Отдел не е присвоен.");
}
връщане база.GetValidatedString(стойност);
} // getvalidatedstring

} // XYZZYCorporateLocation

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

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

защитен замени низ DefaultTemplateName
{
Вземи
{
връщане "XYZZYCorporateLocationFieldControl";
}
} // DefaultTemplateName

обществени замени обект Стойност
{
Вземи
{
EnsureChildControls();
връщане Това.XYZZYCorporateLocationSelector.SelectedValue;
} // Вземи
комплект
{
EnsureChildControls();
Това.XYZZYCorporateLocationSelector.SelectedValue = (низ)Това.ItemFieldValue;
} // комплект
} // замени обект стойност

защитен замени невалидни CreateChildControls()
{

Ако (Това.Поле == Null || Това.ControlMode == SPControlMode.Показване)
връщане;

база.CreateChildControls();

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

Ако (Това.XYZZYCorporateLocationSelector == Null)
хвърлят нов Изключение("ГРЕШКА: Не може да зареди. ASCX файл!");

Ако (!Това.IsPostBack страница.)
{

използване на (SPSite сайт = нов SPSite("http://Localhost/enterprisedata"))
{
използване на (SPWeb уеб = сайт. OpenWeb())
{

Splist.Update() currentList = web. Списъци["Корпоративни места"];

foreach (SPItem XYZZYCorporateLocation в currentList.Items)
{
Ако (XYZZYCorporateLocation["Заглавие"] == Null) «««;

низ theTitle;
theTitle = XYZZYCorporateLocation["Заглавие"].ToString();

Това.XYZZYCorporateLocationSelector.Items.Add
(нов Елемент от списък(theTitle, theTitle));

} // foreach

} // използване на spweb web = site.openweb()
} // използвайки spsite сайт = нови spsite("http://Localhost/enterprisedata")

} // Ако не обратното публикуване

} // CreateChildControls

} // XYZZYCorporateLocationFieldControl

По-горе код основно изпълнява на логиката за попълване на списъка със стойности от WSS потребителски списък, намиращ се на http://localhost/enterprisedata и име "корпоративни отдели".

Аз определено и двата класа в един .cs файл, изготвя и я поставете в GAC (силна изисква, Разбира се).

  1. Изпълнение на контролен шаблон (.ascx) както е показано:

<%@ Контрол Език= "C#" Наследява="Microsoft.SharePoint.Portal.ServerAdmin.CreateSiteCollectionPanel1,Microsoft.SharePoint.Portal,Версия = 12.0.0.0, култура = неутрална,PublicKeyToken = 71e9bce111e9429c" compilationMode= "Винаги" %>
<%
@ Регистрирайте се Tagprefix= "wssawc" Namespace="Microsoft.SharePoint.WebControls" Събрание="Microsoft.SharePoint, Версия = 12.0.0.0, Култура = неутрална, PublicKeyToken = 71e9bce111e9429c" %> <%@ Регистрирайте се Tagprefix= "SharePoint" Namespace="Microsoft.SharePoint.WebControls" Събрание="Microsoft.SharePoint, Версия = 12.0.0.0, Култура = неутрална, PublicKeyToken = 71e9bce111e9429c" %>
<SharePoint:Шаблона за рендиране ИД= "XYZZYCorporateLocationFieldControl" RunAt= "сървър">
<Шаблон>
<ASP:DropDownList ИД= "XYZZYCorporateLocationSelector" RunAt= "сървър" />
</Шаблон>
</
SharePoint:Шаблона за рендиране>

По-горе се записва в c:\Програмата filescommon filesmicrosoft споделениуеб сървър extensions12controltemplates.

  1. Най-накрая, Ние създаване на XML файл да запишете в... 12XML директория. Това е CAML, който определя нашите потребителски тип данни и за моя пример, изглежда така:

<?XML версия="1.0" кодиране="UTF-8" ?>
<
Полета FieldTypes>
<
FieldType>
<
Поле Име="TypeName">CorporateLocations</Поле>
<
Поле Име="ParentType">Текст</Поле>
<
Поле Име="TypeDisplayName">Корпоративни места</Поле>
<
Поле Име="TypeShortDescription">Всички корпоративни XYZZY места, включително производствена или други съоръжения.</Поле>
<
Поле Име="UserCreatable">ВЯРНО</Поле>
<
Поле Име="ShowInListCreate">ВЯРНО</Поле>
<
Поле Име="ShowInDocumentLibraryCreate">ВЯРНО</Поле>
<
Поле Име="ShowInSurveyCreate">ВЯРНО</Поле>
<
Поле Име="ShowInColumnTemplateCreate">ВЯРНО</Поле>
<
Поле Име="FieldTypeClass">Conchango.XYZZYCorporateLocationField, XYZZYCorporateLocationField, Версия = 1.0.0.0, Култура = неутрална, PublicKeyToken = b0b19e85410990c4</Поле>
<
RenderPattern Име="DisplayPattern">
<
Превключване>
<
Израз>
<
Колона />
</
Израз>

<Дело Стойност=""/>

<По подразбиране>
<
HTML>
<![НЕЗАТВОРЕН[
<педя стил = "цвят:Червен"><б>]]>
</
HTML>

<
Колона SubColumnNumber="0" HTMLEncode="ВЯРНО"/>

<HTML><![НЕЗАТВОРЕН[</б></еталониране>]]></HTML>

</
По подразбиране>
</
Превключване>

</
RenderPattern>
</
FieldType>
</
Полета FieldTypes>
Този XML файл добавя потребителски тип данни за вик "Библиотека" и го мачове срещу GAC имаше събрание.

След преместването на всички тези битове на място, iisreset на сървъра и че всички трябва да започнете добре работи.

МОС: Актуализиране на списък по избор

Има много добри примери за актуализиране на списъци по избор чрез SDK. Ето още един.

Бизнес проблем: InfoPath формуляр е проектиран, че позволява на потребителите да въведете онлайн покупка искания. PO заявки номера трябва да бъде традиционно последователност базирани целочислени стойности и изчислява автоматично.

Бизнес решение: Създаване на потребителски списък на Мос, съдържащ две колони: "ControlField" и "ControlValue". Стойност на колоната съдържа следващия номер на заявка за покупка. Обърнете внимание, че родово "контрол" именуване конвенция предвижда бъдещи контрол полета, които могат да се използват, ако е необходимо.

Техническо решение: Създаване на уеб услуга, достъпна на InfoPath клиент. Уеб услугата връща обратно следващия номер на заявка за покупка и актуализира стойността на списъка.

Поуките:

  • При добавянето на тази уеб услуга като източник на данни към формуляра на InfoPath, Открих, че е необходимо да го конвертирате в udc и да го съхранява в библиотека за връзка с данни.
  • Аз също, че е необходимо да разрешите кръст скриптове чрез централните служби администрация // управление на приложения // форма сървър конфигурация.
  • Първи път формуляра се опита за достъп до уеб услугата, отнема известно време и по повод, Тя ще време вън. Аз fiddled с настройките в конфигурацията на сървъра на формата за разширяване на настройките на изчакване и този изглеждам към помагам.

Код:

използване на Система;
използване на System.Web;
използване на System.Web.Services;
използване на System.Web.Services.Protocols;
използване на Microsoft.SharePoint;
използване на System.Configuration;

[Уеб услугата(Namespace = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
обществени клас PoService : System.Web.Services.Уеб услугата
{
обществени PoService () {

//Uncomment определителен член последователи линия, ако използвате проектирани компоненти
//InitializeComponent();
}

/// <Резюме>
/// Получи следващия номер на поръчка от sharepoint po контрол от списъка номер на.
/// Нарастване PO номер в този списък.
/// </Резюме>
/// <Връща></Връща>
[WebMethod]
обществени низ GetNextPoNumber()
{
низ SpPoControlSiteName; // Името на действителната Мос сайт, който подслонява PO контролен списък.
низ SpPoControlListName; // Името на списъка за действителната Мос, съдържащ контролата Po.

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

низ nextPoReqNumber = "xyzzy";

използване на (SPSite сайт = нов SPSite(SpPoControlSiteName))
{
използване на (SPWeb уеб = сайт. OpenWeb())
{

Splist.Update() currentList = web. Списъци[SpPoControlListName];

foreach (SPItem controlItem в currentList.Items)
{

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

INT int_nextPoReqNumber;
int_nextPoReqNumber = Конвертиране.ToInt32(nextPoReqNumber);

int_nextPoReqNumber ;

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

} // Намиране на, четене и актуализиране на PO номера в списъка.


} // използване на spweb web = site.openweb()
} // използвайки spsite сайт = нови spsite("http://Localhost/mizuho")

връщане nextPoReqNumber;

}
}