Лучший отвечающий
Отображение дней рождений в SharePoint 2013

Вопрос
-
Всем привет!
Кто-нибудь озадачивался отображением дней рождений сотрудников в SharePoint 2013 и реализовывал данную функциональность?
26 декабря 2014 г. 11:13
Ответы
-
Коллеги, если кому интересно, то я закончил с ссерией статей о днях рождениях в SharePoint 2013
Дни рождения пользователей - SharePoint 2013 (Part 1)
- Предложено в качестве ответа IL De 15 января 2015 г. 14:58
- Помечено в качестве ответа Иван ПродановMicrosoft contingent staff, Moderator 18 июня 2015 г. 11:49
15 января 2015 г. 14:30Модератор -
Добрый день
как я писал в своем блоге, экспорт произвожу из BDC средствами PowerShell. Во внешней базе хранится dd.mm.yyyy при этом год рождения фактический, а я его прихожу к текущему.
$mySiteUrl = "http://mysite" #Connect to User Profile Manager service $site = Get-SPSite $mySiteUrl $context = Get-SPServiceContext $site $profileManager = New-Object Microsoft.Office.Server.UserProfiles.UserProfileManager($context) $ctx = Get-SPServiceContext http://site $scope = new-object Microsoft.SharePoint.SPServiceContextScope $ctx $web = Get-SPWeb http://site $list = $web.Lists['Employees'] $items = $list.GetItems() foreach ($item in $items) { write-host $item['FullName'] / $item['BirthDate'] / $item['Email'] $user = $profileManager.Search($item['Email']) $userId = $user.RecordId if ($userId -ne $null) { $up = $profileManager.GetProfile($userId) $Date = $item['BirthDate'] #"30.12.1984 3:00:00" $month = $Date.Month $day = $Date.Day $newDate = Get-Date ([string]$day +'.'+[string]$month+'.'+ [string](get-date).Year + ' 3:00:00') $newDate $up['SPS-Birthday'].Value = $newDate $up.Commit() } } $web.Dispose()
на выходе у всех пользователей текущий год
- Изменено Kaplin VladimirModerator 1 января 2015 г. 18:05
- Предложено в качестве ответа Иван ПродановMicrosoft contingent staff, Moderator 2 января 2015 г. 9:57
- Помечено в качестве ответа Иван ПродановMicrosoft contingent staff, Moderator 5 января 2015 г. 7:40
1 января 2015 г. 18:05Модератор
Все ответы
-
День добрый!
Посмотрите это Sharepoint 2013 birthday web part обсуждение.
Если Вам помог чей-либо ответ, пожалуйста, не забывайте жать на кнопку "Предложить как ответ" или "Проголосовать за полезное сообщение"
- Предложено в качестве ответа Иван ПродановMicrosoft contingent staff, Moderator 26 декабря 2014 г. 12:51
26 декабря 2014 г. 11:48 -
- Предложено в качестве ответа Иван ПродановMicrosoft contingent staff, Moderator 26 декабря 2014 г. 12:51
26 декабря 2014 г. 12:11 -
Часто использую компоненты от amrein, из-за цены прежде всего.
Если хотите посмотреть как самому сделать что-то похожее:
26 декабря 2014 г. 12:16 -
Тут есть одна засада: день рождения относится к персональным данным - что регулируется специальным законом, т.е. надо иметь письменное согласие работника на публикацию этих данных. Плюс система попадает под требования обработки персональных данных.
Сазонов Илья http://isazonov.wordpress.com/
26 декабря 2014 г. 12:29Модератор -
Дни рождения пользователей - SharePoint 2013 (Part 1)
с использованием веб-части поиска
26 декабря 2014 г. 13:03 -
Дни рождения пользователей - SharePoint 2013 (Part 1)
с использованием веб-части поиска
Интересное решение, начал его реализовывать и столкнулся со следующей проблемой: в AD данные о дате рождения попадают из кадровой программы в формате "дата без года", в виде "12.06". В таком же формате дата рождения попадает в SharePoint из AD. И когда я делаю согласно статьи Владимира и накладываю условие:
{SearchBoxQuery} BirthDay:{Today} OR BirthDay:{Today+1} OR BirthDay:{Today+2}
То у меня, естественно ничего не выдается, т.к. в BirthDay хранится дата без года...
Есть какие-нибудь идеи по этому поводу, коллеги?
29 декабря 2014 г. 8:10 -
Либо в BirthDay добавить текущий год, либо из Today удалить текущий год.
Сазонов Илья http://isazonov.wordpress.com/
29 декабря 2014 г. 8:23Модератор -
Либо в BirthDay добавить текущий год, либо из Today удалить текущий год.
Сазонов Илья http://isazonov.wordpress.com/
Текущий год ко всем датам добавлять как-то нелогично, ведь там должен быть год рождения, да и добавить я не могу, т.к. эта информация автоматом подтягивается из кадровой программы. Хотя можно и текущий год прибавить, нам же год не важен - важен день/месяц. Но как прибавить текущий год?
Я тоже думал, что удалить текущий год из Today - но не могу найти синтаксис как это сделать, как написать соответствующую команду...
Может у кого-то имеется опыт и знания?- Изменено Колтышев Евгений 29 декабря 2014 г. 10:13
29 декабря 2014 г. 8:36 -
Добрый день
как я писал в своем блоге, экспорт произвожу из BDC средствами PowerShell. Во внешней базе хранится dd.mm.yyyy при этом год рождения фактический, а я его прихожу к текущему.
$mySiteUrl = "http://mysite" #Connect to User Profile Manager service $site = Get-SPSite $mySiteUrl $context = Get-SPServiceContext $site $profileManager = New-Object Microsoft.Office.Server.UserProfiles.UserProfileManager($context) $ctx = Get-SPServiceContext http://site $scope = new-object Microsoft.SharePoint.SPServiceContextScope $ctx $web = Get-SPWeb http://site $list = $web.Lists['Employees'] $items = $list.GetItems() foreach ($item in $items) { write-host $item['FullName'] / $item['BirthDate'] / $item['Email'] $user = $profileManager.Search($item['Email']) $userId = $user.RecordId if ($userId -ne $null) { $up = $profileManager.GetProfile($userId) $Date = $item['BirthDate'] #"30.12.1984 3:00:00" $month = $Date.Month $day = $Date.Day $newDate = Get-Date ([string]$day +'.'+[string]$month+'.'+ [string](get-date).Year + ' 3:00:00') $newDate $up['SPS-Birthday'].Value = $newDate $up.Commit() } } $web.Dispose()
на выходе у всех пользователей текущий год
- Изменено Kaplin VladimirModerator 1 января 2015 г. 18:05
- Предложено в качестве ответа Иван ПродановMicrosoft contingent staff, Moderator 2 января 2015 г. 9:57
- Помечено в качестве ответа Иван ПродановMicrosoft contingent staff, Moderator 5 января 2015 г. 7:40
1 января 2015 г. 18:05Модератор -
Коллеги, если кому интересно, то я закончил с ссерией статей о днях рождениях в SharePoint 2013
Дни рождения пользователей - SharePoint 2013 (Part 1)
- Предложено в качестве ответа IL De 15 января 2015 г. 14:58
- Помечено в качестве ответа Иван ПродановMicrosoft contingent staff, Moderator 18 июня 2015 г. 11:49
15 января 2015 г. 14:30Модератор -
Делал отображение дней рождений по статье Владимира, все работало замечательно. Но на прошлой неделе накатил обновления на SharePoint SP1 через Windows Update и после полного обхода контента перестал работать поиск по дня рождениям.
Долго выяснял из-за чего и пришел к выводу: до установки обновлений поиск воспринимал дату 12.06.2015 как 12 июня 2015, а после установки обновлений как 06 декабря 2015.
Но: если в поиск забить дату 28.06.2015 - то поидее 28-го месяца не существует и должна быть ошибка, но поиск просто не возвращает результаты. А если поставить 06.28.2015 - начинает ругаться на синтаксис, хотя должно быть 28 декабря...
28 мая 2015 г. 7:32 -
28 мая 2015 г. 8:51Модератор
-
сегодня попробую поставить обновления на тестовый сервер.
мой блог Немного о SharePoint
Владимир, причем данная проблема наблюдается только с этим управляемым свойством, добавленным вручную.
Если искать по предустановленному полю Created - ищет в российском формате, а не в англоязычном...
28 мая 2015 г. 9:25 -
возможно проблема не с поиском, а с данными в UPS
как выяснилось, у меня на тестовом поиск сломался, пока его оживляю и только потом поставлю обновления.
мой блог Немного о SharePoint
28 мая 2015 г. 9:50Модератор -
возможно проблема не с поиском, а с данными в UPS
как выяснилось, у меня на тестовом поиск сломался, пока его оживляю и только потом поставлю обновления.
мой блог Немного о SharePoint
28 мая 2015 г. 9:51 -
поставлю обновления уже буду экспериментировать.
пока не ясно почему так...
мой блог Немного о SharePoint
28 мая 2015 г. 9:53Модератор -
поставлю обновления уже буду экспериментировать.
пока не ясно почему так...
мой блог Немного о SharePoint
Добрый день,
а это потому что идет преобразование даты через CultureInvariant, не учитывается локаль текущего сервера. Это не баг, а недоработка разработчиков. Я как то так же бился с ядром SP, решил только своим патчем, но это не выход...
29 мая 2015 г. 5:53 -
30 мая 2015 г. 6:28Модератор
-
проверил у себя.
все норм
мой блог Немного о SharePoint
Владимир, у вас винда английская или русская? SharePoint английский или русский?
За этот период у меня тоже поиск по дням рождениям происходит и он начал работать с 01 июня!Вы попробуйте поискать за период с 25 мая по 31 мая.
- Изменено Колтышев Евгений 1 июня 2015 г. 6:46
31 мая 2015 г. 18:02 -
проверил у себя
Chrome - все отлично
IE 11 - ругается на синтаксис.
при выведении в виде веб-части "ДР", результаты не выдает в любом браузере.
мой блог Немного о SharePoint
- Изменено Kaplin VladimirModerator 1 июня 2015 г. 8:15
1 июня 2015 г. 8:15Модератор -
после ряда экспериментов у меня стало показывать верно.
даже если указать в параметрах сайта > Управление источниками результатов у казать день, все ок.
мой блог Немного о SharePoint
1 июня 2015 г. 8:35Модератор -
заметил, если поменять язык по умолчанию на английский (экспериментировал для вопроса в соседней ветке), то ошибка возникает в IE, если вернуть русский, то все ок.
помню подобная проблема была в веб-части ДР 2010 и Стас писал :
<header class="lea">Станислав Выщепан
3 года назад </header>Проблема скорее всего связана с определением языка запроса. Возможно исправить установив русский язык запроса в настройках веб-части или QuerySideLanguage="1049" в свойствах веб-части.
мой блог Немного о SharePoint
1 июня 2015 г. 10:16Модератор -
как решение проблемы можно указать языковые параметры у конкретных пользователей в его свойствах
можно через его страницу, через UPS или PowerShell
в этом случае не берется во внимание языковые параметры винды
мой блог Немного о SharePoint
- Изменено Kaplin VladimirModerator 1 июня 2015 г. 13:11
1 июня 2015 г. 13:09Модератор -
Владимир, у вас винда английская или русская? SharePoint английский или русский?3 июня 2015 г. 11:43
-
винда кажется русская, а SP - En
мой блог Немного о SharePoint
3 июня 2015 г. 13:00Модератор -
а как у Вас себя ведет поиск?
мой блог Немного о SharePoint
3 июня 2015 г. 13:00Модератор -
Прошу прощения, что долго не отвечал и не писал, я был в отпуске.
Возвращаюсь к своей проблеме :)
Поиск ведет себя отлично, только с днями рождениями такой косяк...
У меня на сервере винда английская, SharePoint русский. На сервере поиск по дням рождениям работает нормально, а на локальной машине (винда русская) - поиск по дня рождениям кривит, дату 12.06.2015 воспринимает как 6 декабря, а не 12 июня...
Что за бред...?
18 июня 2015 г. 11:48 -
пробовали менять языковые параметры в свойствах пользователей?
(скрины пару ответов выше)
мой блог Немного о SharePoint
18 июня 2015 г. 12:35Модератор -
пробовали менять языковые параметры в свойствах пользователей?
(скрины пару ответов выше)
мой блог Немного о SharePoint
18 июня 2015 г. 12:36 -
а язык по умолчанию (в раскладке) какой?
у меня проблема была, если стоит "EN", то ошибка, если "RU" то все хорошо.
Win 8.1
мой блог Немного о SharePoint
- Изменено Kaplin VladimirModerator 18 июня 2015 г. 12:52
18 июня 2015 г. 12:52Модератор -
еще хотел спросить, что происходит в Chrome?
мой блог Немного о SharePoint
19 июня 2015 г. 13:01Модератор -
еще хотел спросить, что происходит в Chrome?
мой блог Немного о SharePoint
язык раскладки ставил по умолчанию русский - бесполезно.
в Chrome поведение аналогичное...
поставил на тестовый сервер SharePoint SP1, никакие CU не накатывал, только обновления через Windows Update (подцепил только текущую контентную БД) - поиск по дня рождениям работает. Накатываю майский CU - поиск перестает работать. Июньский CU проблему не исправляет.
22 июня 2015 г. 4:44 -
Провел кучу тестов. Неважно какая винда стоит (английская или русская), неважно какой SharePoint стоит (английский или русский): поставил SharePoint SP1, никаких CU не ставил вообще. Поиск по датам прекрасно работает. Через Windows Update нашлось 17 обновлений: почти все - это Security Update для шарика и одно было KB3039703. Я поставил только это обновление, запустил полный обход по людям и поиск перестал работать.
Вот оно, это злосчастное обновление, которое ломает поиск. Это же обновление входит в CU за май 2015.
24 июня 2015 г. 4:22 -
проверил у себя на тестовом
стоит почему-то два обновления, и работает корректно...
мой блог Немного о SharePoint
24 июня 2015 г. 7:22Модератор -
Пока вижу лишь один выход: не ставить это обновление, ну и CU соответственно.
Других вариантов не вижу...
24 июня 2015 г. 10:23 -
думаю да.
на боевом пока обновления не ставил. пока все работает и необходимости нет.
мой блог Немного о SharePoint
- Изменено Kaplin VladimirModerator 24 июня 2015 г. 11:03
24 июня 2015 г. 11:03Модератор -
на выходных на боевой ставил виндовые обновления и случайно поставил обновления SP.
да действительно, у меня начала выскакивать ошибка
но как и и писал ранее, это обусловлено языковыми параметрами.
отписался в блоге Ошибка поиска по дате или как менять языковые параметры.
мой блог Немного о SharePoint
29 июня 2015 г. 6:53Модератор -
Владимир, мне данные манипуляции не помогают, к сожалению.
Да и если бы помогли - в моей ситуации не вариант: у нас каждый день появляются новые пользователи и каждый день запускать данный скрипт - не вариант.
Microsoft'у нужно каким-то образом сообщить о данной проблеме, чтобы они её поправили. Я, к сожалению, не имею возможности сообщить...
29 июня 2015 г. 7:14 -
Как в итоге удалить из Today текущий год?11 мая 2016 г. 11:11
-
Посмотрите примеры операций с датами https://support.office.com/en-us/article/Examples-of-common-formulas-in-SharePoint-Lists-d81f5f21-2b4e-45ce-b170-bf7ebf6988b3?ui=en-US&rs=en-US&ad=US&fromAR=1
возможно прокатит что-то типа
=DATE(MONTH([Today]),DAY([Today]))
Сазонов Илья
https://isazonov.wordpress.com/11 мая 2016 г. 12:00Модератор -
Как в итоге удалить из Today текущий год?
если речь идет о решении на основе поиска то Вам как-то нужно в строку запроса передать требуемый год
в свое время я не нашел решения для этой задачи.
могу предложить изучить как строятся запросы для поиска:
Keyword Query Language (KQL) syntax reference
или как вариант создавать свое решение с нуля и использовать API поиска SharePoint. и уже при формировании запроса к серверу строить строку запроса как требуется.
вот есть пример создания решения на JS
How to Search For People as a Search Scope / Content Source Using SharePoint 2013 REST API
мой блог Немного о SharePoint
11 мая 2016 г. 12:21Модератор