Публикация

Перенос почты из АД в уже импортированные записи.

Если вы уже импортировали пользователей из АД, и вам понадобилось вдруг заполнить карточки контактов почтовыми адресами вам поможет следующий скрипт разработанный ребятами из Terrasoft.

1. В TSAdmin создать сервис UpdateQuery (В каталоге Common)
В свойствах
Code(Код): uq_ContactCommunication
Table(Таблица): tbl_Contact
Caption(Заголовок): uq_ContactCommunication
* Название в русской версии указаны в скобках

2. Добавить значения:
Communication1
Communication1TypeID

3. Переходим к Communication1 и редактируем
Column Name(Название): Communication1
Data Type(Тип данных): Unicode String(Строка Unicode)
Parameter Name(Название): Communication1
* Название в русской версии указаны в скобках

4. Переходим к Communication1TypeID и редактируем
Column Name(Название): Communication1TypeID
Data Type(Тип данных): Global Unique Identifier(Уникальный идентификатор)
Parameter Name(Название): Communication1TypeID
* Название в русской версии указаны в скобках

5. Добавляем Parameter ID
И настраиваем его следующим образом
Name(Название): ID
Data Type(Тип данных): Global Unique Identifier
Parameter(Тип параметра): Input
Value(Значение): оставляем пустым
* Название в русской версии указаны в скобках

6. Добавляем в поле Where Compare Filter(Фильтр сравнения) ID
Code(Код): ID
в чекбоксе NOT (Не) галку НЕ ставим tbl_Contact.ID = Parameter:ID [Global Unique Identifier] (Уникальный идентификатор)

7. Создаем срипт scr_SetToContactDomainEmail

//-----------------------------------------------------------------------------
// scr_SetToContactDomainEmail
//-----------------------------------------------------------------------------
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;
}

function Main() {
      var SelectQuery = GetSingleItemByCode('sq_Contact', 'scr_SetToContactDomainEmail');
      EnableSelectQueryFilters(SelectQuery, false);
      var Dataset = SelectQuery.Open();
      if (!IsDatasetEmpty(Dataset)) {
                 while (!Dataset.IsEOF) {
                             var DomainEmail = GetDomainContactMail(Dataset.Values('Name'));
                             var CommunicationTypeEmail = '{ЗДЕСЬ EMAILID}';
                             var UpdateQuery = GetSingleItemByCode('uq_ContactCommunication', 'scr_SetToContactDomainEmail');
                             var ColumnsValues = UpdateQuery.ColumnsValues;
                             if (DomainEmail) {
                                         try {
                                                     ColumnsValues.ItemsByName('Communication1').Value = DomainEmail;
                                                     ColumnsValues.ItemsByName('Communication1TypeID').Value = CommunicationTypeEmail;
                                                     SetParameterValue(UpdateQuery.Parameters, 'ID',         Dataset.Values('ID'));
                                                     UpdateQuery.Execute();
                                         } catch(e) {
                                                     ShowErrorDialog(e.message);
                                         }          
                             }
                     Dataset.GotoNext();
                 }
      }
     
}

* Вместо "ЗДЕСЬ EMAILID" Необходимо написать Тип параметра связи как его узнать написано в предыдущем посте.

8. Добавляем использовать скрипт "scr_DB"

9. Выбираем скрипт и запускаем его (F9)

10. Enjoy.

Нравится

Поделиться

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