Страница 1 из 1

Привязка подразделений к NetBIOS-имени

СообщениеДобавлено: Ср мар 18, 2015 1:21 pm
switchman
Я уже предлагал это, еще в новостарой поддержке.

Суть в том, что сотрудники, часто бывает, мигрируют между подразделениями. В таком режиме было бы очень удобно, чтобы и в чате миграция отображалась по-факту. Это можно реализовать, привязав подразделения кампании к NetBIOS -именам компьютеров, установленных в подразделении. Вошедший, в чат, на этом компьютере пользователь, автоматом переводится в текущее подразделение и руководство счастливо! Сейчас, чтобы гарантированно написать в нужное подразделение, смотрим в свойства пользователя. Раз в два месяца - перелопачивание базу, дабы распихать всех по-факту.

ЗЫ: Ждем ФОРУМА, поэтому сидим на 4.14. Если, то, что выше, уже реализовано, прошу прощения!

Re: Привязка подразделений к NetBIOS-имени

СообщениеДобавлено: Ср мар 18, 2015 6:56 pm
Алексей Пикуров
День добрый.
switchman писал(а):Я уже предлагал это, еще в новостарой поддержке.

Все сообщения сохранены, можно поискать тему здесь.
Суть в том, что сотрудники, часто бывает, мигрируют между подразделениями.

Люди физически пересаживаются с компьютера на компьютер? Или ходят по подразделениям компании со своими ноутбуками? Поясните подробнее, я не совсем точно вас понял.

Re: Привязка подразделений к NetBIOS-имени

СообщениеДобавлено: Чт мар 19, 2015 1:07 pm
switchman
Именно пересаживаются... Никаких ноутбуков. Проще говоря, подразделения, это магазины сети. Продавцы часто гоняются из магазин в магазин и это большая работа - отслеживать ротацию и оперативно вносить изменения. Сами они никогда этого не сделают.

Re: Привязка подразделений к NetBIOS-имени

СообщениеДобавлено: Чт мар 19, 2015 1:12 pm
switchman
Кстати говоря, при миграции с ноутбуками предложение не имело бы смысла. У меня все нетбиос-имена - это идентификаторы магазинов + номер компьютера, у кого-то это могли быть номера кабинетов, названия департаментов.... Если-б я мог, по этим признакам, добавлять компьютеры в подразделения, а пользователей бы по ним раскидывало автоматом, при логине, было-бы ТО, ЧТО НАДО!

Re: Привязка подразделений к NetBIOS-имени

СообщениеДобавлено: Чт мар 19, 2015 1:25 pm
Алексей Пикуров
Насколько я понимаю решение проблемы, если бы на сервере был скрипт, который будет сам заниматься этим делом, то было бы круто.

Вопрос только в написании самого скрипта и в технической возможности. Техническую возможность реализовать можно, первичный вариант скрипта я напишу, а дальнейшее его сопровождение уже будет на вас.

Такой вариант вас устроит?

Re: Привязка подразделений к NetBIOS-имени

СообщениеДобавлено: Чт мар 19, 2015 1:32 pm
switchman
Безусловно. Спасибо!

Re: Привязка подразделений к NetBIOS-имени

СообщениеДобавлено: Чт мар 19, 2015 1:33 pm
Алексей Пикуров
Тогда вам придётся обновиться на последнюю версию. Обновитесь, и совместно с вами сделаем то, что вам нужно.

Re: Привязка подразделений к NetBIOS-имени

СообщениеДобавлено: Ср мар 25, 2015 8:27 pm
Алексей Пикуров
Покажите пожалуйста примеры именования ваших компьютеров, несколько разных NETBOIS-имён и соответствия подразделениям, чтобы было ясно, как писать логику скрипта.

Я сейчас как раз занялся этой задачей.

Re: Привязка подразделений к NetBIOS-имени

СообщениеДобавлено: Чт мар 26, 2015 6:53 pm
Алексей Пикуров
Итак, функции готовы, скрипт тоже. На его основе вы сможете сделать то, что вам нужно.

Скрипт вешается на событие OnUserLogin (не забудьте галку "Включить скрипт"):
netbiosnamestocompanydepartments.png
netbiosnamestocompanydepartments.png (50.16 КБ) Просмотров: 2280

Исходный текст скрипта:
Код: Выделить всё
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.


Логика такая:
  1. после успешного логина юзера смотрим его NETBIOS имя и сравниваем с тем, что было в прошлый раз (функция mGetUserAttribute);
  2. если имена не совпадают, это означает, что пользователь пересел на другой компьютер, а значит, надо сменить ему департамент;
  3. смотрим, чему равно название компьютера и подбираем по нему то подразделение, которому он должен соответствовать, получаем ID департамента;
  4. назначаем пользователю этот новый департамент.

Обычно, после смены департамента, новый общий список контактов обновляется у всех пользователей в течение 2-3 минут, автоматически, а на сервере в WEB-админке — мгновенно.

Вложенные подразделения указываются через слеш "\", без лишних символов и пробелов.

Скрипт будет работать в версии 5.10 и выше.