Автор Тема: InfoPath ищем пользователя по AccountID  (Прочитано 3693 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн sysadmin

  • Administrator
  • сисадми́н
  • *****
  • Сообщений: 8748
  • Karma: +121/-0
  • Пол: Мужской
    • Share Post
    • сайт для сис. админов и не только...
InfoPath ищем пользователя по AccountID
« : Август 11, 2010, 05:58:15 pm »
Итак есть Person/Group Picker при помощи которого можно найти пользователя организации, но как быть если необходимо получить дополнительные сведения, такие как номер телефона, почтовый адрес и т.п.
Я сделал следующее, поместил на форму Check Box и секцию, создал правило по которому Check Box включается только когда поле Person/Group Picker не пустое и создал правило на секцию отображающее денную секцию в тот момент когда Check Box выставлен в состояние TRUE, поместил текстовые поля с именами:
eFUserName, eFUserLastName и т.д.

Создал действие на включение Check Box'а:

public void chkShowInfo_Changed(object sender, XmlEventArgs e)
{
            XPathNavigator xnMyForm = this.CreateNavigator();
            XmlNamespaceManager ns3 = this.NamespaceManager;

            //получаем AccountId
            string AccID = MainDataSource.CreateNavigator().SelectSingleNode(
"/my:myFields/my:GRgetPerson/pc:Person/pc:AccountId", ns3).Value;
          
            xnMyForm.SelectSingleNode("/my:myFields/my:grShoHideInfo/my:eFUserID", ns3)
            .SetValue(AccID);

            //ищем в активке
            DirectorySearcher ds = new DirectorySearcher();
            //по фильтру
            ds.Filter = "(&((objectClass=User))(sAMAccountName=" + AccID.Substring(3) + "))";
            ds.SearchScope = SearchScope.Subtree;
            //грузим нужные свойства
            ds.PropertiesToLoad.Add("givenName");
            //ds.PropertiesToLoad.Add("Email");

            SearchResultCollection results = ds.FindAll();
            foreach (SearchResult result in results)
                //если не пустое
                if (result.GetDirectoryEntry().Properties["sAMAccountName"].Value != null)
                { //если есть результат
                    //то пишем в строки department, title, company, l (city), telephoneNumber, streetAddress, displayName
                    //пишем атрибуты в поля
                    try
                    {
                        string eFUserName = (result.GetDirectoryEntry().Properties["givenName"]
                            .Value.ToString());
                        if (eFUserName != null)
                        {
                            xnMyForm.SelectSingleNode("/my:myFields/my:grShoHideInfo/my:eFUserName", ns3)
                                        .SetValue(eFUserName);
                        }
                    }
                    catch (Exception ex)
                    {
                        xnMyForm.SelectSingleNode("/my:myFields/my:grShoHideInfo/my:eFUserName", ns3)
                                            .SetValue("No");
                    }
                    try
                    {
                        string eFUserLastName = (result.GetDirectoryEntry().Properties["sn"]
                                .Value.ToString());
                        if (eFUserLastName != null)
                        {
                            xnMyForm.SelectSingleNode("/my:myFields/my:grShoHideInfo/my:eFUserLastName", ns3)
                                            .SetValue(eFUserLastName);
                        }
                    }
                    catch (Exception ex)
                    {
                        xnMyForm.SelectSingleNode("/my:myFields/my:grShoHideInfo/my:eFUserLastName", ns3)
                                            .SetValue("Параметр не задан!");
                    }



                    try
                    {
                        string eFUserMail = (result.GetDirectoryEntry().Properties["mail"]
                            .Value.ToString());
                        if (eFUserMail != null)
                        {
                            xnMyForm.SelectSingleNode("/my:myFields/my:grShoHideInfo/my:eFUserMail", ns3)
                                        .SetValue(eFUserMail);
                        }
                    }
                    catch (Exception ex)
                    {
                        xnMyForm.SelectSingleNode("/my:myFields/my:grShoHideInfo/my:eFUserMail", ns3)
                                            .SetValue("Параметр не задан!");
                    }


                    try
                    {
                        string eFUserCity = (result.GetDirectoryEntry().Properties["l"]
                              .Value.ToString());
                        if (eFUserCity != null)
                        {
                            xnMyForm.SelectSingleNode("/my:myFields/my:grShoHideInfo/my:eFUserCity", ns3)
                                        .SetValue(eFUserCity);
                        }

                    }
                    catch (Exception ex)
                    {
                        xnMyForm.SelectSingleNode("/my:myFields/my:grShoHideInfo/my:eFUserCity", ns3)
                                                .SetValue("Параметр не задан!!");
                    }


                    try
                    {
                        string eFUserDept = (result.GetDirectoryEntry().Properties["department"]
                            .Value.ToString());
                        if (eFUserDept != null)
                        {
                            xnMyForm.SelectSingleNode("/my:myFields/my:grShoHideInfo/my:eFUserDept", ns3)
                                        .SetValue(eFUserDept);
                        }
                    }
                    catch (Exception ex)
                    {
                        xnMyForm.SelectSingleNode("/my:myFields/my:grShoHideInfo/my:eFUserDept", ns3)
                                            .SetValue("Параметр не задан!");
                    }


                    try
                    {
                        string eFUserAddress = (result.GetDirectoryEntry().Properties["streetAddress"]
                            .Value.ToString());
                        if (eFUserAddress != null)
                        {
                            xnMyForm.SelectSingleNode("/my:myFields/my:grShoHideInfo/my:eFUserAddress", ns3)
                                        .SetValue(eFUserAddress);
                        }
                    }
                    catch (Exception ex)
                    {
                        xnMyForm.SelectSingleNode("/my:myFields/my:grShoHideInfo/my:eFUserAddress", ns3)
                                            .SetValue("Параметр не задан!");
                    }



                    try
                    {
                        string eFUserTitle = (result.GetDirectoryEntry().Properties["title"]
                            .Value.ToString());
                        if (eFUserTitle != null)
                        {
                            xnMyForm.SelectSingleNode("/my:myFields/my:grShoHideInfo/my:eFUserTitle", ns3)
                                        .SetValue(eFUserTitle);
                        }
                    }
                    catch (Exception ex)
                    {
                        xnMyForm.SelectSingleNode("/my:myFields/my:grShoHideInfo/my:eFUserTitle", ns3)
                                            .SetValue("параметр не задан!");
                    }



                    try
                    {
                        string eFUserCompany = (result.GetDirectoryEntry().Properties["company"]
                                .Value.ToString());
                        if (eFUserCompany != null)
                        {
                            xnMyForm.SelectSingleNode("/my:myFields/my:grShoHideInfo/my:eFUserCompany", ns3)
                                                .SetValue(eFUserCompany);
                        }
                    }
                    catch (Exception ex)
                    {
                        xnMyForm.SelectSingleNode("/my:myFields/my:grShoHideInfo/my:eFUserCompany", ns3)
                                            .SetValue("Параметр не задан!");
                    }



                    try
                    {
                        string eFTelNumber = (result.GetDirectoryEntry().Properties["telephoneNumber"]
                            .Value.ToString());
                        if (eFTelNumber != null)
                        {
                            xnMyForm.SelectSingleNode("/my:myFields/my:grShoHideInfo/my:eFTelNumber", ns3)
                                                .SetValue(eFTelNumber);
                        }
                    }
                    catch (Exception ex)
                    {
                        xnMyForm.SelectSingleNode("/my:myFields/my:grShoHideInfo/my:eFTelNumber", ns3)
                                            .SetValue("Параметр не задан!");
                    }

                    string FDisplayName = (result.GetDirectoryEntry().Properties["displayName"]
                        .Value.ToString());


                    //строка состояния ))
                    xnMyForm.SelectSingleNode("/my:myFields/my:FLError", ns3)
                                    .SetValue("Пользователь найден: " + FDisplayName);
                }

        }

Таким образом в поля у нас помещаются требуемые данные.

Данный код создан на найденном примере (http://blog.xsolon.net/Posts/query-active-directory-using-c.aspx)
« Последнее редактирование: Август 12, 2010, 09:43:31 am от sysadmin »
дорогу осилит идущий...
......................
MCP, MCTS, RHCSA
......................
also aka xck...

 


xx
InfoPath узнаем текущего пользователя

Автор sysadmin

0 Ответов
2984 Просмотров
Последний ответ Август 12, 2010, 11:11:05 am
от sysadmin
xx
InfoPath определить текущего пользователя c#

Автор sysadmin

0 Ответов
1573 Просмотров
Последний ответ Март 03, 2015, 04:54:22 pm
от sysadmin
xx
InfoPath получаем SAM из AD

Автор sysadmin

0 Ответов
1301 Просмотров
Последний ответ Март 03, 2015, 05:51:45 pm
от sysadmin
xx
PowerShell - получить SID по имени пользователя / имя пользователя по SID

Автор sysadmin

0 Ответов
2016 Просмотров
Последний ответ Январь 14, 2016, 10:38:38 am
от sysadmin