Итак, функции готовы, скрипт тоже. На его основе вы сможете сделать то, что вам нужно.
Скрипт вешается на событие
OnUserLogin (не забудьте галку "Включить скрипт"):
netbiosnamestocompanydepartments.png
Исходный текст скрипта:
Код: Выделить всёfunction OnClientLogin(iCID, iLoginUIN, iLoginState: integer; sLoginIP, sLoginMAC,
sLoginHardwareID, sLoginCompName, sLoginVersion: string): boolean;
var
sNewCompName, sOldCompName: string;
iDeptID: integer;
begin
sNewCompName := sLoginCompName;
sOldCompName := mGetUserAttribute(iLoginUIN, 'COMPUTER_NET_NAME');
if sNewCompName <> sOldCompName then begin
if pos('TOSHIBA', sNewCompName) > 0 then iDeptID := mGetDepartmentIDByTextPath('Developers\Notebooks') else
if pos('BUHGALT', sNewCompName) > 0 then iDeptID := mGetDepartmentIDByTextPath('Finance') else
if pos('MARKET', sNewCompName) > 0 then iDeptID := mGetDepartmentIDByTextPath('External\Freelance\Marketing');
if iDeptID <> -1 then mUpdateUserDepartment(iLoginUIN, iDeptID);
end;
result := true;
end;
begin
end.
Логика такая:
- после успешного логина юзера смотрим его NETBIOS имя и сравниваем с тем, что было в прошлый раз (функция mGetUserAttribute);
- если имена не совпадают, это означает, что пользователь пересел на другой компьютер, а значит, надо сменить ему департамент;
- смотрим, чему равно название компьютера и подбираем по нему то подразделение, которому он должен соответствовать, получаем ID департамента;
- назначаем пользователю этот новый департамент.
Обычно, после смены департамента, новый общий список контактов обновляется у всех пользователей в течение 2-3 минут, автоматически, а на сервере в WEB-админке — мгновенно.
Вложенные подразделения указываются через слеш "\", без лишних символов и пробелов.
Скрипт будет работать в версии 5.10 и выше.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Team lead
Чат со мной