Интеграция 1С и Active Directory на сервере

21.12.19

База данных - Инструменты администратора БД

Получить информацию Active Directory на управляемых формах со стороны сервера, под любым пользователем домена.

Платные

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
(только для физ. лиц)
Интеграция 1С и Active Directory на сервере:
.epf 15,67Kb ver:1.1.3
204 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний за 2430 руб. в месяц

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Предлагаю вам рассмотреть возможность получения информации из Active Directory на стороне сервера. 

&НаСервере
Функция ПолучитьИнформациюActiveDirectoryНаСервере(пИмяДомена, пПользователь, пПароль, пУсловияОтбора)
	Перем Пользователь,Пароль,Домен,Стр,Контроллер,Отбор,Подразделение,Группа;
	
	//ADsPath,Name,Mail,telephoneNumber,displayName,sAMAccountName,department
	СтрКолонок = Новый Структура("ADsPath,sn,givenName,Name,Mail,telephoneNumber,displayName,sAMAccountName,department,userPrincipalName");
    ТаблицаРезультат = Новый ТаблицаЗначений;
	Для Каждого СтрКол Из СтрКолонок Цикл 
		ТаблицаРезультат.Колонки.Добавить(СтрКол.Ключ, Новый ОписаниеТипов("Строка"));
	КонецЦикла;
	ТаблицаРезультат.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка"));
	ТаблицаРезультат.Колонки.Добавить("АутентификацияОС", Новый ОписаниеТипов("Строка"));
	ТаблицаРезультат.Колонки.Добавить("Фамилия", Новый ОписаниеТипов("Строка"));
	ТаблицаРезультат.Колонки.Добавить("Имя", Новый ОписаниеТипов("Строка"));
	ТаблицаРезультат.Колонки.Добавить("Отчество", Новый ОписаниеТипов("Строка"));
	
	ТаблицаРезультат.Колонки.Добавить("Служебный", Новый ОписаниеТипов("Булево"));
	ТаблицаРезультат.Колонки.Добавить("ДоменWINS", Новый ОписаниеТипов("Строка"));
	ТаблицаРезультат.Колонки.Добавить("ДоменDNS", Новый ОписаниеТипов("Строка"));
	
	
	AD_Domain_DC = пИмяДомена;   //Имя домена - Перед (Windows 2000), Имя WINS
	//Домен="....................";    //Каноническое имя домена, Имя DNS
	
	Пользователь = пПользователь;
	Пароль		 = пПароль;
	
    АДСИ = Новый COMОбъект("ADSystemInfo");
    Домен = АДСИ.DomainDNSName;		   //Каноническое имя домена, Имя DNS
	
	//Но на самом деле хватит и обычного пользователя домена
    //Пользователь="администратор@" + Домен;
    //Пароль="СуперпарольАдминистратора";

    ДСО = ПолучитьCOMОбъект("GC:");
    Корень = ДСО.OpenDSObject("GC://RootDSE", ""+Пользователь+"@"+Домен, Пароль,1);
	
	НашДомен = Корень.Get("defaultNamingContext");
	
	ЗаписьАДО = Новый COMОбъект("ADODB.recordset");
	СоединениеАДО = Новый COMОбъект("ADODB.Connection");
	СоединениеАДО.Provider = "ADsDSOObject"; 
	
	ADS_SECURE_AUTHENTICATION = 1;     // Позволяет читать данные, когда не разрешен анонимный доступ 
	
	СоединениеАДО.Properties("User ID"  ).Value = AD_Domain_DC+"\"+Пользователь;
	СоединениеАДО.Properties("Password" ).Value = Пароль;
	СоединениеАДО.Properties("ADSI Flag").Value = ADS_SECURE_AUTHENTICATION;
	
	СоединениеАДО.Open("ADs Provider");
	
	Если пУсловияОтбора = 1 Тогда
		//Все пользователи, кроме отключенных
		ТектсУсловияОтбора = "(!useraccountcontrol:1.2.840.113556.1.4.803:=2)";
		
	ИначеЕсли пУсловияОтбора = 2 Тогда
		//Только отключенные пользователи
		ТектсУсловияОтбора = "(useraccountcontrol:1.2.840.113556.1.4.803:=2)";
		
	Иначе 
		//Все пользователи...
		ТектсУсловияОтбора = "";
	КонецЕсли;
	
	ПоляЗапроса = "ADsPath,sn,givenName,Name,Mail,telephoneNumber,displayName,sAMAccountName,department,userPrincipalName";
	ЗаписьАДО.Open("<GC://" + СокрЛП(НашДомен) + ">;(&(objectCategory=person)(objectClass=user)"+ТектсУсловияОтбора+"); "+ПоляЗапроса+" ;subtree", СоединениеАДО, 0, 1);
	
	
	//ADsPath,Name,Mail,telephoneNumber,displayName,sAMAccountName,department
	//Сообщить("ИмяПользователя " + СокрЛП(ВыборкаАДО.Fields("displayName").Value));
	//Сообщить("ИмяАккаунта "     + СокрЛП(ВыборкаАДО.Fields("sAMAccountName").Value));
	//Сообщить("Подразделение "   + СокрЛП(ВыборкаАДО.Fields("department").Value));
	//Сообщить("Почта "           + СокрЛП(ВыборкаАДО.Fields("mail").Value));
	//Сообщить("Телефон "         + СокрЛП(ВыборкаАДО.Fields("telephoneNumber").Value));
	
	Если ЗаписьАДО.RecordCount > 0 Тогда
		Пока Не ЗаписьАДО.EOF Цикл
			
			Для Каждого СтрКол Из СтрКолонок Цикл 
				СтрКолонок[СтрКол.Ключ] = ЗаписьАДО.Fields(СтрКол.Ключ).Value;
			КонецЦикла;
			
			НоваяСтрока = ТаблицаРезультат.Добавить();
			ЗаполнитьЗначенияСвойств(НоваяСтрока,СтрКолонок);
			Если НЕ ПустаяСтрока(НоваяСтрока.userPrincipalName) Тогда 
				НоваяСтрока.АутентификацияОС = "\\"+AD_Domain_DC+"\"+НоваяСтрока.sAMAccountName;
			КонецЕсли;
			
			//Наименование
			НоваяСтрока.Наименование = СокрЛП(НоваяСтрока.displayName);
			Если ПустаяСтрока(НоваяСтрока.Наименование) Тогда 
				НоваяСтрока.Наименование = СокрЛП(НоваяСтрока.Name);
			КонецЕсли;
			
			//Отчество
			НоваяСтрока.Фамилия	 = СокрЛП(НоваяСтрока.sn);
			НоваяСтрока.Имя		 = СокрЛП(НоваяСтрока.givenName);
			НовоеИмя = "";
			НоваяСтрока.Отчество = ПолучитьОтчествоИзАД(НоваяСтрока.sn, НоваяСтрока.givenName, НоваяСтрока.Name, НовоеИмя);
			Если НЕ ПустаяСтрока(НовоеИмя) Тогда
				НоваяСтрока.Имя	 = НовоеИмя;
			КонецЕсли;
			
			НоваяСтрока.Служебный = ПустаяСтрока(НоваяСтрока.userPrincipalName);
			НоваяСтрока.ДоменWINS = AD_Domain_DC;
			НоваяСтрока.ДоменDNS  = Домен;
	
			Попытка
				ЗаписьАДО.MoveNext();
			Исключение
				Прервать;
			КонецПопытки;
			
		КонецЦикла;
	КонецЕсли;
	
	ЗаписьАДО.Close();
	ЗаписьАДО = Неопределено;
	СоединениеАДО.Close();
	СоединениеАДО = Неопределено;
	
	
	Возврат ТаблицаРезультат; 
КонецФункции

 

 
Доп. функции использованные в функции ПолучитьИнформациюActiveDirectoryНаСервере()

 

&НаСервере
Функция УдалитьДвойныеПробелыИзСтроки(ФИО)
	
	РезФун = СокрЛП(ФИО);
	РезФун = СтрЗаменить(РезФун, "  ", " ");
	Пока Найти(РезФун, "  ") > 0 Цикл 
		РезФун = СтрЗаменить(РезФун, "  ", " ");
	КонецЦикла;
	
	Возврат РезФун;
КонецФункции


&НаСервере
Функция ПолучитьОтчествоИзАД(Знач Фамилия, Знач Имя, Знач ФИО, НовоеИмя)
	
	Если ПустаяСтрока(Фамилия) или ПустаяСтрока(Имя) или ПустаяСтрока(ФИО) Тогда 
		Возврат "";
	КонецЕсли;
	
	Фамилия = СокрЛП(Фамилия);
	Имя = СокрЛП(Имя);
	ФИО = СокрЛП(ФИО);
	
	//Избавимся от лишних пробелов ФИО
	ФИО = УдалитьДвойныеПробелыИзСтроки(ФИО);
	Имя = УдалитьДвойныеПробелыИзСтроки(Имя);
	
	МассивСтрок = СтрРазделить(ФИО," ",Истина);
	Если МассивСтрок.Количество() <> 3 Тогда Возврат ""; КонецЕсли;
	
	МассивСтрокИмя = СтрРазделить(Имя," ",Истина);
	
	//Убрать Фамилию
	Если Найти(ФИО+" ", Фамилия+" ") = 0 Тогда Возврат ""; КонецЕсли;
	ФИО = СокрЛП(СтрЗаменить(ФИО+" ", Фамилия+" ", ""));
	
	//Убрать Имя
	Если МассивСтрокИмя.Количество() = 2 Тогда
		НовоеИмя = СокрЛП(МассивСтрокИмя[0]);
		НовоеОтчество = СокрЛП(МассивСтрокИмя[1]);
		
		//Убрать Имя
		Если Найти(ФИО+" ", НовоеИмя+" ") = 0 Тогда 
			НовоеИмя = "";
			Возврат ""; 
		КонецЕсли;
		ФИО = СокрЛП(СтрЗаменить(ФИО+" ", Фамилия+" ", ""));
		
		//Найти Отчество
		Если Найти(ФИО+" ", НовоеОтчество+" ") = 0 Тогда 
			НовоеИмя = "";
			Возврат ""; 
		КонецЕсли;
		
		ФИО = НовоеОтчество;
		
	Иначе 
		Если Найти(ФИО+" ", Имя+" ") = 0 Тогда Возврат ""; КонецЕсли;
		ФИО = СокрЛП(СтрЗаменить(ФИО+" ", Имя+" ", ""));
	КонецЕсли;
	
	Возврат ФИО;
КонецФункции

 

 

Примеры запросов Active Directory

  1. Поиск административных учётных записей по атрибуту adminCount. Если пользователь является членом защищенной группы (например, Domain Admins, Enterprise Admins и т.п.), ему назначаются ACL, установленные в объекте AdminSDHolder в AD, а атрибуту adminCount пользователя присваивается значение 1.
    (objectClass=user)(objectCategory=Person)(adminCount=1)

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

  2. Все объекты, защищённые AdminSDHolder:
    (adminCount=1)
  3. Поиск всех отключенных учётных записей компьютеров:
    (&(objectClass=computer)(userAccountControl:1.2.840.113556.1.4.803:=2))
  4. Все пользователи:
    (&(objectCategory=user)(objectClass=user)(userPrincipalName=*))

    Или более эффективный вариант:

    (sAMAccountType=805306368)
  5. Все пользователи, кроме отключенных:
    (objectCategory=person)(objectClass=user)(!useraccountcontrol:1.2.840.113556.1.4.803:=2)
  6. Пользователи, которые должны сменить пароль:
    (objectCategory=person)(objectClass=user)(pwdLastSet=0)(!useraccountcontrol:1.2.840.113556.1.4.803:=2)
  7. Пользователи, которые будут заблокированы после ещё одной неудачной попытки ввода пароля. В запросе используется атрибут badPwdCount. Значение нужно указать в соответствии с вашими парольными политиками в домене и учётом гранулированных парольных политик, если используются.
    (objectCategory=user)(badPwdCount>=6)
  8. Пользователи с бессрочным паролем (Password never expires):
    (objectcategory=user)(userAccountControl:1.2.840.113556.1.4.803:=65536)
  9. Все пользователи, которые не меняли свой пароль с указанной даты
    (&(objectCategory=person)(objectClass=user)(pwdLastSet<=131720255990000000))

    PwdLastSet для определённой даты можно получить с помощью PowerShell:

    $date = '28 May 2018 23:59:59' (Get-Date $date).ToFileTimeUTC()

    Подробнее о атрибуте Pwd-Last-Set см. здесь.

  10. Заблокированные пользователи:
    (objectCategory=person)(objectClass=user)(useraccountcontrol:1.2.840.113556.1.4.803:=16)
  11. Пользователи, у которых не заполнено поле должность. По аналогии можно найти пользователей по другим полям, либо по маске *название должности:
    (&(objectCategory=user)(objectClass=user)(!title=*))
  12. Пользователи, созданные за определённый период. Формат дат используется следующий:
    YYYY MM DD HH mm ss.s Z 2017 01 01 00 00 00.0 Z
    (objectCategory=user)(whenCreated>=20170101000000.0Z&<=20171201000000.0Z&)

    objectCategory можно использовать любой, например group, computer, contact и др.

  13. Пользователи без фотографии (атрибут thumbnailPhoto):
    (objectCategory=user)(objectClass=user)(userPrincipalName=*)(!thumbnailPhoto=*)
  14. Все пользователи с Email адресом:
    (objectcategory=person)(mail=*)
  15. Все пользователи без Email адреса:
    (objectcategory=person)(!mail=*)
  16. Все пользователи у которых переопределена квота на почтовый ящик Exchange:
    (&objectCategory=user)(mDBUseDefaults=FALSE)
  17. Все пользователи, скрытые из адресной книги Exchange:
    (objectCategory=person)(objectClass=user)(msExchHideFromAddressLists=TRUE)
  18. Все компьютеры:
    (objectCategory=computer)
  19. Все компьютеры Windows 10:
    (objectCategory=computer)(operatingSystem=Windows 10*)
  20. Все компьютеры Windows Server 2016:
    (objectCategory=computer)(operatingSystem=Windows Server 2016*)
  21. Windows Server 2016 Standard:
    (objectCategory=computer)(operatingSystem=Windows Server 2016 Standard)
  22. Windows Server 2016 Datacenter:
    (objectCategory=computer)(operatingSystem=Windows Server 2016 Datacenter)
  23. Все SQL серверы, с любой ОС, у которых зарегистрирован servicePrincipalName:
    (objectCategory=computer)(servicePrincipalName=MSSQLSvc*)(operatingSystem=Windows Server*)
  24. Все Exchange серверы:
    (objectCategory=computer)(servicePrincipalName=exchangeMDB*)(operatingSystem=Windows Server*)
  25. Все контакты:
    (objectClass=contact)
  26. Поиск SMTP адреса по атрибуту proxyAddress. Позволяет найти любые объекты с почтовым адресом, включая общие папки Exchange:
    (&proxyAddresses=smtp:*@domain.com)
  27. Все группы:
    (objectCategory=group)
  28. Пустые группы, не содержащие ни одного члена:
    (objectCategory=group)(!member=*)
  29. Все организационные подразделения:
    (objectCategory=organizationalUnit)
  30. Все контейнеры:
    (objectCategory=container)
  31. Все цветные принтеры на сервере печати:
    (uncName=*Servername*)(objectCategory=printQueue)(printColor=TRUE)

    Servername — имя сервера печати, на котором установлен и опубликован в Active Directory принтер.

  32. Все доверительные отношения:
    (objectClass=trustedDomain)

 

Пример получения E_MAIL на стороне Клиента.

В качестве входного параметра должна быть указана строка вида \\Домен\Пользователь_домена

&НаКлиенте
Функция ПолучитьАдресИзADO(Знач ПользовательОС) Экспорт 
	
	Email = "";
	
	Если ПустаяСтрока(ПользовательОС) Тогда Возврат Email; КонецЕсли;
	
	Попытка
		
		RootDSE = ПолучитьCOMОбъект("LDAP://RootDSE");
		НашДомен = RootDSE.Get("rootDomainNamingContext");
	
		ЗаписьАДО = Новый COMОбъект("ADODB.recordset");
		СоединениеАДО = Новый COMОбъект("ADODB.Connection");
		СоединениеАДО.Provider = "ADsDSOObject"; 
		СоединениеАДО.Open("ADs Provider");
		
		СтрокаПользователя = СокрЛП(ПользовательОС);
		КоличествоСимволов = СтрЧислоВхождений(СтрокаПользователя,"\");
		Пока КоличествоСимволов > 0 Цикл
			Позиция = Найти(СтрокаПользователя,"\");
			СтрокаПользователя = Сред(СтрокаПользователя, Позиция + 1);
			КоличествоСимволов = СтрЧислоВхождений(СтрокаПользователя,"\");
		КонецЦикла;
		
		ЗаписьАДО.Open("<LDAP://" + СокрЛП(НашДомен) + ">;(&(objectCategory=person)(objectClass=user)(sAMAccountName=" + СтрокаПользователя + "));ADsPath, Mail;subtree", СоединениеАДО, 0, 1);
		
		Если ЗаписьАДО.RecordCount > 0 Тогда
			Пока Не ЗаписьАДО.EOF Цикл
				
				Email = ЗаписьАДО.Fields("Mail").Value;
				
				Попытка
					ЗаписьАДО.MoveNext();
				Исключение
					Прервать;
				КонецПопытки;
				
			КонецЦикла;
		КонецЕсли;
		
		ЗаписьАДО.Close();
		ЗаписьАДО = Неопределено;
		СоединениеАДО.Close();
		СоединениеАДО = Неопределено;
		
		Возврат СокрЛП(Email);
		
	Исключение
		Сообщить(ОписаниеОшибки());
		Возврат Email;
	КонецПопытки;
	
КонецФункции // ПолучитьАдресИзADO()

 

Основные атрибуты Active Directory

Таблица основных пользовательских атрибутов Active Directory

Attribute \ Атрибут Англоязычное название Русскоязычное название Value \ Значение
OU (Organizational Unit) \ Подразделение
distinguishedName  Distinguished Name  Отличительное (уникальное) имя OU=Компания,DC=domain,DC=com
name     Компания
Group \ Группа
distinguishedName  Distinguished Name Отличительное (уникальное) имя CN=Группа,OU=Компания,DC=domain,DC=com
name     Группа
member Members Члены группы (какие пользователи входят в данную группу) CN=Сергей Петрович Иванов,OU=Компания,DC=domain,DC=com
User \ Пользователь
DN Distinguished Name Отличительное (уникальное) имя CN=Сергей Петрович Иванов,OU=Компания,DC=domain,DC=com
DC Domain Component Компонент(класс) доменного имени. DC=domain,DC=com
OU Organizational Unit Подразделение Компания
CN Common Name Общее имя Сергей Петрович Иванов
givenName First name Имя Сергей Петрович
name Full name Полное имя Сергей Петрович Иванов
sn (SurName) Last name Фамилия Иванов
displayName Display Name Выводимое имя Сергей Петрович Иванов
mail E-mail Электронная почта mail@domain.com
sAMAccountName User logon name (pre-Windows 2000) Имя входа пользователя (пред-Windows 2000) IvanovSP
userPrincipalName User logon name Имя входа пользователя IvanovSP@domain.com
memberOf Member Of Член групп (в какую группу входит данный пользователь) CN=Группа,OU=Компания,DC=domain,DC=com

 

Атрибут userAccountControl

Иногда надо понять включена или отключена учетная запись в AD. Или что еще с ней вообще происходит. За это отвечает атрибут userAccountControl, который является суммой нескольких свойств атрибутов. При этом, значение 512 является значением по умолчанию при всех снятых флагах на вкладке «Учетная запись» и каждый дополнительный параметр прибавляется к нему. Например, значения атрибута userAccountControl для наиболее распространенных случаев:
512 — Включена (Enabled)
514 (512+2) — Отключена (Disabled)
66048 (512+65536) — Включена, срок действия пароля не ограничен (Enabled, password never expires)
66050 (512+65536+2) — Отключена, срок действия пароля не ограничен (Disabled, password never expires)

Список основных значений атрибутов userAccountControl:

HEX DEC Описание
0x00000002 2 Учетная запись отключена
0x00000010 16 Учетная запись заблокирована
0x00000020 32 Пароль не требуется
0x00000040 64 Запретить смену пароля пользователем
0x00000080 128 Хранить пароль, используя обратимое шифрование
0x00000200 512 Учетная запись по умолчанию. Представляет собой типичного пользователя
0x00010000 65536 Срок действия пароля не ограничен
0x00040000 262144 Для интерактивного входа в сеть нужна смарт-карта
0x00400000 4194304 Без предварительной проверки подлинности Kerberos
0x00800000 8388608 Пароль пользователя истек

 

 

Использовал следующий материал для написания функции:

 

Приложил обработку, но в основном она состоит из одной функции. Тестирование произведено на версии платформы 8.3.14.1976. Но к платформе код не имеет отношения. Версия конфигурации тоже неважна, работает на любой.

 

 

Интеграция Active Directory сервере Сервер НаСервере Пользователи EMAIL MAIL почта телефон

См. также

SALE! 15%

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку одновременно в несколько потоков. А так же автоматически, без непосредственного участия пользователя. Решение в Реестре отечественного ПО

8400 7140 руб.

20.08.2024    32173    195    104    

186

Инструменты администратора БД Инструментарий разработчика Роли и права Программист 1С v8.3 1C:Бухгалтерия Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

15000 руб.

10.11.2023    15473    65    33    

83

Инструменты администратора БД Роли и права Системный администратор Программист Пользователь 8.3.14 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Документооборот 1С:Зарплата и кадры государственного учреждения 3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Роли… Вы тратите много времени и сил на подбор ролей среди около 2400 в ERP или 1500 в Рознице 2, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 17.06.2025, версия 1.3

19200 руб.

06.12.2023    14195    61    8    

90

Закрытие периода Инструменты администратора БД Корректировка данных Бухгалтер Пользователь Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14400 руб.

29.04.2020    37290    115    152    

82

Инструменты администратора БД Системный администратор 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием Платные (руб)

Конфигурация Комплексная автоматизация 1.1 (и УПП 1.3 тоже) хранит файлы и изображения в справочнике Хранилище дополнительной информации в реквизите Хранилище типа ХранилищеЗначений. Та же история с ВложениямиЭлектроннойПочты. Но при этом присоединенные файлы в Электронном документообороте хранит в томах на диске. Эта доработка позволяет использовать стандартный механизм хранения файлов, изображений и вложений электронных писем в томах на диске. При этом можно разделить тома хранения по объектам конфигурации.

4200 руб.

10.11.2015    63914    99    59    

82

Администрирование Инструменты администратора БД Удаленное управление Системный администратор 1С v8.3 1С:Зарплата и Управление Персоналом 3.x Платные (руб)

Расширение разработано для автоматизации интеграции «1С:Зарплата и управление персоналом (редакция 3.1)» с сервисом Яндекс 360 через платформу «n8n». Расширение позволяет автоматически создавать учетные записи Яндекс для новых сотрудников, обновлять данные существующих сотрудников и блокировать учетные записи уволенных сотрудников. Обмен данными осуществляется через API Яндекс 360 с использованием промежуточного сервера платформы n8n, что обеспечивает гибкость, масштабируемость и упрощение интеграционных процессов.

3600 руб.

03.04.2025    825    2    0    

2

Инструменты администратора БД Пользователь 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

Многие сталкиваются с проблемой когда изображения, находящиеся в базе разные по объему и размерам. Менеджеры могут добавить файлы в очень высоком разрешении, объемом свыше 20 Мегабайт. База данных становится слишком большой, выгрузка на сайт идёт медленно и требуется много место на хостинге. Как сжать картинки и уменьшить размер базы 1С? Это можно сделать с помощью данной обработки. Существует возможность выбрать различные варианты для того чтобы уменьшить картинки: в разы, в процентах от первоначального объема, а также сделать картинки одинаковой ширины. В результате размер базы 1С значительно сократится (в зависимости от количества и размера картинок), а изображения станут небольшого объема, равными по ширине, почти без потери качества. Работает на управляемых формах для УТ 11, КА, ERP.

3000 руб.

21.07.2022    11123    13    4    

22
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. пользователь 22.12.19 16:16
2. DrZombi 305 22.12.19 16:40 Сейчас в теме
Для автоматизации Документооборота, самое то ;)
vashkostya; eddoptimist; acanta; user774630; vovan_victory; jONES1979; YPermitin; +7 Ответить
3. Bonov 23.12.19 12:07 Сейчас в теме
Вот еще бы для Linux-сервера придумали ;)
4. DrZombi 305 23.12.19 12:38 Сейчас в теме
(3) Поготь, Обяжут, придумаем ;)
5. ander_ 24.12.19 10:13 Сейчас в теме
Спасибо, очень кстати :)
6. sergathome 4 26.12.19 16:29 Сейчас в теме
Столкнулся со следующей проблемой - на сервере сервис исполняется от имени локального пользователя. Для доступа к АД используется соединение под доменным. Читается всё хорошо и прекрасно... Проблема возникает если нужно внести в АД изменения, допустим поменять телефон пользователя. Суть проблемы - в 1С отсутствует возможность получить объект на запись под пользователем, отличным от текущего, просто синтаксиса даже такого нет (или я не нашёл) - везде предлагается использовать ПолучитьСОМОбъект, при исполнении которого происходит собственное неявное соединение с АД с потерей контекста любого созданного ранее соединения. Печаль.
7. DrZombi 305 26.12.19 21:51 Сейчас в теме
(6)
Проблема возникает если нужно внести в АД изменения


А вот тут вам надо уже "СУПЕР АДМИНСКИЕ" права.
9. sergathome 4 27.12.19 09:12 Сейчас в теме
(7) Неа. Ничего подобного, никаких чудес и суперправ. Просто другая модель нужна. И она есть, как выяснилось. Только документацию хрен найдёшь.
Root_AD = ПолучитьCOMОбъект("LDAP:");
ОбъектАД = Root_AD.OpenDSObject(ПутьОбъекта,Т.Логин,Т.Пароль,100);
Artios; Дмитрий74Чел; +2 Ответить
8. DrZombi 305 26.12.19 21:52 Сейчас в теме
Мне нужна была такая модель только для получения почты и телефона, для генерации и актуализации адресной книги в 1С.
10. Дмитрий74Чел 249 21.01.20 15:13 Сейчас в теме
Версия конфигурации тоже неважна, работает на любой.

Есть код для регистрации внешней обработки в справочнике обработок и обращение к "ДополнительныеОтчетыИОбработкиКлиентСервер". На "голой" самописке выдает ошибку.
11. Дмитрий74Чел 249 21.01.20 15:23 Сейчас в теме
У нас похоже огромный список. Обработка закончилась на 999 записях, в коде нашел попытка-исключение, воткнул сообщить - получил:
{ВнешняяОбработка.ActiveDirectoryНаСервере.Форма.Форма.Форма(185)}: Ошибка при вызове метода контекста (MoveNext): Произошла исключительная ситуация (Provider): Для этого запроса превышен предел размера.

Как получить более 999 записей?

Похоже можно циклом вытаскивать по 999 записей, но надо как-то передать параметр "очередная первая строка порции".
unknow_user; +1 Ответить
12. DrZombi 305 21.01.20 15:48 Сейчас в теме
(11) Разве что только поиграться с фильтрами

4. Все пользователи:
(&(objectCategory=user)(objectClass=user)(userPrincipalName=*))

Организовываешь цикл.
От А до Я
(&(objectCategory=user)(objectClass=user)(userPrincipalName=А*))

подробнее по ссылке: ldap-фильтр
unknow_user; +1 Ответить
13. letarch 12.11.20 10:35 Сейчас в теме
ну как, вариант для linux ещё не подвезли? ))
14. DrZombi 305 13.11.20 11:57 Сейчас в теме
Не, на линух еще не переходим :)
unknow_user; +1 Ответить
15. dayton78 11.09.21 08:17 Сейчас в теме
почему количество записей выходит только 999, в домене реально больше пользователей. Где установлено ограничение?
16. DrZombi 305 11.09.21 20:25 Сейчас в теме
(15) вот это вам придётся гуглить, у нас всего 700 сотрудников. И этой проблемы нет.
unknow_user; +1 Ответить
17. zilot123 27.01.23 08:18 Сейчас в теме
подскажите, пожалуйста, как получить таблицу пользователей AD с отдельной колонкой "organizational unit"?
20. zilot123 05.02.23 21:35 Сейчас в теме
(17)
подскажите, пожалуйста, как получить таблицу пользователей AD с отдельной колонкой "organizational unit"?

Запрос LDAP
"select
| distinguishedName,
| ou,
| memberof
|from 'НашДомен'
|WHERE objectCategory = 'person' and objectClass = 'user'

возвращает список пользователей, но ou равно null. Можно ли в запросе получить organizational unit отдельным полем?
18. frkbvfnjh 813 01.02.23 06:33 Сейчас в теме
Здравствуйте. Судя по коду, вы перечисляете список атрибутов статически:
СтрКолонок = Новый Структура("ADsPath,sn,givenName,Name,Mail,telephoneNumber,displayName,sAMAccountName,department,userPrincipalName");

Насколько я понимаю, состав атрибутов пользователя может варьироваться в разных организациях (поправьте меня если я не прав, а AD ничерта не понимаю). Если я прав, то вопрос - можно ли как то получить программно весь список атрибутов?
19. DrZombi 305 01.02.23 11:02 Сейчас в теме
(18) Все проще, код изначально был написан для клиентской части. (1С)
Мне стало любопытно, можно ли тоже самое для серверной (1С).

Запросы по ДС забавно, "убогие", т.е. простые, либо все, либо ничего.
Остается вам только экспериментировать с обработкой и с запросом.
В отладчике вы увидите, что он вообще дает.

Ну а все остальное вытекающее вы можете увидеть пройдясь по ссылкам из источников.
21. DrZombi 305 07.02.23 14:01 Сейчас в теме
(20) У каждого свой список. У нас, используются базовые настройки, у вас видимо дополнительные, которые вы добавили самостоятельно...
Экспериментируйте, и у вас все получится :)
unknow_user; +1 Ответить
22. awe007 09.03.23 17:32 Сейчас в теме
А можно из 1с блокировать, отключать учетную запись в домене?
23. itone-yakutsk 01.06.23 09:07 Сейчас в теме
Подскажите, как получить значение с атрибута employeetype? Единственный атрибут который не выдает результат по запросу.
25. maksa2005 374 28.06.24 11:44 Сейчас в теме
Как отключить пользователя? есть пример команды
26. DrZombi 305 01.07.24 10:53 Сейчас в теме
(25) Привет, не... Мне было интересно сам принцип получить пользователя на стороне сервера 1С. Задачей администрировать не занимался. Придется вам самостоятельно штудировать просторы Яндекса и Гугла :)
unknow_user; +1 Ответить
27. maksa2005 374 01.07.24 10:54 Сейчас в теме
(26) занимаюсь. пока отправить обратно безуспешно. гугл пока забанил мои запросы)
28. DrZombi 305 01.07.24 10:55 Сейчас в теме
(27) Да, аналогично, с гуглом. Но яндекс робит :)
unknow_user; maksa2005; +2 Ответить
29. unknow_user 28.10.24 11:00 Сейчас в теме
Автор, благодарю вас, светлая голова.
30. unknow_user 30.10.24 08:07 Сейчас в теме
Отбор по действующей учётке сотрудника
"(!useraccountcontrol:1.2.840.113556.1.4.803:=2)"+"(&(objectCategory=user)(objectClass=user)(sn=Фамилия)(givenName=Имя))"
31. пользователь 26.03.25 14:10
Сообщение было скрыто модератором.
...
32. SysolyatinSN 2 28.05.25 09:15 Сейчас в теме
Добрый день. А есть пример отбора по атрибутам ObjectSID или ObjectGUD?
33. DrZombi 305 03.06.25 07:43 Сейчас в теме
Порыщи по ссылкам, может чего найдешь.
34. DrZombi 305 03.06.25 07:43 Сейчас в теме
Мы переезжаем на Linux, увы придется чего другое придумывать :)
Оставьте свое сообщение