Лучший отвечающий
Вывод компании и отдела пользователя создавшего элемент списка

Вопрос
-
Добрый день.
Помогите.
Есть большой список и потребовалось вывести в отдельные поля компанию, отдел, емайл пользователя создавшего данный элемент, эта информация есть в профиле пользователя.
Как сопоставить данные из Списка сведений пользователя и полем Кем создано????
6 октября 2016 г. 10:35
Ответы
-
я же написал, что можно пойти двумя путями:
1. добавить поле типа Пользователь. скрыть его от всех средствами js. и при создании элемента
а. заполнить это поле текущим пользователем
б. получить из поля требуемые данные. и записать их в поля
2. получить текущего пользователя и сделать REST запрос службе UPS. ПОлучить требуемые свойства и записать их в поля.
мой блог Немного о SharePoint
- Помечено в качестве ответа Natalya_35 12 октября 2016 г. 8:18
10 октября 2016 г. 7:50Модератор
Все ответы
-
Добрый день.
я бы воспользовался PowerShell
если знакомы с ним, то у меня было описано как записать свойства в UPS
Экспорт дня рождения из BDC в User Profile с помощью PowerShell
Вам же потребуется изменить запрос.
т.е. пробежаться по всем элементам списка и для каждого элемента сделать запрос к UPS передавая туда логин сотрудника.
мой блог Немного о SharePoint
6 октября 2016 г. 11:05Модератор -
Были мысли сделать через PowerShell,но данный список дополняется и это будет не одноразовая работа. т.е. по шедулеру ночью запускать обработчик ( в списке уже почти 4000 элементов.)
Тогда можно сразу выгружать в Excel и в нём настроить фильтры, отчеты и отправляить пользователю по почте.
Это как вариант, будут ещё какие-нибудь предложения?
Как связать список с заполненными полями с другим списком?
Способ 2. Можно написать рабочий процесс или PowerShell запускать его только для необработанных элементов. Воспользовавшись вашим блогом, Владимир http://kaplin-vladimir.blogspot.ru/2016/06/powershell.html
- Изменено Natalya_35 6 октября 2016 г. 11:25
6 октября 2016 г. 11:18 -
задача делится на две
1. в новых элементах сделать автозаполнение
добавить поле (скрыв его отпользователей ) и сделать как тут Заполнение свойств сотрудника при выборе его в People picker.
2. в существующих через powerShell
мой блог Немного о SharePoint
6 октября 2016 г. 12:05Модератор -
что бы заполнить текущего пользователя в поле типа пользователь
function fillingCurrentUser(fieldId) { //var currentUser; // Ensure that the SP.js is loaded if (SP.ClientContext != null) { SP.SOD.executeOrDelayUntilScriptLoaded(getCurrentUser, 'sp.js'); } else { SP.SOD.executeFunc('sp.js',null, getCurrentUser); } var currentUser; function getCurrentUser() { var context = new SP.ClientContext.get_current(); var web = context.get_web(); currentUser = web.get_currentUser(); // console.log(currentUser); context.load(currentUser); context.executeQueryAsync(onSuccessMethod, onRequestFail); } function onSuccessMethod(sender, args) { var account = currentUser.get_loginName(); var currentUserAccount = account.substring(account.indexOf("|") + 1); // console.log(currentUserAccount); //console.log(currentUser) // заполение поля SetPeoplePickerValue(fieldId, currentUserAccount ) ; } // This function runs if the executeQueryAsync call fails. function onRequestFail(sender, args) { // console.log('request failed' + args.get_message() + '\n' + args.get_stackTrace()); } }; function SetPeoplePickerValue(fieldId, userName) { var peoplePickerDiv = $("[id^='" +fieldId+"_']") var peoplePickerEditor = $("input[id^='" + fieldId + "']"); var spPeoplePicker = SPClientPeoplePicker.SPClientPeoplePickerDict[peoplePickerDiv[0].id]; // Кэш var cache = spPeoplePicker.PPMRU; // Сбрасываем кэш cache.ResetCache(); peoplePickerEditor.val(userName); spPeoplePicker.AddUnresolvedUserFromEditor(true); };
использовать
fillingCurrentUser("Employee"); // где указывается id поля
мой блог Немного о SharePoint
6 октября 2016 г. 12:10Модератор -
это один из вариантов
еще можно не добавлять поле Пользователь, а пойти по другому пути.
получить текущего пользователя
спросить у UPS его свойства (через rest)
заполнить полученное
мой блог Немного о SharePoint
6 октября 2016 г. 12:11Модератор -
У меня пришла другая идея, чтобы данные были актуальные, добавить поле подстановки из Списка сведений пользователя а поля отображать этого списка. Само поле заполнять рабочим процессом копируя поле кем создано. Думаете получится?6 октября 2016 г. 12:25
-
не люблю РП
дополнительно грузят сервер и выполняются после сохранения элемента.
так же могут быть конфликты сохранения, когда пользователь вдруг решил повторно отредактировать элемент, а РП еще не отработал.мне последнее время нравится работать через js
мой блог Немного о SharePoint
6 октября 2016 г. 13:19Модератор -
пока js использую только для наведения "красоты". У этого списка уже есть РП, проверка результата.
В голове пока не сложилось как можно через js взять поле Кем создано, найти соответствие в списке пользователей и записать в поле подстановки. Если поможете, постараюсь реализовать через js. Самой стало интересно попробовать.
6 октября 2016 г. 13:57 -
я же написал, что можно пойти двумя путями:
1. добавить поле типа Пользователь. скрыть его от всех средствами js. и при создании элемента
а. заполнить это поле текущим пользователем
б. получить из поля требуемые данные. и записать их в поля
2. получить текущего пользователя и сделать REST запрос службе UPS. ПОлучить требуемые свойства и записать их в поля.
мой блог Немного о SharePoint
- Помечено в качестве ответа Natalya_35 12 октября 2016 г. 8:18
10 октября 2016 г. 7:50Модератор -
первый вариант немного проще, т.к. уже почти все есть, но имеет минус - доп поле. которое является посредником, но не требуется как таковое.
второй вариант нужно реализовывать. у меня были подходы. но готового кода нет.
мой блог Немного о SharePoint
10 октября 2016 г. 7:52Модератор