четверг, 20 ноября 2008 г.

DataViewWebPart insert trouble

Проблема возникла из ниоткуда, при стандартном развертывании узла из нашего шаблона на котором содержались веб части

DataViewWebPart и ListFormWebPart происходила ошибка при обращении к данной странице, самое смешное что на другой странице при использовании данного метода все работало. Так что пришлось применить жесткий Хак, создать обработчик на создание страниц 

OnActivated(

SPFeatureReceiverProperties properties) и в коде данного метода использовать методику Cut & Paste для изменения кода страницы. Проблема была в DataViewWebPart в чем там дело мы так и не разобрались так что пришлось сделать так, а не через обьектную модель WSS.

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

// Return a SharePoint list filtered by query as a data source

static SPDataSource GetDataSource(string dataSourceId, string webUrl, SPList list, string query, uint maximumRow)

{

SPDataSource dataSource = new SPDataSource();

dataSource.UseInternalName =

true;

dataSource.ID = dataSourceId;

dataSource.DataSourceMode =

SPDataSourceMode.List;

dataSource.List = list;

dataSource.SelectCommand =

"<View>" + query + "</View>";

Parameter listIdParam = new Parameter("ListID");

listIdParam.DefaultValue = list.ID.ToString(

"B").ToUpper();

Parameter maximumRowsParam = new Parameter("MaximumRows");

maximumRowsParam.DefaultValue = maximumRow.ToString();

QueryStringParameter rootFolderParam = new QueryStringParameter("RootFolder", "RootFolder");

dataSource.SelectParameters.Add(listIdParam);

dataSource.SelectParameters.Add(maximumRowsParam);

dataSource.SelectParameters.Add(rootFolderParam);

dataSource.UpdateParameters.Add(listIdParam);

dataSource.DeleteParameters.Add(listIdParam);

dataSource.InsertParameters.Add(listIdParam);

return dataSource;

}

// Create or Update a DataView programmatically

public static bool CreateOrUpdateDataViewWebpart(string webUrl, string listName, string pageUrl,

string xslLink,

string zoneName,

string webPartName,

string titleUrl,

bool needsUpdate,

string query,

uint index,

uint maximumRow,

PersonalizationScope personalizationScope

)

{

bool viewCreatedOrUpdated = false;

System.Web.UI.WebControls.WebParts.

WebPart wp = null;

wsswp.

DataFormWebPart dataFormWebPart = null;

using (SPSite site = new SPSite(webUrl))

using (SPWeb web = site.OpenWeb())

{

web.AllowUnsafeUpdates =

true;

SPList list = web.Lists[listName];

wsswp.

SPLimitedWebPartManager wpManager = web.GetLimitedWebPartManager(pageUrl, personalizationScope);

foreach (Microsoft.SharePoint.WebPartPages.WebPart wpTemp in wpManager.WebParts)

{

if (String.Compare(webPartName, wpTemp.Title, true) == 0)

{

wp = wpTemp;

break;

}

}

string dataSourceId = webPartName;

if (wp == null)

{

// Create a webpart

dataFormWebPart =

new wsswp.DataFormWebPart();

dataFormWebPart.TitleUrl = titleUrl;

dataFormWebPart.ZoneID = zoneName;

dataFormWebPart.Title = webPartName;

dataFormWebPart.XslLink = xslLink;

SPDataSource dataSource = GetDataSource(dataSourceId, webUrl, list, query, maximumRow);

dataFormWebPart.DataSources.Add(dataSource);

wpManager.AddWebPart(dataFormWebPart, webPartName, (

int)index);

viewCreatedOrUpdated =

true;

}

else

{

// Update an existing webpart

if (needsUpdate)

{

dataFormWebPart = (wsswp.

DataFormWebPart)wp;

dataFormWebPart.TitleUrl = titleUrl;

dataFormWebPart.DataSourceID =

string.Empty;

SPDataSource dataSource = GetDataSource(dataSourceId, webUrl, list, query, maximumRow);

dataFormWebPart.DataSources.Clear();

dataFormWebPart.DataSources.Add(dataSource);

wpManager.SaveChanges(dataFormWebPart);

viewCreatedOrUpdated =

true;

}

}

return viewCreatedOrUpdated;

 

}

}

вторник, 18 ноября 2008 г.

MOSS 2007 search trouble

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

Сегодня отменили параметр в политике для учетки от которой работал обходчик содержимого поискового модуля. Параметр (Автоопределение прокси сервера) и все заработало.

Мораль создавая служебные записи для служб используйте отдельный OU в AD и применяйте системные политики с осторожностью.

четверг, 13 ноября 2008 г.

HelpDesck WSS Template

Скачать можно тут

WSS HelpDesk Template

Введение

Приложение WSS HelpDesk Template (в дальнейшем приложение) предназначено для использования в среде Microsoft Windows Sharepoint Services 3.0 цель данного приложения обеспечить качественную техническую поддержку заявок пользователей и использование стандартных средств в окружении Microsoft Windows.

Возможности приложения

  • Создание запросов пользователей
  • Назначение категории важности
  • Назначение статуса задачи
  • Назначение важности
  • Назначения исполнителя
  • Создание скриншотов экрана из броузера
  • Редактирование назначаемых параметров
  • Форум поддержки пользователей

Системные Требования

Минимальные системные требования для установки на сервере:

  • Установленный Windows Sharepoint Services 3.0  или Microsoft Office SharePoint Server 2007

Минимальные системные требования для клиентов:

  • Windows XP и выше (возможны и другие системы, но необходима установленная библиотека GDI+)
  • Internet Explorer 6.0
  • Включенные компоненты ActiveX


Установка приложения

Установка приложения происходит с помощью, идущего в пакете с программой инсталлятора

Install.cmd

Перед его запуском необходимо установить WSS или MOSS и после этого перейти в административный узел.

clip_image002

Настройте приложение указав необходимые параметры для учетной записи

clip_image004

 

Перейдите по ссылке для выбора шаблона приложенияclip_image006

Выберите необходимый шаблон

clip_image007

И переходите по адресу  данного сайта.


После этого настройте списки:

  •  Категории
  • Компания

  • Важность

  • Статус

В соответствии с вашим окружением.

Для пользователя

После создания запроса выберите изменить элемент и щелкните по надписи Загрузить снимок экрана

clip_image009

 

Настройка

При использовании программы возможен выбор 2 схем аутентификации

  • FBA – Form Based Authentification, применяется когда большинство клиентов являются внешними по отношению к вашей организации
  • Integrated Windows Authentification – Применяется когда вы внедряете приложение в корпоративной сети (AD environment)

Процедура настройки FBA описана на блоге в статье http://mossdevel.blogspot.com/2008/11/wss.html

Integrated Windows Authentification настраивается по умолчанию при создании узла WSS.

Благодарности

Спасибо всем окружающим за терпение и помощь особенно участникам форума sysadmins.ru и моей любимой девушке. Лисенок я тебя очень сильно люблю.

пятница, 31 октября 2008 г.

Отличные ресурсы для внедренцев MOSS

http://www.microsoft.com/rus/web/

Собственно и все, крайне советую обратить внимание на раздел Решения для бизнеса

Планирование проектов и затраты времени

 

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

Что же это такое? Стремление к совершенству или просто боязнь «обосраться»? Думаю второе. Все  мы боимся неудач, но зачастую эта боязнь становиться непреодолимым препятствием на нашем пути. Поэтому первый постулат «Забей на неудачи», в конце концов тот не ошибается кто ничего не делает.

Вторая проблема в проекте недооценка себя и своих трудозатрат, именно своих!!! Заказчик свои оценит очень четко, он не первый день живет. Поэтому второй постулат «Цена это только повод поторговаться»

Рассмотрим проблему ценообразования подробней. Главное в этой ситуации не «прогибаться» под менеджера, у него работа такая минимизировать затраты, и главное ваше оружие в борьбе за свои деньги это четкое понимание что вы делаете и сколько времени у вас это займет.  В случае если попадается откровенный жлоб, не слушающий доводов, единственный выход сказать до свиданья, ваше время дороже.

Третий постулат «К черту сложность». Поясню поподробней следуйте по пути наименьшего сопротивления, да некрасиво, да плеваться хочется, НО!!!!!!!!! деньги уплочены, все работает, клиент доволен так что не думайте как сделать лучше помните : - Лучшее враг хорошего

 

Четвертый постулат «Не оптимизируй без надобности» типичный пример данного действия делать страницу для 20 браузеров, если смотреть их будут только в 2

 

Пятый постулат «Кто первый тот и прав» покупателю безразличен продукт если опоздал на рынок, так что сделайте его как можно быстрее и запускайте, если мне не верите посмотрите в каком браузере вы сейчас смотрите эту страницу :) MS наше фсе!!! 

 

 

Итак, подведу итоги, начиная проект, следуйте следующим правилам:

 

  1. Забей на неудачи
  2. Цена только повод поторговаться
  3. К черту сложность
  4. Не оптимизируй без надобности
  5. Кто первый тот и прав

среда, 22 октября 2008 г.

Microsoft снова отожгли

Задача вроде простейшая "Обеспечить 2х стороннюю синхронизация Excel и SharePoint List" однако оказалось что этого уже нет. Решение как всегда нашлось на просторах интернета, даже несколько.

На официальном сайте предлагаются решения использовать либо Access либо программировать скрипты на VBA немного ниже я цитирую эту страницу, однако на блоге Roberda'a приведено решение позволяющее малой кровью вновь добавить данный функционал, вкратце необходимо скачать расширение для Excel c официального сайта Microsoft

Excel add-in, подробные инструкции тут

Улыбнуло официальное обьяснение на сайте Microsoft,

What happened to SharePoint list synchronization?
 

Symptoms

After you export data from a Microsoft Office Excel table to a Windows SharePoint Services list, you cannot update the SharePoint list with changes that you make to the table data in Excel.

Cause

Two-way synchronization between an Excel table and a SharePoint list is no longer supported in Office Excel 2007. You can create only a one-way connection to the data in the SharePoint list, which lets you update the table data with changes that are made to the SharePoint list.

Resolution

You can use Office Access 2007 (if it is installed on your computer) or Visual Basic for Applications (VBA) code to update data on a SharePoint list so that the changes that you make to table data are reflected on the SharePoint site.

For information about how to use Office Access 2007, see Import or link to data in an Excel workbook and Import from or link to a SharePoint list. To learn more about using VBA, visit the Microsoft Office Developer Center.

вторник, 21 октября 2008 г.

Отличное руководство по использованию программной модели развертывания http://msdn.microsoft.com/ru-ru/magazine/cc507633.aspx

пятница, 17 октября 2008 г.

Сопоставление данных из AD и профиля пользователя в SharePoint

Открываем сайт администрирования SharePoint и переходим на страницу Администрирование общих службprop1

propadd

Переходим по ссылке Профиль пользователя и свойства и выбираем ссылку Добавить свойство профиля  выбираем нужное вам свойство для сопоставления.prop

После этого производим импорт командой Начать полный импорт 

Далее мы можем добавить новый список типа Контакты и после этого перейдите к странице настроек списка и добавляем столбец из списка существующих на сайте

addColl 

 

Для добавления аттрибутов в тип пользователи при создании нового столбца вам необходимо перейти к списку пользователи узла и довавить аттрибут который вы создали.

users

 

Вызовите свойства списка

userlist

 

и добавьте нужный столбец

addcoooo

После этого вы можете увидеть этот новый столбец в поле подстановки

fg

понедельник, 13 октября 2008 г.

SharePoint Solutions Blog: How do I make our SharePoint site stop asking me to login? – Part I

Понравилось сообщение о том как избавиться от ввода пароля. SharePoint Solutions Blog: How do I make our SharePoint site stop asking me to login? – Part I: "# e enhanced configuration in step 3, so that this policy would apply to normal workstations. Click Continue. # Close all open windows."

вторник, 7 октября 2008 г.

Publish in LAYOUTS Folder in MOSS

Публикация страницы в папке LAYOUTS

Для публикации страницы ASPX в папке LAYOUTS мы создадим новый проект на основе шаблона SharePoint, если в вашей системе не установлен данный тип шаблона загрузите его с сайта компании Microsoft

http://www.microsoft.com/downloads/details.aspx?FamilyID=7bf65b28-06e2-4e87-9bad-086e32185e68&displaylang=en

CreateProject 

После создания проекта добавьте необходимые сборки для построения библиотеки.

References

Создайте файл который будет обрабатывать логику вашей страницы

GetData.aspx.cs

using System;

using Microsoft.SharePoint;

 

namespace OpenTech.SIMR.GetData

{

public partial class GetData : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

 

string url = "http://localhost";

string name = "dbrn";

string listName = "Хранилище документов";

string query = @"<Where>

<Eq>

<FieldRef Name='Created' />

<Value Type='DateTime'>2008-10-06T00:00:00Z</Value>

</Eq>

</Where>";

if (Request.Params.Get("query") != null)

{

query = Request.Params.Get("query");

}

if (Request.Params.Get("name") != null)

{

name = Request.Params.Get("name");

}

if (Request.Params.Get("urlHome") != null)

{

url = Request.Params.Get("urlHome");

}

if (Request.Params.Get("listName") != null)

{

listName = Request.Params.Get("listName");

}

//Response.Charset = "UTF-8";

Response.ContentType = "application/xml";

Response.Write(GetList(url, name, listName, query));

}

/// <summary>

/// Получение списка в виде датасета.

/// </summary>

/// <param name="url">Адрес сайта</param>

/// <param name="name">имя сайта</param>

/// <param name="listName">Имя списка</param>

/// <param name="camlString">Запрос в виде стороки CAML запроса</param>

/// <returns></returns>

public static string GetList(string url, string name, string listName, string camlString)

{

string ret = "";

using (SPWeb webSite = new SPSite(url).AllWebs[name])

{

SPList list = webSite.Lists[listName];

SPQuery query = new SPQuery();

query.Query = camlString;

SPListItemCollection items = list.GetItems(query);

ret = items.Xml;

}

return ret;

}

}

}

 

 

Создайте папку TEMPLATE и в ней папку LAYOUTS

 NewFolder

Далее добавьте новый предмет в проект

addNew

template

И добавьте в него следующий код:

<%@ Page Language="C#" AutoEventWireup="true" Inherits="OpenTech.SIMR.GetData.GetData, OpenTech.SIMR.GetData, Version=1.0.0.0, Culture=neutral, PublicKeyToken=022aa651ef18dc3c" ValidateRequest="false" %>

 

Произведите развертывание решения(правый шелчок мыши по проекту пункт Deploy) и узнайте значение PublicKeyToken, на рисунке ниже он обведен линией

 key

После этого вы можете добавлять и улучшать код в вашу страницу…

пятница, 3 октября 2008 г.

Траблешутинг в MOSS 2007

 

Руководства по установке moss 2007 отличаются своей полнотой и обьемностью и в какие то моменты просто тонешь в море информации по этому продукту поэтому я решил написать краткое руководство по решению проблем в системе MOSS 2007.

Как это ни странно для решения проблем необходимо использовать стандартные средства операционной системы Windows разнообразнейшие журналы.

Главный источник это журналы событий для нас представляют интерес журналы:

  • Приложение – здесь мы видим ошибки приложения и зачастую их расшифровку или ссылку на Knowledge Base
  • Безопасность - главный источник информации о доступе пользователей
  • Система – общая информация о сервисах и системных приложениях

Кроме этого необходимо понимать, что MOSS это сложная система, работающая на стыке множества технологий:

  • Internet Information Server – веб сервер, сервер приложений
  • Microsoft Sql Server –хранилище данных
  • Microsoft SMTP Server / Exchange – почтовый сервер и транспорт для почты
  • .NET Framework – Среда исполнения

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

IIS

c:\WINDOWS\system32\Logfiles\ - в данной папке находятся логи доступа к веб страницам, собственно тут можно увидеть как работает ваше приложение

строки выглядят примерно так 14:12:31 127.0.0.1 GET /WebResource.axd 200 последнее число означает что все нормально так – же статус 302 означает что все в порядке.

На следующие статусы следует обратить внимание:

  • 401 – отказ авторизации (неправильный пароль или сбой в авторизации)
  • 404 – отсутствует файл
  • 500 – ошибка, подробности смотрите в журнале приложений

WSS

C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\LOGS

Примерное содержание файла такое:

10/02/2008 19:02:27.12     w3wp.exe (0x1F78)     0x26C4    SharePoint Portal Server     Runtime     8gp7    Medium     Topology cache updated. (AppDomain: /LM/W3SVC/99283664/Root-1-128674169931000678)    

10/02/2008 19:02:28.49     w3wp.exe (0x243C)     0x20E4    SharePoint Portal Server     Runtime     8gp7    Medium     Topology cache updated. (AppDomain: /LM/W3SVC/170751077/Root-1-128674297614020577)    

10/02/2008 19:02:47.29     w3wp.exe (0x243C)     0x2CB4    Windows SharePoint Services     General     0    Medium     Entering MRU trim routine.    

10/02/2008 19:02:47.29     w3wp.exe (0x243C)     0x2CB4    Windows SharePoint Services     General     0    Medium     Initial table size: 143343069 in 437 entries    

10/02/2008 19:02:47.29     w3wp.exe (0x243C)     0x2CB4    Windows SharePoint Services     General     0    Medium     Final table size: 143343069 in 437 entries    

10/02/2008 19:02:47.29     w3wp.exe (0x243C)     0x2CB4    Windows SharePoint Services     General     0    Medium     Exiting MRU trim routine.    

10/02/2008 19:03:19.68     OWSTIMER.EXE (0x070C)     0x0A90    SharePoint Portal Server     Business Data     79bv    High     Initiating BDC Cache Invalidation Check in AppDomain 'DefaultDomain'     

 

Вам необходимо просто просмотреть необходимый файл и узнать что за сообщения есть.

Exchange \ Microsoft SMTP Server

Exchange создает свой журнал в котором и отображается все события имеющие к нему отношение. Smtp сервер записывает сообщения в журнал «Приложения»

 

Данные сведения помогут вам быстро локализовать источник проблемы или собрать сведения для анализа сторонними специалистами. Приятной охоты за ошибками J