четверг, 30 октября 2008 г.

WMI,1C,Синхронизация часть вторая

Первую задачу синхронизации работников. Я решил и успокоился, что все хватит с меня WMI. Оказалось не все так легко и просто. Встала вторая часть этой задачи, надо стало синхронизировать WMI и список подразделений.

В дереве AD подразделения были сделаны как элементы OU. И немного поштудировав MSDN я нашел, что AD для любой записи представляет интересный реквизит objectGuid. Значение которого для каждого обьекта в дереве уникально.
Из этих двух положений и станцевался кусочек кода.

P.S. Надо учитывать, что objectGuid на выходе предоставляет собой массив байт.

  1. Домен=ПолучитьCOMОбъект("LDAP://OU=YYYY,DC=ХХХ,DC=loc")
  2. // Проверка по подразделениям
  3. Для каждого объекта из Домен Цикл
  4. Для каждого класса из объекта.ObjectClass Цикл
  5.         Если НРег(класса)<>"organizationalunit" Тогда
  6.                 Продолжить;
  7.         КонецЕсли;     
  8.                
  9. НаименованиеДепартамента = СтрЗаменить(объекта.Name,"OU=","");
  10.                        
  11.         // Получим ГУИД
  12.         _ГуидДепартамента         = объекта.objectGuid;
  13.         // Теперь переведем массив байт в более понятный текстовый вид
  14.         _Гуид  = "";
  15.         _Длина = _ГуидДепартамента.GetLength(0);
  16.         Для Счетчик = 1 по _Длина-1 Цикл
  17.                 _Гуид = _Гуид + "_"+Строка(_ГуидДепартамента.GetValue(Счетчик-1)));
  18.         КонецЦикла;     
  19. // Ну а дальше уже имея на руках название подразделения и его уникальный
  20. // текстовый код, проблем быть не должно.
  21. КонецЦикла;

Комментариев нет: