none
Автозаполнение полей при создании элемента данными текущего пользователя из АД RRS feed

  • Вопрос

  • Добрый день, уважаемы дамы и господа! Прошу вашей помощи. Возможно проблема весьма тривиальна. У меня есть список для подачи заявок. Там есть поля, которые нужно чтобы автоматически заполнялись информацией о текущем пользователе (имя фамилия должность начальник итд) ,  создающем заявку. Пробовала вариант с infopath методом подключения к службе профилей, но на ферме не настроена служба профилей и синхронизация, в итоге может показать только логин. В программировании не сильна, но видимо придется учиться. Помогите написать программу заполнения полей для текущего пользователя из АД в форму создания элемента. Буду очень признательна.

    начинающий разработчик

Ответы

  • еще, что касается реализации, то я могу посоветовать способ каким пользуюсь сам.

    1. ничего не меняю в оригинальной странице через дизайнер (не правлю HTML), т.к. потом каждый раз нужно лесть в код и менять (к примеру поменялось отображаемое имя или порядок столбцов, или добавились новые)

    2. сохраняю скрипт в файл JS и кладу его в бибилиотеку SP

    3. через браузер добавляю веб-часть "редактор скрипта"  и в нем добавляю ссылки на файл (ы) , вот так

    <script type="text/javascript" src="/Style%20Library/JS/UploadFile.js" type="text/javascript"></script>

    еще, благодаря такому подходу (когда весь скрип находится в файле) получаем плюсы:

    1. версионность (если включена в библиотеке)

    2. публикация (удобно разрабатывать, и пользователям давать мажорную версию)

    3. при желании можно открыть файл и сохранять его прямо в Sp (без необходимости заходить на страницу > Изменить страницу > и менять код )


    Модератор
  • Лично я всегда в работе с SP придерживался правила "Если вопрос можно решить стандартными средствами - решай, кастомизация - план Б"

    Каждый найдет свое решение
    1. Администратор поднимет upsa и создаст wf (ссылка )

    2. разраб будет писать er


  • Добрый день

    еще в дополнение могу посоветовать ссылки

    Configure User Profile Service Application on SharePoint Server 2013

    SharePoint 2010 – Provisioning User Profile Synchronization

     (на самом деле их много, и у 2010 и 2013 принцип одинаков)

    • Помечено в качестве ответа crowsay 19 мая 2015 г. 7:08
    Модератор
  • Для автоматического определения пользователя сделайте несколько правил в InfoPath, например, чтобы определить пользователя нужно использовать userName(), а в самом поле необходимо указать translate(.; "abcdefghijklmnopqrstuvwxyz"; "ABCDEFGHIJKLMNOPQRSTUVWXYZ"), откуда брать остальную информацию уже на ваше усмотрение, возможно из списка в виде подстановки.

    Ну или  $().SPServices.SPGetCurrentUser как советует Владимир, но это уже лучше форму делать польностью на JavaScript.

    • Изменено Mikhail Zhuikov 18 мая 2015 г. 10:02
    • Помечено в качестве ответа crowsay 19 мая 2015 г. 7:08
  • sp.js если речь идет о 2013, то он встроен, только иногда нужное принудительно подгрузить.

    <script type="text/javascript" src="/_layouts/15/sp.js" type="text/javascript"></script>

    • Помечено в качестве ответа crowsay 19 мая 2015 г. 7:08
    Модератор
  • можно через дизайнер, но аккуратнее.
    можно через веб интерфейс - Изменить страницу - добавить веб часть "Редактор сценариев" (script editor) 
    • Помечено в качестве ответа crowsay 19 мая 2015 г. 7:08
  • Добрый день! Подскажите, пожалуйста еще раз. Чтобы использовать $().SPServices.SPGetCurrentUser также нужна служба профилей?

    начинающий разработчик

    да.

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

    или можно тянуть из AD на прямую (думаю так тоже можно, но не уверен что это правильно)

    • Помечено в качестве ответа crowsay 19 мая 2015 г. 7:07
    Модератор

Все ответы

  • Лично я всегда в работе с SP придерживался правила "Если вопрос можно решить стандартными средствами - решай, кастомизация - план Б"

    Каждый найдет свое решение
    1. Администратор поднимет upsa и создаст wf (ссылка )

    2. разраб будет писать er


  • Добрый день

    еще в дополнение могу посоветовать ссылки

    Configure User Profile Service Application on SharePoint Server 2013

    SharePoint 2010 – Provisioning User Profile Synchronization

     (на самом деле их много, и у 2010 и 2013 принцип одинаков)

    • Помечено в качестве ответа crowsay 19 мая 2015 г. 7:08
    Модератор
  • Спасибо, Александр! У меня требование, чтобы данные о пользователе грузили сразу при открытии формы создания. В данном случае wf не получается. По поводу службы профилей, у меня просто нет прав ее создать и настроить. Поэтому я и хотела попробовать написать программу.

    начинающий разработчик

  • мне кажется, что службу будет полезно настроить (и для других задач, на перспективу) 

    если нужно в форме, то могу порекомендовать с помощью javascript (если без InfoPath)

    $().SPServices.SPGetCurrentUser


    Модератор
  • Для автоматического определения пользователя сделайте несколько правил в InfoPath, например, чтобы определить пользователя нужно использовать userName(), а в самом поле необходимо указать translate(.; "abcdefghijklmnopqrstuvwxyz"; "ABCDEFGHIJKLMNOPQRSTUVWXYZ"), откуда брать остальную информацию уже на ваше усмотрение, возможно из списка в виде подстановки.

    Ну или  $().SPServices.SPGetCurrentUser как советует Владимир, но это уже лучше форму делать польностью на JavaScript.

    • Изменено Mikhail Zhuikov 18 мая 2015 г. 10:02
    • Помечено в качестве ответа crowsay 19 мая 2015 г. 7:08
  • Т.е., например в designer, открываю NewForm.aspx и вставляю туда <script> или нужно создавать доп. файлы?

    Я нашла такой скрипт:

    <asp:Content ContentPlaceHolderId="PlaceHolderAdditionalPageHead" runat="server">

    Now copy & paste this JavaScript code after above mentioned tag :

    <script type="text/ecmascript">

            ExecuteOrDelayUntilScriptLoaded(getUserData, "sp.js"); 
           
        // To Get Current User Name
        var context = null; 
        var web = null; 
        var currentUser = null; 
        var currentUserId=''
        function getUserData() {

                context = new SP.ClientContext.get_current(); 
            web = context.get_web(); 
            currentUser = web.get_currentUser(); 
            currentUser.retrieve(); 
            context.load(web);
            context.executeQueryAsync(onSuccessMethod, onFaiureMethodl);
           
        } 
           
        function onSuccessMethod(sender, args) { 
            var userObject = web.get_currentUser(); 
            alert('User name:' + userObject.get_title() + '\n Login Name:' + userObject.get_loginName()); 

        }
       
        function onFaiureMethodl(sender, args) {
            alert('request failed ' + args.get_message() + '\n' + args.get_stackTrace()); 
        }
        //--- END Get Current User Name

    </script>

    Только я не знаю откуда брать "sp.js" (((


    начинающий разработчик

  • sp.js если речь идет о 2013, то он встроен, только иногда нужное принудительно подгрузить.

    <script type="text/javascript" src="/_layouts/15/sp.js" type="text/javascript"></script>

    • Помечено в качестве ответа crowsay 19 мая 2015 г. 7:08
    Модератор
  • можно через дизайнер, но аккуратнее.
    можно через веб интерфейс - Изменить страницу - добавить веб часть "Редактор сценариев" (script editor) 
    • Помечено в качестве ответа crowsay 19 мая 2015 г. 7:08
  • еще, что касается реализации, то я могу посоветовать способ каким пользуюсь сам.

    1. ничего не меняю в оригинальной странице через дизайнер (не правлю HTML), т.к. потом каждый раз нужно лесть в код и менять (к примеру поменялось отображаемое имя или порядок столбцов, или добавились новые)

    2. сохраняю скрипт в файл JS и кладу его в бибилиотеку SP

    3. через браузер добавляю веб-часть "редактор скрипта"  и в нем добавляю ссылки на файл (ы) , вот так

    <script type="text/javascript" src="/Style%20Library/JS/UploadFile.js" type="text/javascript"></script>

    еще, благодаря такому подходу (когда весь скрип находится в файле) получаем плюсы:

    1. версионность (если включена в библиотеке)

    2. публикация (удобно разрабатывать, и пользователям давать мажорную версию)

    3. при желании можно открыть файл и сохранять его прямо в Sp (без необходимости заходить на страницу > Изменить страницу > и менять код )


    Модератор
  • Добрый день! Подскажите, пожалуйста еще раз. Чтобы использовать $().SPServices.SPGetCurrentUser также нужна служба профилей?

    начинающий разработчик

  • Добрый день! Подскажите, пожалуйста еще раз. Чтобы использовать $().SPServices.SPGetCurrentUser также нужна служба профилей?

    начинающий разработчик

    да.

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

    или можно тянуть из AD на прямую (думаю так тоже можно, но не уверен что это правильно)

    • Помечено в качестве ответа crowsay 19 мая 2015 г. 7:07
    Модератор
  • Спасибо вам всем огромное за помощь!!!! Буду, значит, требовать службу)))

    начинающий разработчик

  • попробуйте значение по умолчанию текстового поля. Вычисляемое =Я

    Подставит в форму создания аккаунт:)