Перенос почты из АД в уже импортированные записи.
Если вы уже импортировали пользователей из АД, и вам понадобилось вдруг заполнить карточки контактов почтовыми адресами вам поможет следующий скрипт разработанный ребятами из 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 + ',\'\',\'
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.