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

Устранение неполадок загадочные ошибки SharePoint.

Обзор:

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

Я использовал этот метод с большим успехом для решения иначе загадочные ошибки.

Подход:

SharePoint сохраняет большой объем информации для диагностики журнала в файле журнала в 12 куст.

«12 улей" обычно располагается в «C:\Программа FilesCommon FilesMicrosoft SharedWeb сервера Extensions12». (Я не уверен, если это возможно для 12 улей, чтобы жить где-нибудь еще, На самом деле).

Идея заключается в том, чтобы найти текущий файл журнала, силу ошибку и затем быстро открыть файл журнала. Эти файлы журнала, характеризуются:

  • Обильное количество информации. SharePoint создает очень большое количество диагностических сведений и записывает его в файл журнала очень быстро. Вам нужно быть быстрым с пальцами, чтобы захватить его.
  • Кратность. SharePoint не писать в один файл журнала, но скорее создает несколько файлов журнала в последовательности.
  • Скопируйте и вставьте красиво в MS Excel.

Мой любимый метод:

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

Другие заметки:

По умолчанию, Журнал диагностики расположен в 12 Каталог hiveLOGS.

Рекомендации по использованию MS (Согласно Майк 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. ИТ-группа устанавливался в своего рода «Давайте посмотрим, если кто-то заботится" моды. Он был быстро принят многими бизнес-пользователей и стал очень популярным на предприятии в целом. Как вы можете себе представить, Это была не лучшая стратегия внедрения (который клиент с готовностью признает) и когда Мосс прибыл на место происшествия, клиент решил "сделать это правильно" и нанял нас помочь им.

Одним из центральных вопросов, стоящих перед нами, когда мы начали осуществление этого проекта было: Как мы представляем Мосс этому клиенту? Учитывая, что клиент уже имел опыт работы с SharePoint, мы гадали — нам нужно сделать «дифференциальный" обучение или же мы начинаем от земли вверх? После работы с ключевыми пользователями, Мы определили, что рассматривая это как зеленое поле проекта, сделал больше чувства.

Это решение дал отправной точки, но до сих пор оставил нас с основным требованием выяснить хорошей стратегией для выкатывания Мосс для предприятия. Мосс является такой большой животных … Она включает в себя управление контентом, Управление документами, Поиск, безопасность, Выбор целевой аудитории, Управление проектами, «Потрясающе сорок" шаблоны, рабочий процесс, разъем передачи данных бизнес, и т.д.. Соедините это с тем, что это большой организации, можно действительно используют практически все крупные Мосс функция и у вас есть задатки большой проект с предприятия и много хороших вещей происходит.

Мы столкнулись с этой проблемой снова и снова … Мосс имеет предприятия достичь с его предприятием набор функций, Тем не менее даже несколько сложные клиенты имеют трудное время мысленно поглощая эти функции, Пусть только включение ощутимый часть из них в их повседневной.

У меня нет волшебной решение проблемы. Я вместо этого адрес только первые шаги, которые мы взяли с клиентом, чтобы привести их по пути к успешному принятию долгосрочных.

Сфера:

Как я хотел, команда может создать план проекта, который включал такие вехи, как «PoepleSoft интеграции через BDC завершено», «Новые межведомственные продукта запуска рабочего процесса полный" и «Руководство КПИ принято», Мне пришлось согласиться на что-то менее. Это не сказать что «меньше" Это плохо. На самом деле, «меньше" что мы решили для первоначального развертывания был опережает где они были прежде, чем мы начали. В нашем случае, «меньше" превратился в:

  • Простой документ управления с использованием библиотеки документов, версия элемента управления и содержимого типы.
  • Эффективный поиск на основе типов контента и настроить предварительный поиск (через управляемые свойства, XSLT производить довольно результаты, и т.д.).

Помимо указанных выше особенностей корпоративного (означает, что они должны были быть развернута для всех ведомств и пользователей), Мы добавили следующие Синглтон в области мини проектов:

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

Область здесь не является 100% Точная, но представитель нашего подхода и достаточных для моих целей здесь, который должен объяснить, что я считаю, чтобы быть эффективным"" Введение мха, который установит клиент твердо вниз Золотой путь полного усыновления Мосс.

Я не буду писать гораздо больше о singleton в этой записи. Я хочу указать на то, что они являются частью нашей всеобъемлющей стратегии. Идея заключается в реализации основной документ управления и поиска возможностей для всех пользователей, но обеспечивают весьма функциональный, высокая видимым и весьма представительной примеры других основных функций MOSS, которые просто за большинство пользователей способность поглощать на этой ранней стадии. Однако, они будут «вне там" и один надеется, что другие подразделения будут знать о или узнать о них и хотят эти функции для себя, приводит к принятию более. Наш отдел продаж «боеприпасов также служить эти истории успеха Синглтон" для успешно, выиграв второй, Третий и n фазы проектов.

Что мы представляем и почему?

Обосновавшись на управление документами и поиск как требование Корпоративный базовый, нам необходимо начать собирать детали. С практической точки зрения, Это вращалась вокруг понимания их документы и что в конечном итоге сопоставлены к пониманию типов контента.

Я обнаружил, что это трудно объяснить типы контента без визуальные помощники. Более технические народные может уйти от дискуссии о типах контента при КТ описаны в терминах баз данных. «КТ похож на таблицы базы данных, Он имеет столбцы и столбцы определяются в терминах типов данных, но типы данных КТ включают более чем просто целое число/Дата, но также «выбор" и «подстановки" и тому подобное." Мы можем говорить о «расширении" типы контента, так же, как одно может наследовать функциональность от базового класса в объектно-ориентированных языках. Однако это явно не полезно для человека администратора Департамент транспорта, который не имеет технических фона. Т.е., почти все, что имеет значение в свитке Мосс.

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

Это привело нас к нашему месту посадки текущего и так далеко наиболее эффективным: Мосс Песочница узел настроен Показать эти особенности.

С помощью сайта Песочница, Мы демонстрируем:

  • Типы контента:
    • Создание CT с несколькими типами данных (текст, Дата, Выбор, Логическое значение, Поиск, и т.д.).
    • Расширение CT, создавая новый CT, основанный на родителей.
    • Поиск документов с помощью метаданных CT.
  • Библиотеки документов:
    • Связывание одного КТ с библиотекой.
    • Что происходит, когда мы отправить документ в библиотеке?
    • Связывание нескольких КТ с библиотекой doc.
    • Что происходит, когда мы отправить документ в библиотеке?
    • Фильтрация и сортировка через заголовки столбцов в doc lib.
    • Представления библиотеки документов:
      • Сортировка
      • Группировка
      • «Быстрый вход" (представление листа данных)
      • «Без тегов данных" (чтобы помочь с миграцией Мосс из других источников контента; Подробнее об этом ниже).

На сайте Песочница:

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

Типы контента:

Мы определили следующие типы контента: Счет-фактура, Заказ на покупку, Обслуживание счета.

Мы выбрали порядок счета и покупки, потому что они имеют более или менее универсальные под
стоял сущности. Все в бизнесе понимает, что фактура является требование на оплату Клиент для сумма Выпущенный на определенный Дата оплачивается в соответствии с некоторыми условия оплаты. Это приводит к естественной определение CT, который мы назвали «учебные счета" (чтобы отличить его от любого другого вида счета-фактуры). Аналогичным образом легко определяется заказа на покупку. Мы также создали счет услуги обучения»" создавая новый CT, основанный на счет обучения»" КТ и добавлен только один столбец, «Услуги».

С выше, Теперь мы можем продемонстрировать некоторые ключевые особенности CT не увязая пытается объяснить абстрактное понятие, впервые; все уже понимают, что мы подразумеваем под «счет-фактура" и «заказ на покупку" и вместо этого возможность сосредоточиться на механике CT сам.

Настраиваемые списки:

КТ с столбцами типа «подстановки" Укажите пользовательский список или библиотеку документов. Мы используем это широко и для песочницы, Мы создали один пользовательский список, который содержит клиентов. Мы выбрали клиентов, потому что это понятие легко понять и легко продемонстрировать. Счет-фактура CT имеет столбец, "клиента" определенного типа «подстановки" Это указывает на этот список.

Мы создали аналогичные настраиваемый список для управления «поставщиков" для заказа на покупку»" CT.

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

Мы создали две библиотеки документов: «Счета-фактуры" и «Смешанные документов».

Мы настроили библиотеки документов счета-фактуры для управления только документы типа КТ «Фактура».

Мы настроили «смешанные документы" Библиотека для управления все три CT.

Создать несколько представлений, которые показывают, сортировка, Фильтрация, лист данных и группировка.

Поиск:

Мы определены два новых управляемых свойств и сопоставить их клиентами и номер счета-фактуры.

Мы создали новый сайт поиск индивидуальных заранее и изменить его, чтобы пользователи могли искать «счета-фактуры" используя эти два сопоставленных свойств.

Изменить XSLT, чтобы номер счета-фактуры и клиента, при их наличии, появляются в HTML-таблицу в яркий цвет. Цель здесь заключается в том, чтобы продемонстрировать, что такое форматирование возможно.

Положить все это вместе:

Мы организуем для ключевых пользователей принять участие в демо-версию.

Мы следуем этой простой скрипт:

  1. Описать смысл и цель CT, использование счетов и заказов на покупку в качестве примеров.
  2. Показать определение КТ счета-фактуры при одновременно заверив их, что они не должны использовать эти экраны, сами, просто забрать концепции.
  3. Перейдите к библиотеке документов счетов-фактур.
  4. Загрузить документ.
  5. Продемонстрировать, что заказчик раскрывающемся действительно поступает из настраиваемого списка.
  6. Добавить нового клиента в список клиентов, а затем обновить недавно загруженных счета мета данных с вновь созданной заказчиком.
  7. Перейти к «смешанные документы" Библиотека и загрузить документ. Объяснить, каким образом система запрашивает тип документа.
  8. Вернитесь к библиотеке документов фактуры и показать, как нажав на имя столбца изменяется порядок сортировки.
  9. Демонстрации фильтрации уровня столбца.
  10. Показать разные представления, которые демонстрируют Многоуровневая сортировка, Фильтрация и группировка.
  11. Показать представление данных листа.
  12. Объясните цель «расставленными документов" вид.
  13. Перейти к настроить расширенный поиск.
  14. В настоящее время, Недавно отправленный документ должен обход и индексирование, так что выполните поиск, который демонстрирует способность найти что счета через сопоставленного свойства.
  15. Мы продемонстрировать разницу между поиском через сопоставленные свойства vs. просто поиск текста.

В этой точке, Мы более или менее сделано с демо. Кажется чтобы занять около 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, при;
} // набор
} // переопределить объект значение

Защита Переопределение void CreateChildControls()
{

Если (Это.Поле == значение NULL || Это.ControlMode == SPControlMode.Дисплей)
возвращение;

база.CreateChildControls();

Это.XYZZYCorporateLocationSelector =
(DropDownList)FindControl TemplateContainer.(«XYZZYCorporateLocationSelector");

Если (Это.XYZZYCorporateLocationSelector == значение NULL)
бросать Новые функции Исключение(«ОШИБКА: Не удается загрузить. ASCX-файл!");

Если (!Это.IsPostBack страницы.)
{

использование (SPSite сайта = Новые функции SPSite(«http://localhost/enterprisedata"))
{
использование (SPWeb веб сайт =. OpenWeb())
{

SPList currentList = web. Списки[«Корпоративный места"];

по каждому элементу (SPItem XYZZYCorporateLocation в currentList.Items)
{
Если (XYZZYCorporateLocation["Название"] == значение NULL) продолжить;

Строка theTitle;
theTitle = XYZZYCorporateLocation["Название"].ToString();

Это.XYZZYCorporateLocationSelector.Items.Add
(Новые функции ListItem(theTitle, theTitle));

} // по каждому элементу

} // с помощью веб-spweb = site.openweb()
} // используя сайт spsite = новые spsite(«http://localhost/enterprisedata»)

} // Если не обратной передачи

} // CreateChildControls

} // XYZZYCorporateLocationFieldControl

Приведенный выше код в основном реализует логику для заполнения DropDownList с ценностями из пользовательского списка WSS, расположен в http://localhost/enterprisedata и именем «Корпоративные отделы».

Я определил обоих классов в одном CS-файл, скомпилировал его и положил его в глобальный кэш сборок (сильный требуется, Конечно).

  1. Реализация шаблона элемента управления (.ASCX) как показано:

<%@ Управления Язык= "C#" Наследует="Microsoft.SharePoint.Portal.serveradmin.CreateSiteCollectionPanel1,Microsoft.SharePoint.Portal,Версия = 12.0.0.0, культура = neutral,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>

Выше сохраняется в c:\Программа filescommon filesmicrosoft sharedweb сервера 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">
<
Переключатель>
<
Expr>
<
Колонка />
</
Expr>

<Дело Значение=""/>

<По умолчанию>
<
HTML>
<![CDATA[
<Span style = "цвет:Красный»><b>]]>
</
HTML>

<
Колонка SubColumnNumber="0" HTMLEncode="ПРАВДА"/>

<HTML><![CDATA[</b></диапазон>]]></HTML>

</
По умолчанию>
</
Переключатель>

</
RenderPattern>
</
FieldType>
</
FieldTypes>
Этот XML-файл добавляет тип пользовательских данных WSS «Библиотека" и матчи против ПКК был Ассамблеи.

После переезда все эти биты на место, IISRESET на сервере и это все должны начать работать красиво.

МОСС: Обновление настраиваемого списка

Есть много хороших примеров обновления пользовательских списков через SDK. Вот еще один.

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

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

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

Уроки:

  • При добавлении этой веб-службы в качестве источника данных для формы InfoPath, Я счел необходимым преобразовать его в udc и хранить его в библиотеку подключений к данным.
  • Я также счел необходимым для включения междоменного сценария через Центральный Услуги администрации // Управление приложениями // Форма Конфигурация сервера.
  • Впервые форме пытался получить доступ к веб-службе, Это занимает некоторое время и по случаю, Это будет время ожидания. Я fiddled с параметрами конфигурации сервера формы расширить параметры времени ожидания и, казалось, чтобы помочь.

Код:

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

[WebService(Пространство имен = «http://www.Conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
государственные класс PoService : System.Web.Services.WebService
{
государственные PoService () {

//Раскомментируйте следующую строку при использовании разработаны компоненты
//Метод 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 currentList = web. Списки[SpPoControlListName];

по каждому элементу (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/Мидзухо")

возвращение nextPoReqNumber;

}
}