Category Archives: SharePoint

Способи виправлення неполадок таємничий SharePoint.

Огляд:

Налагодження важко під час розробки настроюваних функціональність для служб Windows SharePoint 3.0 (WSS) або Microsoft Office SharePoint Server (ЛИШАЙНИК). Головним винуватцем є що SharePoint зазвичай поверхні дуже мало діагностичну інформацію на веб-браузера при виникненні помилки. Цей запис у блозі статті описано знайти додаткові створений системою діагностичну інформацію яка часто може надати цей додатковий біт докладно, що одним потрібно для того, щоб визначити корінні причини. Це потім може призвести до вирішення проблеми.

Я використав цю техніку з великим успіхом вирішити інакше таємничий помилки.

Підхід:

SharePoint зберігає великий обсяг інформації Надіcлати журнал в лог-файл у в 12 вулик.

"12 Вулика" зазвичай знаходиться у "C:\Програма FilesCommon відомості SharedWeb сервер Extensions12 ". (Я не впевнений, що це можливо для в 12 вулика, щоб жити в іншому місці, Насправді).

Ідея полягає в тому, щоб знайти поточний файл журналу, змусити повідомлення про помилку а потім швидко відкрити файл журналу. Ці файли журналу характеризуються:

  • Рясне кількість інформації. SharePoint генерує дуже велику кількість діагностичну інформацію і пише що лог-файл дуже швидко. Ви повинні бути швидким, пальцями, щоб захопити його.
  • Кратність. SharePoint не писати до одного файлу журналу, але скоріше генерує декілька файлів журналу в послідовності.
  • Скопіюйте та вставте красиво в MS Excel.

Мій улюблений метод:

  1. Відкрийте провідник windows, вказуючи на 12 hivelogs.
  2. Відсортувати вміст, щоб відобразити за датою зміни (Востаннє першої).
  3. Виділити найбільш поточний файл журналу.
  4. У вікні браузера, змусити помилки відбуваються.
  5. Швидко відкрити поточного лог-файл і скопіюйте його вміст до MS Excel.
  6. Перейти до кінця і проаналізувати відповідні елементи.

Інші примітки:

За промовчанням, Надіcлати журнал розташований у в 12 Реєстр hiveLOGS.

MS Best practices (згідно з Майком T. з Microsoft) держави, що лог-файли повинні бути збережені на окремий жорсткий диск. Один робить це за допомогою Центру адміністрування. Ваш системний адміністратор може зробили це, При цьому буде явно потрібно знайти файл журналу там, а не за промовчанням 12 вулик розташування).

Ця запис вирішує питання, такі як:

  • Не вдалося запустити через внутрішню помилку робочого циклу SharePoint.
  • (більше, щоб бути додані протягом довгого часу)
  • Ця запис була корисною діагностування помилки робочого циклу (Наприклад. "Робочого процесу не вдалося запустити через внутрішню помилку").

ЛИШАЙНИК: Ефективне введення в організації

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

Проводки на цьому сайті мої власні і не обов'язково відображають у Conchango позиції, стратегії або думки.

Огляд:

Ця запис описує деякі довідкову інформацію на великих (3,000 користувачі) Microsoft Office SharePoint Server (ЛИШАЙНИК) свиті, і те, що ми зробили, щоб отримати проект прокатки таким чином, що клієнт не щасливі і твердо по стежці, яка закінчується повне приєднання набір функцій МОСС. Станом на написання запис, Ми є приблизно 50% в комплекті з першого етапу проекту. Як речі прогрес, І/я буду оновлювати цей запис або писати нові записи.

У даному конкретному випадку, Компанія вже встановлена SharePoint Portal Server 2003. IT групи встановлено продукту в своєрідний «давайте подивимося, якщо хто-небудь хвилює" мода. Він був швидко прийнятий багато бізнес-користувачів і стала досить популярною на підприємстві в цілому. Як ви можете собі уявити, Це був не кращий свиті стратегії (який клієнт з готовністю визнає) і коли МОСС прибули на місце події, клієнт вирішив "робити це правильно" і найняв нас, щоб допомогти їм.

Одна з центральних питання перед нами, коли ми почали, реалізація цього проекту була: Як ми можемо ввести МОСС до цього клієнта? Враховуючи, що клієнт вже мали досвід роботи з SharePoint, Ми дивувалися — нам необхідно зробити "Диференціальні" навчання або робити ми запускається з нуля? Після роботи з ключовими користувачів, Ми визначено, що розглядаючи це як зеленому полі проекту має більше сенсу.

Це рішення дали відправною точкою, але залишилося нас з головної вимоги з'ясувати хороша стратегія для розгортання ЛИШАЙНИК на підприємстві. ЛИШАЙНИК є такий великий тварин … Вона включає в себе управління контентом, керування документами, Пошук, Безпека, Аудиторія орієнтації, управління проектами, "казкове сорока" шаблони, робочий процес, бізнес-дані сполучна лінія, д. З'єднайте це з тим, що це великої організації, можна по-справжньому використовувати практично у всіх основних МОСС функцію і у вас є задатки великий проект з підприємство охоплення і багато зручних речей відбувається.

Ми стикаєтесь з цього питання знову і знову … ЛИШАЙНИК має досягти з її підприємства набір функцій підприємства, ще навіть дещо складні клієнти мають важкий час подумки поглинає ті функції, Нехай поодинці включення помітних частку від їх в їх повсякденному житті.

У мене немає магія рішення проблеми. Замість цього я звертаюся тільки перші кроки, які ми взяли з клієнтом, щоб привести їх по шляху до успішної прийняття довгострокових.

Сфера:

Як би я хотів команди, щоб виробити план проекту, який включав такі віхи, як «PoepleSoft інтеграції через BDC завершено», "Нові крос Факультетська продукт запуск робочого процесу повний" - і "виконавчий управління КПІ", Я повинен був погодитися на те, що менш. Це не означає, що "менше" погано. Насправді, "менше" що ми вирішили для початкового свиті була милях попереду, де вони були, перш ніж ми почали. У нашому випадку, "менше" перетворився:

  • Управління просте документами за допомогою бібліотеки документів, версія контролю та вміст типів.
  • Ефективний пошук на основі типів вмісту та налаштувати розширений пошук (Via керованими властивостями, XSLT зробити досить результати, д).

На додаток до вище особливості цілого підприємства (Це означає, що вони повинні були бути поширена на всіх кафедр та користувачів), Ми додали ці singleton в сферу міні проекти:

  • Доказ концепції інтеграції каталогу бізнес-даних.
  • Багатоступінчастий і багатогалузевою робочий процес, створений за допомогою СПД.
  • Складної форми InfoPath.
  • Наплавлення KPI для деяких бізнес-процесу (ймовірно HR талант на придбання в нашому випадку, Хоча це може змінитися).

Сфера тут є не 100% точний, але достатньо для моїх цілей тут і представник нашого підходу, що таке пояснити, що я вважаю "ефективного" впровадження МОСС, яка буде встановлено клієнт твердо вниз шлях золоті повний МОСС прийняття.

Я не пишу багато іншого про singleton в цьому записі. Хочеться відзначити, що дані є частиною нашої надмірно вигинаючи стратегії. Ідея полягає в тому, щоб реалізувати основного документа управління і пошук функції всім користувачам, але забезпечують дуже функціональна, висока видимий і високо представник приклади інших основних МОСС функцій, які є просто за можливість більшість користувачів поглинати на цьому ранньому етапі. Однак, вони будуть "там" і один сподівається, що інші бізнес-підрозділів буде знати, з або дізнатися про них і потрібні ці функції для себе, призводить до більшої усиновлення. Ці історії успіху singleton також служити забезпечити наших продажу команди "боєприпаси" за другим успішно перемогу, Третій і n фазний проекти.

Те, що ми представляємо і чому?

Мають оселилися на керування документами та пошуку як базова лінія цілого підприємства вимога, нам необхідно почати збір подробиці. В практичному плані, Це обертається навколо розуміння своїх документів і що в остаточному підсумку зіставлено розуміння типи вмісту.

Я знайшов це важко пояснити типи вмісту без візуального помічники. Більш технічної народного можемо піти від дискусії про типи вмісту, коли CT описані в базі даних умов. "A CT схожий на таблицю, вона має колони і колони визначаються з точки зору типів даних, але CT типів даних включають в себе більше, ніж просто ціле число/дата, але також "вибір" "і" Підстановка"" і т. д." Ми можемо говорити про "розширення" типи вмісту, само, як один можуть наслідувати функціональність базового класу в об'єктно-орієнтованої мови. Однак це явно не корисно для перевезення департамент admin особою, не технічна освіта. Тобто, майже все, що має значення у свиті МОСС.

За допомогою біла дошка це ненадійний. Я представив ідея типу вмісту та гужовий Брілліант (або так вони, схоже) типи вмісту та що вони роблять для вас з точки зору пошуку і як вони можуть бути розширені фотографії, д. Врешті-решт, це здаватися, спочатку ввімкнути деякі лампи, отримане зображення біла дошка, але безлад.

Це привело нас до наших поточних і так далеко найбільш ефективних посадочне місце: ЛИШАЙНИК пісочниці сайту, настроєного для відображення цих функцій.

За допомогою сайту пісочниці, Ми демонструємо:

  • Типи вмісту:
    • Створення КТ з декількох типів даних (текст, Дата, вибір, логічне значення, Підстановка, д).
    • Розширення КТ, створюючи новий CT основі батько.
    • Пошук документів за допомогою КТ метаданих.
  • Бібліотеки документів:
    • Зв'язування одного КТ з бібліотекою.
    • Що відбувається, коли ми Завантажити документ до цієї бібліотеки?
    • Пов'язуючи кілька КТ з doc бібліотека.
    • Що відбувається, коли ми Завантажити документ до цієї бібліотеки?
    • Добір і сортування через заголовки стовпців у doc-lib.
    • Бібліотека режими перегляду документа:
      • Сортування
      • Групування
      • "Швидка запис" (перегляду аркуша даних показати)
      • "Без тегів даних" (допомогти з міграції МОСС з інших джерел вмісту; Докладніше про це нижче).

Сайт пісочниці:

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

Типи вмісту:

Ми визначили такі типи вмісту: Рахунок-фактура, Замовлення на закупівлю, Послуги рахунка-фактури.

Ми відібрали рахунка-фактури та придбання замовлення, тому, що вони є більш-менш універсально під
стояли юридичних осіб. Кожен у бізнесі розуміє, що фактура вимогою про оплату до на клієнт для в сума в обіг певним Дата сплачується згідно з деякими умови оплати. Це призводить до природних визначення 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, де ми просити їх, щоб визначити для нас, що вони думають, що вони мають потребу в плані CT, обидва на високому рівні (просто ім'я і ділових цілях) а також стовпців і типу даних, вони б зберегти у стовпці. Ми не попросити їх визначити типи даних стовпців в умови для ЛИШАЙНИКА, але бізнес-термінів.

У результаті:

Ми створили пісочницю навколишнього середовища, які ми можемо використовувати, щоб продемонструвати деякі основні риси МОСС, чиї апеляції є цілого підприємства.

Ми є змодельована зрозумілими і загальні суб'єктів господарювання, так що користувачі можуть зосередитися на МОСС і не загрузнути про осіб, на / приклади, себе.

Бізнес-користувачів відійти від тез сесій з "домашнє завдання" у вигляді excel документи, які вони зараз є компетентними, щоб заповнити і використовувати для проектування свої власні типи вмісту першого вирізом.

Нарешті, як ми виконують демонстрації з часом, Члени команди клієнта, самі стали більш здатними виконувати вперед, демо в себе і взагалі вивільнити до решти з нас працювати на більш складних питань, Наприклад, глобальний таксономії, комплекс робочі процеси, BDC і тому подібне.

ЛИШАЙНИК: Функціональних прикладів-настроюваний тип даних

Бізнес-сценарій:

Впровадження корпоративної лишайника для виробництва компанії з 30+ сайти і кількох десятків корпоративних відділів.

Мета бізнес:

Незважаючи на безліч бізнес-групи (відділи, розташування, д), певних даних повинна підтримуватися на глобальному рівні. Наприклад, авторитетний головний список всіх фізичного місця розташування компанії (Наприклад. виробничі потужності, склад розташувань, офіси продажів) повинні бути розташовані в центрі міста.

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

Таксономія підприємство було реалізовано за допомогою кількох колекцій сайтів. Хотілося б створити авторитетний перелік фізичного місця розташування в настроюваного списку WSS. Потім, коли нам потрібні є стовпець у типом вмісту (або стовпець додано до списку або doc бібліотека) які містяться корпоративних розташувань, Ми б створити стовпець, за допомогою "підстановки" тип даних і точки до цього шаблону списку.

На жаль, типи даних підстановки потрібно зайти "локально вихідним список" Це означає, що наші авторитетний список не може охоплювати колекцій сайтів.

Технічні рішення:

Реалізувати новий тип настроювані дані реалізована на основі SPField і представлено у вигляді DropDownList в інтерфейсі користувача, чия ListItems заповнити з зведеного списку WSS.

Ми створили нові колекції сайтів, називається "http://localhost/EnterpriseData". Там, Ми створили за настроюваним списком, названий "Корпоративні місцях". Цей список просто використовує стандартні "титул" поле має містити список фактичні корпоративних місць.

Одна йде кілька дискретних кроки, щоб створити містить настроюваний тип даних у WSS. Вони є:

  1. Визначити клас, який успадковує від SPField (один може успадковувати від інших полів, якщо це вимагається).

Ось код для цього:

громадських клас XYZZYCorporateLocationField : SPFieldText
{
громадських XYZZYCorporateLocationField
(SPFieldCollection поля, рядок параметр typeName, рядок displayName)
: база(поля, параметр typeName, displayName) { }

громадських XYZZYCorporateLocationField
(SPFieldCollection поля, рядок displayName)
: база(поля, displayName) { }

громадських перевизначення BaseFieldControl FieldRenderingControl
{
отримати
{
BaseFieldControl керування = нові XYZZYCorporateLocationFieldControl();
керування. Ім'я поля = Це.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 Web = сайт. OpenWeb())
{

SPList currentList = web. Списки["Корпоративні місцях"];

foreach (SPItem XYZZYCorporateLocation у currentList.Items)
{
Якщо (XYZZYCorporateLocation["Назва"] == Null) Продовжити;

рядок theTitle;
theTitle = XYZZYCorporateLocation["Назва"].ToString();

Це.XYZZYCorporateLocationSelector.Items.Add
(нові Елемент списку(theTitle, theTitle));

} // foreach

} // за допомогою spweb веб = site.openweb()
} // за допомогою spsite сайту = новий spsite("http://Localhost/enterprisedata")

} // Якщо не на передавання

} // CreateChildControls

} // XYZZYCorporateLocationFieldControl

Наведений вище код в основному реалізовує логіку для заповнення DropDownList з значень від 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" Простір імен="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:RenderingTemplate ID= "XYZZYCorporateLocationFieldControl" runat= "сервер">
<Шаблон>
<ASP:DropDownList ID= "XYZZYCorporateLocationSelector" runat= "сервер" />
</Шаблон>
</
SharePoint:RenderingTemplate>

Вище зберігається в с:\Програма filescommon відомості sharedweb сервер extensions12controltemplates.

  1. Нарешті, Ми створити XML-файл для збереження в на... 12XML каталог. Це CAML, який визначає наші настроюваним типом даних і для мого прикладу, має такий вигляд::

<?XML версія="1.0" кодування="UTF-8" ?>
<
FieldTypes>
<
FieldType>
<
Поле Ім’я="Параметр TypeName">CorporateLocations</Поле>
<
Поле Ім’я="Батьківський тип">Текст</Поле>
<
Поле Ім’я="TypeDisplayName">Корпоративні розташувань</Поле>
<
Поле Ім’я="TypeShortDescription">Всі корпоративні XYZZY місцях включаючи виробником або інших об'єктів.</Поле>
<
Поле Ім’я="UserCreatable">ПРАВДА</Поле>
<
Поле Ім’я="ShowInListCreate">ПРАВДА</Поле>
<
Поле Ім’я="ShowInDocumentLibraryCreate">ПРАВДА</Поле>
<
Поле Ім’я="ShowInSurveyCreate">ПРАВДА</Поле>
<
Поле Ім’я="ShowInColumnTemplateCreate">ПРАВДА</Поле>
<
Поле Ім’я="FieldTypeClass">Conchango.XYZZYCorporateLocationField, XYZZYCorporateLocationField, Версія = 1.0.0.0, Культура = нейтральні, PublicKeyToken = b0b19e85410990c4</Поле>
<
RenderPattern Ім’я="DisplayPattern">
<
Перемикач>
<
Аргумент вираз>
<
Стовпець />
</
Аргумент вираз>

<Випадок Значення=""/>

<За промовчанням>
<
HTML>
<![CDATA[
<охоплюють стиль = "колір:Червоний"><b>]]>
</
HTML>

<
Стовпець SubColumnNumber="0" HTMLEncode="ПРАВДА"/>

<HTML><![CDATA[</b></Тривалість>]]></HTML>

</
За промовчанням>
</
Перемикач>

</
RenderPattern>
</
FieldType>
</
FieldTypes>
Цей XML-файл додає за настроюваним типом даних WSS "бібліотека" і його матчі проти GAC мав Асамблеї.

Після переміщення всіх цих бітів на місце, iisreset на сервері і він має всі приступити до роботи красиво.

ЛИШАЙНИК: Оновлення за настроюваним списком

Є багато добрих прикладів оновлення настроювані списки розсилки за допомогою SDK. Ось ще один.

Бізнес-завдання: Форма InfoPath був розроблений, що дозволяє користувачам вводити онлайн придбати заявки. PO реквізиції номери повинні бути традиційні послідовності на основі цілі числа та розраховується автоматично.

Бізнес-рішення: Створити Настроюваний список МОСС містить два стовпці: "ControlField" і "ControlValue". Стовпці «значення» містить на наступний номер заявки на придбання. Зверніть увагу, що видових "контроль" іменуванні забезпечує для майбутніх керуючих полів, які можуть бути використані в міру необхідності.

Технічні рішення: Створити веб-сервіс до програми InfoPath клієнта. Веб-служба повертає назад на наступний номер заявки на придбання та оновлює значення зі списку.

Вивчені уроки:

  • Під час додавання веб-служба як джерело даних для форми InfoPath, Я визнав за необхідне перетворити його на УДК і зберігати його в бібліотеці зв'язків даних.
  • Я також визнав за необхідне дозволити міждоменний сценарії через Центральний служби адміністрування // керування додатками // форми конфігурації сервера.
  • Вперше у формі намагалися отримати доступ до веб-служби, Це займе якийсь час і з нагоди, Це було б тайм-аут. Я грав на скрипці з настройками у вигляді сервер конфігурації розширити параметри часу очікування і які, здавалося, допомогти.

Код:

за допомогою Система;
за допомогою System. Web;
за допомогою System.Web.Services;
за допомогою System.Web.Services.Protocols;
за допомогою Microsoft.SharePoint;
за допомогою System.Configuration;

[Веб-служба(Простір імен = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
громадських клас PoService : System.Web.Services.Веб-служба
{
громадських PoService () {

//Розкоментуйте наступний рядок, якщо за допомогою розроблений компонентів
//InitializeComponent();
}

/// <резюме>
/// Отримати наступний PO номер від po номер керування списком sharepoint.
/// Приріст PO номер в цьому списку.
/// </резюме>
/// <Повертає></Повертає>
[WebMethod]
громадських рядок GetNextPoNumber()
{
рядок SpPoControlSiteName; // Ім'я фактичні МОХОМ сайту, на якому списку керування PO.
рядок SpPoControlListName; // Ім'я фактичні МОХОМ список, який містить керування Po.

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

рядок nextPoReqNumber = "xyzzy";

за допомогою (SPSite сайт = нові SPSite(SpPoControlSiteName))
{
за допомогою (SPWeb Web = сайт. OpenWeb())
{

SPList 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 веб = site.openweb()
} // за допомогою spsite сайту = новий spsite("http://Localhost/mizuho")

повернення nextPoReqNumber;

}
}