1. triviumfan 10 11.03.19 09:49 Сейчас в теме +1 $m

Получение списка пользователей домена

Добрый день, коллеги.
Платформа 8.3.13.1644, 8.2.12

Почему-то ПользователиОС() возвращает таблицу значений с массивами с ограничением в 100 пользователей. Но инфы этого ньюанса нигде нет!
Получается, что имя пользователя домена нужно вводить вручную (пользователей около 300).
Прикол в том, что этом механизм используется во всех типовых базах! Добавляешь пользователя, указываешь авторизацию ОС, а пользователя выбрать не даёт! Мда...
Прикрепленные файлы:
Вознаграждение за ответ
Показать полностью
Ответы
Избранное Подписка Сортировка: Древо
4. EVKash 2 11.03.19 10:52 Сейчас в теме
(1) конфигурация не базовая случаем?
6. triviumfan 10 11.03.19 10:58 Сейчас в теме
14. dim_1c 11.03.19 13:31 Сейчас в теме
(1) А не может это быть настройкой домена (параметр MaxPageSize)?
MaxPageSize - This value controls the maximum number of objects that are returned in a single search result, independent of how large each returned object is. To perform a search where the result might exceed this number of objects, the client must specify the paged search control. This is to group the returned results in groups that are no larger than the MaxPageSize value. To summarize, MaxPageSize controls the number of objects that are returned in a single search result.

How to view and set LDAP policy in Active Directory by using Ntdsutil.exe
И здесь, к примеру, упоминается этот нюанс.
triviumfan; +1 Ответить
15. triviumfan 10 12.03.19 15:13 Сейчас в теме
(14) Как-то так... в общем так и не разобрались. 1000 это вообще значение по умолчанию.
Прикрепленные файлы:
2. SedovSU@mail.ru 292 11.03.19 10:48 Сейчас в теме
Вот у меня такая платформа стоит, у нас 5 доменов, в каждом домене не по одной тысячи пользователей. возвращает все как надо. без каких либо ограничений
3. SedovSU@mail.ru 292 11.03.19 10:49 Сейчас в теме
ВОт небольшой скрин в пару строк кода
Прикрепленные файлы:
triviumfan; +1 Ответить
5. triviumfan 10 11.03.19 10:58 Сейчас в теме
(3) Какой режим совместимости?
7. SedovSU@mail.ru 292 11.03.19 11:00 Сейчас в теме
8. triviumfan 10 11.03.19 11:03 Сейчас в теме
(7) У меня режим совместимости Версия 8.3.8
Количество 100 пользователей
Прикрепленные файлы:
10. SedovSU@mail.ru 292 11.03.19 11:04 Сейчас в теме
(8) сейчас тоже попробую сделать совместимость 8.3.8
9. triviumfan 10 11.03.19 11:04 Сейчас в теме
ПользователиОС() получает массив структур доменов, где в структуре лежит ещё один массив пользователей, но с ограничением в 100 элементов.
11. SedovSU@mail.ru 292 11.03.19 11:17 Сейчас в теме
(9) поставил режим совместимости 8.3.8 все равно вернул несколько тысяч пользователей, без ограничений
12. triviumfan 10 11.03.19 11:18 Сейчас в теме
(11) Может есть идеи с чем это связано? Опять шаманство с настройками сети?
13. SedovSU@mail.ru 292 11.03.19 11:24 Сейчас в теме
(12) Даже не подскажу, может папочки что ли почистить / кеши. Вообще такого быть не должно
16. triviumfan 10 12.03.19 15:24 Сейчас в теме
(13) Станислив, а не подскажите где именно чистить?
18. SedovSU@mail.ru 292 13.03.19 06:10 Сейчас в теме
(16) обычно это папки C:\Users\ИмяПользователя\AppData\Local\1C и C:\Users\ИмяПользователя\AppData\Roaming\1C
23. qazaas 13.03.19 13:34 Сейчас в теме
(9) При использовании в тонком клиенте, информация возвращается в виде массива структур со свойствами (аналогичными колонкам возвращаемой таблицы значений).
Попробуйте в толстом клиенте.
24. triviumfan 10 13.03.19 14:23 Сейчас в теме
(23) Пробовал и в тонком и в толстом.
17. triviumfan 10 12.03.19 17:53 Сейчас в теме
Но если получать пользователей так, то никаких ограничений нет:
Функция ПолучитьСписокПользователейВГруппеДомена (ИмяДомена, ИмяГруппы) Экспорт  
	Результат = Новый Массив(); 
	objNameSpace = "";  
	Попытка  
		objNameSpace = ПолучитьCOMОбъект("WinNT://" + СокрЛП(ИмяДомена) + "/" + СокрЛП(ИмяГруппы) + ", Group");
		Для каждого item Из objNameSpace.Members() Цикл   
			Результат.Добавить(item.Name);
		КонецЦикла; 
	Исключение  
		Результат.Очистить(); 
	КонецПопытки;  
	
	Возврат Результат;	
КонецФункции
Показать
19. FirePyres 44 13.03.19 09:09 Сейчас в теме
У нас в базе я пользователей из ActiveDirectory получаю, ни каких ограничений.
Где слямзил, не помню где.


&НаСервере
Процедура ОбновитьСписокПользователейActiveDirectoryНаСервере()

    ТЗ=Новый ТаблицаЗначений;
    АДСИ=Новый COMОбъект("ADSystemInfo");
    Контроллер=АДСИ.GetAnyDCName();
    Домен=АДСИ.DomainDNSName;
	
	//Пользователь="администратор@" + Домен;
	//Пароль="СуперпарольАдминистратора";

    ДСО=ПолучитьCOMОбъект("GC:");
    Корень=ДСО.OpenDSObject("GC://RootDSE", Пользователь, Пароль,1);
    Провайдер="Provider=ADSDSOObject;";

    ИмяДомена = "Infostart-Infostart";

    Соединение = Новый COMОбъект("ADODB.Connection");
    Соединение.Open(Провайдер);
	
	ТекстЗапроса = "<GC://DC="+ИмяДомена+",DC=com>;(sAMAccountName=*.*);AdsPath;subTree";
    Записи=Соединение.Execute(ТекстЗапроса);
	
	Пока Записи.EOF=0 Цикл
		obj = ПолучитьCOMОбъект(Записи.Fields(0).Value);
		ИмяПользователя = obj.displayName;
		ЛогинAD = obj.userPrincipalName;
		Запись = РегистрыСведений.ПользователиActiveDirectory.СоздатьМенеджерЗаписи();
		Запись.Логин = ЛогинAD;
		Запись.Прочитать();
		Запись.Логин = ЛогинAD;
		Запись.ИмяПользователя = ИмяПользователя;
		Запись.Записать();
        Записи.MoveNext();
    КонецЦикла;
КонецПроцедуры

Показать
20. triviumfan 10 13.03.19 11:33 Сейчас в теме
(19) Я бы уже давно что-нибудь придумал для своих доработок, но мне нужно разобраться, почему стандартный метод не работает, не буду же я все наши конфы модифицировать для вывода списка учетных записей пользователей...
21. triviumfan 10 13.03.19 11:38 Сейчас в теме
Перефразирую - нужно разобраться, почему при открытии формы "ФормаВыбораПользователяWindows" во всех конфигурациях (и проверил на нескольких наших серваках) список пользователей ограничен ровно на 100 элементов.
22. triviumfan 10 13.03.19 13:14 Сейчас в теме
Устаревшая функция ПользователиWindows() (она до сих пор используется в Альфа-авто 4 и5 редакций) также получает список с ограничением в 100 элементов.
25. triviumfan 10 14.03.19 10:17 Сейчас в теме
Есть тут грамотные сисадмины?
28. ligsht 7 14.03.19 15:41 Сейчас в теме
(25) У меня функция ПользователиWindows() и ПользователиОС() возвращает 237 пользователей. Платформа 8.3.10.2252
Если получить пользователей так objNameSpace = ПолучитьCOMОбъект("WinNT://" + СокрЛП(ИмяДомена) + "/" + СокрЛП(ИмяГруппы) + ", Group");
То вы получите пользователей локальной машины а не домена. В примере от FirePyres конкретно пример для домена. Ограничение на 100 пользователей это установлено в LDAP. Видимо стоят последние обновления.
https://www.oreilly.com/library/view/active-directory-cookbook/0596004648/ch04s08.html
https://www.oreilly.com/library/view/active-directory-cookbook/0596004648/ch04s24.html
30. triviumfan 10 15.03.19 11:10 Сейчас в теме
(28) MaxPageSize = 1000 по умолчанию, я выше скриншот показал (см. (15))
26. makfromkz 5 14.03.19 12:33 Сейчас в теме
моих сисадминов в 1С на аркане не затащишь :)
27. makfromkz 5 14.03.19 12:45 Сейчас в теме
кликнул на ссылку методическая информация
http://www.1centerprise.com/devlinks?C="id=00042O00053M04029;lan=ru"#!id=00042O00053M04029
а там: Сейчас нет методической информации для этого раздела.
29. SedovSU@mail.ru 292 15.03.19 09:01 Сейчас в теме
Вот у вас скорее всего точно стоит какое ограничение. Поэтому и получаете только 100 пользователей. Вы попробуйте самостоятельно открыть активдиректи и посмотреть на списки пользователей. Скорее всего вы там и увидите ваши только 100 пользователей
31. LeXXik 15.03.19 13:51 Сейчас в теме
32. triviumfan 10 17.03.19 14:48 Сейчас в теме
Ответа так и не найден =\
33. ligsht 7 18.03.19 11:31 Сейчас в теме
Вот тут у человека подобная проблема https://powerusers.microsoft.com/t5/I-Found-A-Bug/get-group-members-returns-maximum-100-users/td-p/58256. Была еще подобная проблема при репликации пользователей. Оказалось что на 100-м пользователей происходила ошибка и поэтому программа получала только 100 пользователей.

Для начала было бы неплохо сравнить вашу версию AD и серверов с пользователем "SedovSU@mail.ru"
triviumfan; +1 Ответить
34. triviumfan 10 18.03.19 15:00 Сейчас в теме
но решения там так и нет.
(33)
вашу версию

2016
35. SlavaKron 18.03.19 15:12 Сейчас в теме
SWbemLocator = Новый COMОбъект("WbemScripting.SWbemLocator");
SWbemServices = SWbemLocator.ConnectServer();
МассивПользователей = SWbemServices.ExecQuery("sel ect * fr om Win32_UserAccount");
36. triviumfan 10 18.03.19 16:31 Сейчас в теме
(35)
SWbemLocator = Новый COMОбъект("WbemScripting.SWbemLocator");
SWbemServices = SWbemLocator.ConnectServer();
МассивПользователей = SWbemServices.ExecQuery("sel ect * fr om Win32_UserAccount");

вопрос не в том, как получить корректный список пользователей, а почему не работает стандартная функция платформы.
ЗЫ: И у меня МассивПользователей.Count() = 399.
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Нижний Новгород
зарплата до 120 000 руб.
Полный день

Программист 1С
Волгоград
зарплата от 45 000 руб. до 90 000 руб.
Полный день

Автор новостных обзоров на тему 1С и бухучета
Санкт-Петербург
По совместительству

Консультант-аналитик 1С
Москва
зарплата от 70 000 руб. до 100 000 руб.
Полный день

Программист 1С
Москва
зарплата от 80 000 руб. до 120 000 руб.
Временный (на проект)