Атрибуты объектов в Active Directory

09.04.13

Интеграция - Внешние источники данных

Написал справочник Внутренних телефонов компании, и посыпались вопросы: "а как, а где"... Вот и решил выложить небольшой скриптик, который во многом объясняет структуру AD. Распросраняется "AS IS", ни за чё не отвечаю...



Перем мТипы;

Процедура КнопкаВыполнитьНажатие(Кнопка)
 
 АДОКоннектор = Новый COMОбъект("ADODB.Connection");
 АДОКоннектор.ConnectionString = "Provider=""ADsDSOObject""";
 АДОКоннектор.Open();

 КореньDSE = ПолучитьCOMОбъект("LDAP://RootDSE");

 ДоменDNS = КореньDSE.Get("defaultNamingContext");
 
 ТекстЗапроса = "select AdsPath from 'LDAP://"+ДоменDNS+"'";

 ВыборкаАДО = АДОКоннектор.Execute(ТекстЗапроса);

 Пока НЕ ВыборкаАДО.EOF Цикл

  ПутьОбъекта = ВыборкаАДО.Fields("AdsPath").Value;
  
  Сообщить("Объект: " + ПутьОбъекта);
  Сообщить("---------------");
  Попытка
   СписокАтрибутов = ПолучитьCOMОбъект(ПутьОбъекта);
         СписокАтрибутов.GetInfo();

   КоличествоАтрибутов = СписокАтрибутов.PropertyCount;

   Для инд = 0 По КоличествоАтрибутов - 1 Цикл
    Атрибут = СписокАтрибутов.item(инд);
    Сообщить("Значения атрибута: "+ Атрибут.Name+":");
    
    Для Каждого Значение Из Атрибут.Values Цикл
     ТекстЗначения = Значение.GetObjectProperty(Значение.ADsType);
     ТипЗначения = мТипы[Значение.ADsType];
     Сообщить(ТипЗначения + ": "+ТекстЗначения);
     ОбработкаПрерыванияПользователя();
    КонецЦикла;
    
    Сообщить(Символы.ПС);
   КонецЦикла;
  Исключение
   Сообщить("");
  КонецПопытки;
  
  ВыборкаАДО.MoveNext();
 КонецЦикла;
 ВыборкаАДО.Close();
 АДОКоннектор.Close();
 
КонецПроцедуры

мТипы = Новый Соответствие;
мТипы.Вставить(0, "ADSTYPE_INVALID");
мТипы.Вставить(1, "ADSTYPE_DN_STRING");
мТипы.Вставить(2, "ADSTYPE_CASE_EXACT_STRING");
мТипы.Вставить(3, "ADSTYPE_CASE_IGNORE_STRING");
мТипы.Вставить(4, "ADSTYPE_PRINTABLE_STRING");
мТипы.Вставить(5, "ADSTYPE_NUMERIC_STRING");
мТипы.Вставить(6, "ADSTYPE_BOOLEAN");
мТипы.Вставить(7, "ADSTYPE_INTEGER");
мТипы.Вставить(8, "ADSTYPE_OCTET_STRING");
мТипы.Вставить(9, "ADSTYPE_UTC_TIME");
мТипы.Вставить(10, "ADSTYPE_LARGE_INTEGER");
мТипы.Вставить(11, "ADSTYPE_PROV_SPECIFIC");
мТипы.Вставить(12, "ADSTYPE_OBJECT_CLASS");
мТипы.Вставить(13, "ADSTYPE_CASEIGNORE_LIST");
мТипы.Вставить(14, "ADSTYPE_OCTET_LIST");
мТипы.Вставить(15, "ADSTYPE_PATH");
мТипы.Вставить(16, "ADSTYPE_POSTALADDRESS");
мТипы.Вставить(17, "ADSTYPE_TIMESTAMP");
мТипы.Вставить(18, "ADSTYPE_BACKLINK");
мТипы.Вставить(19, "ADSTYPE_TYPEDNAME");
мТипы.Вставить(20, "ADSTYPE_HOLD");
мТипы.Вставить(21, "ADSTYPE_NETADDRESS");
мТипы.Вставить(22, "ADSTYPE_REPLICAPOINTER");
мТипы.Вставить(23, "ADSTYPE_FAXNUMBER");
мТипы.Вставить(24, "ADSTYPE_EMAIL");
мТипы.Вставить(25, "ADSTYPE_NT_SECURITY_DESCRIPTOR");
мТипы.Вставить(26, "ADSTYPE_UNKNOWN");
мТипы.Вставить(27, "ADSTYPE_DN_WITH_BINARY");
мТипы.Вставить(28, "ADSTYPE_DN_WITH_STRING");

См. также

Внешние источники данных Программист Бизнес-аналитик Пользователь Платформа 1С v8.3 Управляемые формы Анализ и прогнозирование 1C:Бухгалтерия Узбекистан Беларусь Кыргызстан Молдова Россия Казахстан Платные (руб)

Готовое решение для автоматической выгрузки данных из 1С 8.3 в базу данных ClickHouse, PostgreSQL или Microsoft SQL для работы с данными 1С в BI-системах. «Экстрактор данных 1С в BI» работает со всеми типовыми и нестандартными конфигурациями 1С 8.3 и упрощает работу бизнес-аналитиков. Благодаря этому решению, специалистам не требуется быть программистами, чтобы легко получать данные из 1С в вашей BI-системе.

28500 руб.

15.11.2022    24193    29    49    

42

Зарплата Внешние источники данных Бюджетный учет Перенос данных 1C Системный администратор Программист Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактическим удержаниям, НДФЛ, вычетам, страховым взносам из базы Парус 8 учреждений (далее Парус) в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (далее 1С) и начать с ней работать с любого месяца года.

120000 руб.

19.08.2020    27334    26    1    

28

Розничная торговля Внешние источники данных Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Бухгалтерский учет 1С:Бухгалтерия 3.0 Фармацевтика, аптеки Россия Бухгалтерский учет Платные (руб)

Внешняя обработка загрузки данных из файла-выгрузки, сформированного в программе F3 TAIL версии 3.4 (и выше) или еФарма версии 2.1, в базу конфигурации 1С: Бухгалтерия предприятия 8, ред. 3.0 (базовая, ПРОФ, КОРП, ФРЕШ).

13200 руб.

19.12.2016    49278    103    106    

73

Розничная торговля Внешние источники данных Файловый обмен (TXT, XML, DBF), FTP Бухгалтер Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Фармацевтика, аптеки Россия Бухгалтерский учет Налоговый учет Платные (руб)

Представлена обработка для импорта документов из розничной программы учета товара в торговых точках и аптеках, необходимых для ведения бухгалтерского и налогового учёта, в Бухгалтерию 3.0. При загрузке данных в бухгалтерию переносятся документы поступлений, реализации, возвратов и перемещений в торговых точках и формируются все бухгалтерские и налоговые отчеты с учетом этих документов для любой системы налогообложения. Обработка позволяет загрузить данные из ПО ТрейдФарм. Имеются варианты для других розничных программ (ПО Manuscript Solution, Е-Фарма и S-Market).

30000 руб.

09.04.2020    18845    13    8    

9
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Fuego 463 30.09.09 13:32 Сейчас в теме
Перем мТипы;

Процедура КнопкаВыполнитьНажатие(Кнопка)
	
	АДОКоннектор = Новый COMОбъект("ADODB.Connection");
	АДОКоннектор.ConnectionString = "Provider=""ADsDSOObject""";
	АДОКоннектор.Open();

	КореньDSE = ПолучитьCOMОбъект("LDAP://RootDSE");

	ДоменDNS = КореньDSE.Get("defaultNamingContext");
	
	ТекстЗапроса = "sel ect AdsPath from 'LDAP://"+ДоменDNS+"'";

	ВыборкаАДО = АДОКоннектор.Execute(ТекстЗапроса);

	Пока НЕ ВыборкаАДО.EOF Цикл

		ПутьОбъекта = ВыборкаАДО.Fields("AdsPath").Value;
		
		Сообщить("Объект: " + ПутьОбъекта);
		Сообщить("---------------");
		Попытка
			СписокАтрибутов = ПолучитьCOMОбъект(ПутьОбъекта);
	        СписокАтрибутов.GetInfo();

			КоличествоАтрибутов = СписокАтрибутов.PropertyCount;

			Для инд = 0 По КоличествоАтрибутов - 1 Цикл
				Атрибут = СписокАтрибутов.item(инд);
				Сообщить("Значения атрибута: "+ Атрибут.Name+":");
				
				Для Каждого Значение Из Атрибут.Values Цикл
					ТекстЗначения = Значение.GetObjectProperty(Значение.ADsType);
					ТипЗначения = мТипы[Значение.ADsType];
					Сообщить(ТипЗначения + ": "+ТекстЗначения);
					ОбработкаПрерыванияПользователя();
				КонецЦикла;
				
				Сообщить(Символы.ПС);
			КонецЦикла;
		Исключение
			Сообщить("<не удалось получить свойства>");
		КонецПопытки;
		
		ВыборкаАДО.MoveNext();
	КонецЦикла;
	ВыборкаАДО.Close();
	АДОКоннектор.Close();
	
КонецПроцедуры

мТипы = Новый Соответствие;
мТипы.Вставить(0, "ADSTYPE_INVALID");
мТипы.Вставить(1, "ADSTYPE_DN_STRING");
мТипы.Вставить(2, "ADSTYPE_CASE_EXACT_STRING");
мТипы.Вставить(3, "ADSTYPE_CASE_IGNORE_STRING");
мТипы.Вставить(4, "ADSTYPE_PRINTABLE_STRING");
мТипы.Вставить(5, "ADSTYPE_NUMERIC_STRING");
мТипы.Вставить(6, "ADSTYPE_BOOLEAN");
мТипы.Вставить(7, "ADSTYPE_INTEGER");
мТипы.Вставить(8, "ADSTYPE_OCTET_STRING");
мТипы.Вставить(9, "ADSTYPE_UTC_TIME");
мТипы.Вставить(10, "ADSTYPE_LARGE_INTEGER");
мТипы.Вставить(11, "ADSTYPE_PROV_SPECIFIC");
мТипы.Вставить(12, "ADSTYPE_OBJECT_CLASS");
мТипы.Вставить(13, "ADSTYPE_CASEIGNORE_LIST");
мТипы.Вставить(14, "ADSTYPE_OCTET_LIST");
мТипы.Вставить(15, "ADSTYPE_PATH");
мТипы.Вставить(16, "ADSTYPE_POSTALADDRESS");
мТипы.Вставить(17, "ADSTYPE_TIMESTAMP");
мТипы.Вставить(18, "ADSTYPE_BACKLINK");
мТипы.Вставить(19, "ADSTYPE_TYPEDNAME");
мТипы.Вставить(20, "ADSTYPE_HOLD");
мТипы.Вставить(21, "ADSTYPE_NETADDRESS");
мТипы.Вставить(22, "ADSTYPE_REPLICAPOINTER");
мТипы.Вставить(23, "ADSTYPE_FAXNUMBER");
мТипы.Вставить(24, "ADSTYPE_EMAIL");
мТипы.Вставить(25, "ADSTYPE_NT_SECURITY_DESCRIPTOR");
мТипы.Вставить(26, "ADSTYPE_UNKNOWN");
мТипы.Вставить(27, "ADSTYPE_DN_WITH_BINARY");
мТипы.Вставить(28, "ADSTYPE_DN_WITH_STRING");
Показать
soda; alex4x; swiftblack; +3 Ответить
2. vde69 925 01.10.09 13:48 Сейчас в теме
я не понимаю, как за 1 день получить 12 плюсов???

у меня статья и больше и функционала больше и лежит уже месяц и плюсов всего 7, что я не так делаю??? может надо тупо накручивать плюсы самому?
GreatDen; +1 Ответить
3. coder1cv8 3483 01.10.09 15:22 Сейчас в теме
(2) дались тебе эти плюсы? )
4. vde69 925 01.10.09 16:08 Сейчас в теме
(3) мне на плюсы пофигу, ;)

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

5. kurator1C 02.10.09 07:24 Сейчас в теме
(2) Кинь ссылку здесь на свою статью.
И тот, кто плюсанул здесь, плюсанет и тебя, раз уж ему эта тема интересна, а ты её раскрыл более полно.
6. vde69 925 02.10.09 09:30 Сейчас в теме
(5) дело не в плюсах, и кидать ссылку сюда как-то некрасиво. Меня интересуют мнения первых 10 отплюсовавших как они так быстро загнали разработку на первую страницу!

это вопрос или психологии или технологиии раскрутки, меня интересует этот вопрос исключительно с этой точки зрения... может автор пиарит ее где-то на форумах или это его знакомые или еще чего? мой интерес это выяснить скорее идет в рамки моего web проекта как пример удачной стратегии.

Fuego - не ругай меня сильно я плюсану ее за пропаганду интеграции ;)

7. Fuego 463 02.10.09 12:05 Сейчас в теме
(6) Привет. На самом деле я недавно столкнулся с проблемой. Пользователи 1С звонят мне и спрашивают, почему, мол, в телефонном справочнике в 1С-ке не указан номер того-то и того-то... АТС-кой у нас распоряжается инженер ИТО, а в АД у нас распоряжается сисадмин. Т.е. телефон в АТС заведен, сисадмин не в курсе и т.д. И тут я решил читок подправить запрос, и вывести обработочку инженеру ИТО, чтобы он мог сформировать список сотрудников, на которых не указан номер телефона в АД. Список распечатывается, он вписывает номера из АТС-ки и отдает сисадмину. И поскольку я вернулся к теме АД, я впомнил, что встречались вопросы. И решил написать обработку несколько глубже. Лично мне нафиг не нужно подробное описание структуры АД. (Когда мне что-то нужно сделать, я зачастую разрабытваю схему с нуля.) А кому-то пригодится. У меня всегда под рукой справочные системы, но как правило они на английском языке. Сел, покумекал, прикинул, проверил. И вот - работает. Если посмотреть на мою активность на сайте, то можно понять, что я тут нынче редкий гость. И рейтинг мне ничего не даёт. Я не фрилансер, и мне не нужно показывать клиенту, как мои разработки "любят" в интернете. Я считаю этот сайт плацдармом для обмена опытом разработчиков на платформе 1С. А ссылочку свою оставь здесь, это не зазорно :)
8. rasswet 82 05.10.09 09:59 Сейчас в теме
можно поподробнее что это такое? подключается к какому-то файлу и оттуда тащит данные?
9. Fuego 463 14.10.09 13:23 Сейчас в теме
(8) Active Directory - это интеллектуальная служба каталогов для операционных систем семейства Windows NT). Active Directory имеет иерархическую структуру, состоящую из объектов. Объекты разделяются на три основные категории: ресурсы (например принтеры), службы (например, электронная почта) и люди (учётные записи пользователей и групп пользователей). Active Directory предоставляет информацию об объектах, позволяет организовывать объекты, управлять доступом к ним, а также устанавливает правила безопасности.
10. alex4x 28.10.09 16:44 Сейчас в теме
что то у меня руки кривые стали...

Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Provider): One or more errors occurred during processing of command.
   ВыборкаАДО = АДОКоннектор.Execute(ТекстЗапроса); 
по причине:
Произошла исключительная ситуация (Provider): One or more errors occurred during processing of command.


Как понять, что
КореньDSE = ПолучитьCOMОбъект("LDAP://RootDSE");
ДоменDNS = КореньDSE.Get("defaultNamingContext");
Вернули правильную информацию ?

Кстати про принтеры, компьютеры и все остальное - тоже было б полезно из AD прочитать всё. Может есть мануал по AD ?
11. EvgeniusRusius 13.11.09 15:40 Сейчас в теме
(10) в приведенном автором примере, в строке
ТекстЗапроса = "sel ect AdsPath from 'LDAP://"+ДоменDNS+"'";
опечатка (выделил цветом), должно быть не "sel ect" , а "select", т.е. без пробела. после исправления - всё замечательно работает.
Автору +ище!!
12. Fuego 463 13.11.09 16:59 Сейчас в теме
(11) Это не опечатка. Все зарезервированные слова языка запросов SQL (update, select, delete, insert и т.д.) рвутся движком в целях безопасности. Я уверен, что сейчас нажму кнопку "Ответить" и все слова в скобкам разорвутся.
13. Fuego 463 13.11.09 17:00 Сейчас в теме
Странно... А раньше я не мог убрать этот пробел. Скорее всего что-то изменили в поведении движка сайта.
14. wowan ht 5 27.11.18 11:04 Сейчас в теме
Здравствуйте. При значении ADsType=10 (ADSTYPE_LARGE_INTEGER) 1C-ка возвращает COM-объект. (например, lastlogon). Можете подсказать, как его преобразовать в дату? Спасибо.
За саму обработку отдельное большое спасибо.
15. Fuego 463 27.11.18 15:10 Сейчас в теме
(14), могу ошибаться (сейчас проверить не могу), но возможно, возвращается VBSafeArray. Метод Unload() возвращает из такого COM-объекта массив 1С, который уже можно обработать в 1С стандартными средствами - головой и математикой
16. ISBodrug 15.02.19 13:35 Сейчас в теме
17. ISBodrug 15.02.19 13:37 Сейчас в теме
(15) Столкнулся с тем, что получаю поле "lastLogon" типа СОM-Объект, но у него нет никаких свойств. Пробовал и Unload() и Выгрузить() и Get() ничего не работает. Непонятно, что надо сделать, чтобы получить дату последнего входа пользователя.
18. Fuego 463 22.04.19 13:24 Сейчас в теме
(17)
По ссылке приведён интерфейс этого типа:
https://docs.microsoft.com/ru-ru/windows/desktop/api/iads/nn-iads-iadslargeinteger
описание значения поля по этой ссылке: https://docs.microsoft.com/en-us/windows/desktop/adschema/a-lastlogon

думаю, что следующая доработка должна помочь (сам не проверял, по наитию набросал)?
Если Значение.ADsType = 10 Тогда
	_lastLogon = '1601-01-01' + Цел((Pow(2, 32) * Значение.HighPart + Значение.LowPart) / 10000000); // здесь должно получиться значение типа "Дата"
	ТекстЗначения = Формат(_lastLogon, "ДЛФ=DT");
Иначе
	ТекстЗначения = Значение.GetObjectProperty(Значение.ADsType);
КонецЕсли;
19. пользователь 22.04.19 13:25
Сообщение было скрыто модератором.
...
Оставьте свое сообщение