четверг, 23 июля 2009 г.

SharePoint 2007 Custom Fields and “Edit property on server”

Возникла проблема: при добавлении  Custom Field в библиотеку документов появилось предупреждение:

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

Поиск по русскому интернету ничего не дал, тогда пришлось найти откуда WSS берет это значение, оказалось из файла

12\Config\Resources\wss.ru-ru.resx

и ключа fldedit_FieldTypeWarningForDocLibSupport

соответственно предупреждение на английском выглядит так

This field type cannot be edited from most client programs and might block the programs from saving documents to this library.

И решение сразу нашлось вот здесь

http://nickgrattan.wordpress.com/2008/01/06/sharepoint-2007-custom-fields-and-edit-property-on-server/

Expression Blend 3 released!

Домашняя страница этого продукта и описание возможностей можно прочесть на странице продукта http://www.microsoft.com/expression/products/Blend_Features.aspx

среда, 22 июля 2009 г.

WSS Accounting

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

  1. Экспорт данных из внешних программ (ADO, Excel, ODBC, XML)
  2. Удобная работа с заказами в привычном интерфейсе WSS
  3. Малые затраты на внедрение решения
  4. Возможности составления отчетов и отправки их по электронной почте.
  5. Локализация решения (В данный момент 3 языка)
  6. Работа с заказами в представлении таблицы.

В общем лучше один раз увидеть.

http://yappi.biz/capture-1.avi

Сейчас продукт находиться в состоянии внутренней разработки (PRE Beta), поэтому ваше мнение будет очень важно.

Если вы заинтересовались этим решением свяжитесь со мной.

ICQ: 77391439

SKYPE: fire-dragon77 

E-mail: koroten@ya.ru

Ниже приведено руководство пользователя, с описанием текущих возможностей.

Оглавление

Введение. 1

Использование. 1

Списки на сайте. 2

Списки. 2

Словари для подстановки. 2

Страницы на сайте. 2

Руководство по типичным операциям.. 3

Как просмотреть созданный заказ. 3

Как создать заказ. 3

Как добавить нового пользователя. 3

Как добавить нового пользователя при создании заказа. 4

Введение

Система «WSS Бухгалтерский учет» предназначена для составления коммерческих предложений и отправки их заказчикам. В основе этой системы лежит платформа Microsoft Windows SharePoint Services или Microsoft SharePoint Office Server. Для пользователя системы есть следующие возможности:

· Создание заказа

· Добавления товаров в карточку заказа

· Поиск по словарю импортированных товаров (с выбором поля поиска)

· Копирование существующего заказа

· Создание и управление записями в адресной книге

· Возможность просмотра группы заказа в общем представлении

· Разграничение доступа к карточкам заказа на уровне групп на сайте

· Табличное представление для быстрого редактирования элементов заказа

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

· Отправка коммерческого предложения по почте

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

Использование

Для начала работы вы должны зайти на основную страницу системы «WSS Бухгалтерский учет», если вы не знаете адреса, где установлена система, уточните этот адрес у вашего системного администратора. В дальнейшем в этом руководстве будет приводиться адрес http://wss:90/buh как адрес системы. При открытии этой страницы вы увидите приветственное окно системы.

clip_image002

На этом снимке экрана отмечены следующие ключевые элементы:

1. Адрес сайта системы

2. Имя пользователя системы

3. Выпадающее меню для создания нового заказа

4. Краткая справка пользователю

Списки на сайте

Списки

· Contacts - адресная книга

· Links - ссылки на сайте

· Orders - список заказов

· ItemsInOrder - список товаров в заказах

Словари для подстановки

· ItemsCategory - категории товаров

· Items – товары импортированные из внешней системы

Страницы на сайте

Руководство по типичным операциям

Как просмотреть созданный заказ

На главной странице вы сайта щелкните по нужному элементу в списке, после этого на карточке заказа, перейдите по ссылке “Show Report”

clip_image004

Как создать заказ

На главной странице щелкните по ссылке «Создать элемент»clip_image006

Как добавить нового пользователя

Перейдите по ссылке Contacts, на главной странице системы.

clip_image008

Как добавить нового пользователя при создании заказа

При создании нового заказа вы можете, создать нового пользователя щелкнув на ссылку.

clip_image010

воскресенье, 19 июля 2009 г.

Move to display form after create element

Задача: после добавления нового элемента перейти на форму редактирования

Решение: Создаеться EventReciver и добавляется следующий код. На что особенно следует обратить внимание. Ни каким кастомайзингом вы этого не добьетесь, в момент щелчка по кнопке OK просто нет идентификатора записи поэтому и переходить некуда.

Это решение позволяет избежать этой ситуации.

Отдельные комментарии присутствуют в коде.

public override void ItemAdding(SPItemEventProperties properties)
        {
            // Get a "reference" to the list

           
            SPSite siteColl = new SPSite(properties.SiteId);
            SPWeb site = siteColl.OpenWeb(properties.RelativeWebUrl);
            SPList list = site.Lists[properties.ListId];

// Вызываем базовый метод и ничего не делаем, если это не наш список
            if (!list.DefaultViewUrl.Contains("Lists/Orders"))
            {
                base.ItemAdding(properties);
                return;
            }

// А вот тут идет обработка перехода с конкретной страницы, ну не нужен мне этот обработчик везде :)
            if (_currentContext.Request.CurrentExecutionFilePath.Contains("CopyListItem.aspx"))
            {
                base.ItemAdding(properties);
                return;
            }
            // Add the item and fill it with the values from properties
            DisableEventFiring();           
            SPListItem itemToAdd = list.Items.Add();
            foreach (SPField field in itemToAdd.Fields)
            {
                if (!field.Hidden &&
                    !field.ReadOnlyField &&
                    field != null &&
                    field.InternalName != "Attachments")
                {
                    itemToAdd[field.InternalName] = properties.AfterProperties[field.InternalName];
                }
            }
            itemToAdd.Update();
            EnableEventFiring();

            // Cleanup
            site.Dispose();
            siteColl.Dispose();
            string targetUrlOfNewItem = "DispForm.aspx?ID=" + itemToAdd.ID;
// ВАУ а вот тут Особая уличная магия :)

            // Redirect
            SPUtility.Redirect(targetUrlOfNewItem,SPRedirectFlags.Default, _currentContext);
        }

How do I get a user name in sharepoint

Задача: Определить имя текущего пользователя и выбрать его в выпадающем списке.

Решение: С помощью SharePoint Designer’a вставляем код JavaScript в файл newform.aspx.  

<!-- Определяем пользователя -->
<script type="text/javascript">
var username = getCurrentUser()
selectSender(username);
function selectSender(displayname)
{
var d = document.all.tags("SELECT");
for(i=0; i<d.length; i++)
{

// !NOTE change to you environment.  Field display name = 'Sender'

    if(d[i].title == 'Sender')
    {   
    for(j=0; j < d[i].options.length; j++)
        {
            var s = d[i].options[j];       
            if(s.text == displayname)
            {
                s.selected  = true;
            }
        }
    }
}
}
function getCurrentUser()
{

// выбираем все элементы со сылками и фильтруем по строке приветствия

var tags = document.getElementsByTagName('a');
for (var i=0; i < tags.length; i++)
{
     if(tags[i].innerText.substr(0,7) == 'Welcome')
     {
         return tags[i].innerText.substr(8,tags[i].innerText.length);
     }
     if(tags[i].innerText.substr(0,12) == 'Пользователь')
     {
         return tags[i].innerText.substr(14,tags[i].innerText.length);
     }
}
}
</script>

суббота, 18 июля 2009 г.

SharePoint Web.config Debug Settings

Описание флагов для вывода отладочной информации.

Внимание НИКОГДА не используйте эти настройки на “Боевом” сервере. Скорость работы падает примерно в 10 – 15 раз.

Однако для режима отладки и выявления проблем это именно тот режим, который вам нужен.

 <configuration>
  <SharePoint>
     <!—- отображение дерева вызовов функций -->
     <SafeMode CallStack="true" />
       </SharePoint>
      <system.web>
<!--  Чистый вывод ошибок -->
        <customErrors mode="Off" />
<!--  Включение отладочной информации -->
        <compilation debug="true" />
      </system.web>
 </configuration>

Save you money. Simple way

В предыдущем посте я писал про то как создать колонку SharePoint с уникальным значение. Время затраченное на написание этого проекта составит максимум 1 час.

На сайте http://www.kwizcom.com/ProductPage.asp?ProductID=811&ProductSubNodeID=817

Предлагается похожее по функционалу решение всего за $499 на сервер.

пятница, 17 июля 2009 г.

Sharepoint Unique Column (PK) : Using event handler

Оригинал тут:

http://jpy-tech.com/blog/post/Sharepoint-Unique-Column-%28PK%29-Using-event-handler.aspx

Задача: Обеспечить уникальное значение поля.

Решение: Написать EventHandler и внести логику для проверки введенного значения.

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

Пояснения, после установки этого обработчика, достаточно будет добавить в описание поля метку [$UNIQUE$] и это поле будет проверяться на уникальность.

const string _QUERY = @"<Where><Eq><FieldRef Name=""{0}"" /><Value Type=""Text"">{1}</Value></Eq></Where>"; public override void ItemAdding(SPItemEventProperties properties) { using (SPWeb web = properties.OpenWeb()) { /*get the current list*/ SPList list = web.Lists[properties.ListId]; string columnName = ""; foreach (SPField fld in list.Fields) { if (fld.Description.Contains("[$UNIQUE$]")) { columnName = fld.InternalName; break; } }

if (properties.AfterProperties[columnName] != null) { string currentValue = properties.AfterProperties[columnName].ToString(); SPQuery _query = new SPQuery(); _query.Query = string.Format(_QUERY, columnName, currentValue); SPListItemCollection itemsWithSameValue = list.GetItems(_query); if (itemsWithSameValue.Count > 0) { properties.Cancel = true; properties.ErrorMessage = "There is already an item with the same value(" + currentValue + ") for the column / Field(" + columnName + ") in this list."; } } } }

четверг, 16 июля 2009 г.

Sharepoint localization

Описана процедура использования ресурсов, для создания локализациии ваших проектов на платформе SharePoint

http://blogs.technet.com/tatianasv/archive/2009/03/25/3217498.aspx

среда, 15 июля 2009 г.

E-Book's

Хороший ресурс с электронными книгами. http://www.infanata.org/ Еще конечно много всего на torrents.ru

пятница, 10 июля 2009 г.

Microsoft ISV catalog, IMField already in!!!

Маленькое приятное событие мой продукт добавили в каталог партнерских продуктов компании Microsoft. Ссылка https://solutionfinder.microsoft.com/Solutions/SolutionDetailsView.aspx?solutionid=ad2dfb45f0354cb693004b0a63a9ba09