Публикация

Импорт из АД почтового адреса для контакта

Смысла вести дневник обо всем на свете особого не видел.
Но теперь, есть что имеет смысл выложить.
При импорте пользователя из АД в контакт копирутся его почта.

1. Необходимо выяснить ID типа средства связи для почты делается это запросом в SQL

SELECT ID
FROM tbl_CommunicationType
WHERE Name = 'E-mail'

2. Необходимо, на сервере разрешить выполнять команды с OpenRowset.

3. Изменить scr_DomainUsersUtils следующим образом:
После

ContactsDataset.Values('Name') = UserFullName;

Добавляется

ContactsDataset.Values('Communication1TypeID') = '{EmailID}';
ContactsDataset.Values('Communication1') = GetDomainContactMail(UserFullName);

Где EmailID - ID типа средства связи.

4. Добавить в scr_DomainUsersUtils следующую функцию:

function GetDomainContactMail(ContactName) {
         var Info = new ActiveXObject('ADSystemInfo');
         var Parameters = CreateSPParameters();
         var Email = CreateSPParameter(Parameters, 'Email', pdtGUID, '');
         Email.ParamType = 1;        
         var ComputerName = Info.ComputerName;
         var Index = ComputerName.match('DC').index;
         var Domain = ComputerName.substr(Index,ComputerName.length-1);
         var SQLCommand = 'select :Email = mail from OpenRowset(\'ADSDSOObject\' ';
         SQLCommand = SQLCommand + ',\'\',\'\/\/'+ Domain + '>;';
         SQLCommand = SQLCommand + '(objectCategory=Person);name,mail\')';
         SQLCommand = SQLCommand + ' where Name = \'' + ContactName + '\'';
         Connector.DBEngine.ExecuteCustomSQL(SQLCommand,Parameters);
         return Email.Value;
}

Нравится

Поделиться

0 комментариев
Показать все комментарии