Sharepoint 2010 – проверка вводимых данных.


Мне, как человеку, который не так уж часто создает какие-то решения на Sharepoint, приятно делать некоторые открытия на этом поприще.

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

Sharepoint для непосвященного в его тайны представляет собой большую загадку: пока вы пользуетесь стандартными элементами – все просто и легко и выглядит как продолжение приложений Office. Но стоит захотеть чего-то большего тут же оказываешься в тупике: совершенно неочевидно, как сделать простейшие вещи. А уж если коснуться API…

И так контроль вводимых значений. Что нам сходу предлагает Sharepoint? При создании столбца в Sharepoint можно указать формулу проверки допустимых значений. Что можно сделать в этой формуле? Тут нас ждет первое удивление: в формуле можно использовать только встроенные функции Excel и никаких регулярных выражений! Т.е. проверить вводимое значение можно на «больше-меньше», но не сложнее.

Вот, например, как выглядит формула для проверки номера телефона (взято из Интернет как один из вариантов):

=AND(IF(ISERROR(FIND("(", [CELL PHONE],1)), FALSE, (FIND("(", [CELL PHONE]) = 1)), IF(ISERROR(FIND(")", [CELL PHONE],5)), FALSE, (FIND(")", [CELL PHONE], 5) = 5)), IF(ISERROR(FIND(" ", [CELL PHONE],6)), FALSE, (FIND(" ", [CELL PHONE], 6) = 6)), IF(ISERROR(FIND("-", [CELL PHONE],10)), FALSE, (FIND("-", [CELL PHONE], 10) = 10)),IF(ISERROR(1*CONCATENATE(MID([CELL PHONE], 2, 3), MID([CELL PHONE], 7, 3), MID([CELL PHONE], 11, 4))), FALSE, AND(1*CONCATENATE(MID([CELL PHONE], 2, 3), MID([CELL PHONE], 7, 3), MID([CELL PHONE], 11, 4)) > 1000000000, 1*MID([CELL PHONE], 2, 3) <> 911, 1*MID([CELL PHONE], 7, 3) <> 911)))

Как вы думаете, как выглядит вводимый номер?

А если нужно поменять формат? Тихий ужас!

В Sharepoint Server 2010 в свойствах сайта есть пункт меню для централизованного управления формулами контроля вводимых значений. Это возможно удобнее, чем менять проверки в настройках каждого столбца, но ограничения те же самые: можно использовать только функции Excel.

На просторах Интернета я попытался найти рецепт, как добавить собственные функции. Но либо этого вообще нет, либо это слишком сложно. Обычно предлагается «простой» способ: создайте свой пользовательский столбец в Visual Studio. Не каждому дано: VS это все же средство разработчиков, а никак не пользователей. И далеко не всегда игра стоит свеч.

Третий способ – Sharepoint Designer. Когда я создавал простой телефонный справочник на Sharepoint 2007 (возможно вы читали об этом в моем старом блоге умершем вместе с itcommunity.ru), то использовал именно этот способ и только потому, что все манипуляции были минимальны. Неочевидность многих операций в Sharepoint Designer потрясает! Сопровождать такое решение невозможно: через пару дней уже не вспомнишь и половины «заклинаний».

Открытием для меня было то, что наиболее простым способом кастомизации форм списка является использование приложения Infopath. Если попытаться сделать формы с нуля, то да – это неочевидно и сложно. Но если нажать в Параметрах списка кнопку «Настройка формы», то откроется готовая стандартная форма в InfoPath Designer (InfoPath должен быть установлен на вашем компьютере). Остается отсечь лишнее и добавить нужные штрихи.

clip_image002

В моем случае надо было вставить проверку вводимого номера телефона в формате E.164. Для этого выбираем объект поля телефона. Нажимаем кнопку меню Управление правилами. Создаем правило проверки. Условие «не соответствует Пользовательскому шаблону \+7\d{10} и не пусто». В поле подсказки вводим описание «Формат телефона должен быть +7 и десять цифр».

clip_image003

Теперь в верхнем меню нажимаем кнопку быстрой публикации и проверяем форму на сайте.

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

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

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

Но этим не ограничиваются возможности кастомизации форм с помощью InfoPath: по ниже приведенной ссылке вы найдете интересный пример на эту тему.

Удачи вам в покорении Sharepoint!

Полезные ссылки:

1. Customizing SharePoint List Forms in InfoPath 2010

2. Примеры часто используемых формул

Реклама

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: