Работа с Active Directory из 1С

Публикация № 275916

Администрирование - Информационная безопасность

AD Active Directory ADSI LDAP icacls

111
Пример работы с AD из 1С

Всем доброго времени суток.
Возникла необходимость работы с AD из 1с в частности создавать пользователей, группы безопасности и организационные единицы.
Нижеприведенный код распологается во общем модуле.
Для работы используется LDAP провайдер ADSI
Пример содержимого передаваемых и возвращаемых переменных:

  • Организационная единица: "OU=TestOU,DC=domain,DC=internal"
  • Группа безопасности: "CN=TestGroup,OU=TestOU,DC=domain,DC=internal"
  • Пользователь: "CN=TestUser,OU=TestOU,DC=domain,DC=internal"

SID пользователя и группы возвращается в виде COMSafeArray. Я его преобразовывавю в читаемый вид. Он мне нужен для установки прав на каталоги и файлы.
Все функции возвращают результат выполнения Ложь/Истина. В случае возникновения ошибки описание возвращается в переменную ОписаниеОшибки.
Надо не забывать, что пользователь, от имени которого запускается 1с (или пользователь сервера приложения если процедуры будут запускаться на сервере) должен обладать соответствующими правами для работы с AD

Привожу на суд общественности результаты:

1) Cоздание организационной единицы

Функция СоздатьОрганизационнуюЕдиницу(
	ИмяОрганизационнойЕдиницы,
	ОрганизационнаяЕдиницаВладелец,
	Описание,
	
	ГруппаДелегат = "",
	ПолноеИмяОрганизационнойЕдиницы = "", //возращается путь до созданой OU
	ОписаниеОшибки = ""
	) Экспорт
	фРезультат					= Истина;
	Попытка	
		ОрганизационнаяЕдиницаВладелецОбъект	= ПолучитьCOMОбъект("LDAP://" + ОрганизационнаяЕдиницаВладелец);
		ОрганизационнаяЕдиница			= ОрганизационнаяЕдиницаВладелецОбъект.Create("OrganizationalUnit", "OU=" + ИмяОрганизационнойЕдиницы);
		ОрганизационнаяЕдиница.description	= Описание;
		Если Не ПустаяСтрока(ГруппаДелегат) Тогда
			ОрганизационнаяЕдиница.managedBy	= ГруппаДелегат;
		КонецЕсли;
		
		ОрганизационнаяЕдиница.SetInfo();
	Исключение
		фРезультат	= Ложь;
		ОписаниеОшибки	= ОписаниеОшибки();
	КонецПопытки;
	Если фРезультат Тогда
		ПолноеИмяОрганизационнойЕдиницы	= ОрганизационнаяЕдиница.distinguishedName;
	КонецЕсли;
	
	Возврат фРезультат;
КонецФункции

2) Создание группы безопасности

Функция СоздатьГруппуБезопасности(
	ИмяГруппыБезопасности,
	ОрганизационнаяЕдиницаВладелец,
	Описание,
	
	ПолноеИмяГруппыБезопасности = "",
	SID = "",
	ОписаниеОшибки = ""
	) Экспорт
	фРезультат					= Истина;
	//ADS_GROUP_TYPE_GLOBAL_GROUP        = 2;
	//ADS_GROUP_TYPE_DOMAIN_LOCAL_GROUP  = 4;
	//ADS_GROUP_TYPE_LOCAL_GROUP         = 4;
	//ADS_GROUP_TYPE_UNIVERSAL_GROUP     = 8;
	//ADS_GROUP_TYPE_SECURITY_ENABLED    = -2147483648;
	
	Попытка	
		ОрганизационнаяЕдиницаВладелецОбъект	= ПолучитьCOMОбъект("LDAP://" + ОрганизационнаяЕдиницаВладелец);
		ГруппаБезопасности			= ОрганизационнаяЕдиницаВладелецОбъект.Create("Group", "CN=" + ИмяГруппыБезопасности);
		ГруппаБезопасности.sAMAccountName	= ИмяГруппыБезопасности;
		ГруппаБезопасности.displayName		= ИмяГруппыБезопасности;
		ГруппаБезопасности.description		= Описание;
		ГруппаБезопасности.groupType		= -2147483646;//ADS_GROUP_TYPE_GLOBAL_GROUP + ADS_GROUP_TYPE_SECURITY_ENABLED; //глобальная группа
		ГруппаБезопасности.SetInfo();
	Исключение
		фРезультат	= Ложь;
		ОписаниеОшибки	= ОписаниеОшибки();
	КонецПопытки;
	
	Если фРезультат Тогда
		SID	= ПреобразоватьSID(ГруппаБезопасности.objectSid);
		ПолноеИмяГруппыБезопасности	= ГруппаБезопасности.distinguishedName;
	КонецЕсли;
	Возврат фРезультат;
КонецФункции

3) Создание пользователя

Функция СоздатьПользователя(
	Логин,
	ПарольПользователя,
	ОрганизационнаяЕдиница,
	АдресЭлектроннойПочты,
	МенятьПарольПриВходе = Истина,
	Описание,
	
	ПутьПользователяAD = "",
	SID = "",
	ОписаниеОшибки = ""
	) Экспорт
	фРезультат					= Истина;
	Попытка	
		ОрганизационнаяЕдиницаОбъект		= ПолучитьCOMОбъект("LDAP://" + ОрганизационнаяЕдиница);
		ПользовательAD						= ОрганизационнаяЕдиницаОбъект.Create("user", "CN=" + Логин);
		ПользовательAD.sAMAccountName		= Логин;
		ПользовательAD.description			= Описание;
		ПользовательAD.userPrincipalName	= Логин + "@" + Константы.НаименованиеДомена.Получить();
		Если Не ПустаяСтрока(АдресЭлектроннойПочты) Тогда
			ПользовательAD.mail					= АдресЭлектроннойПочты;
		КонецЕсли;
		Если МенятьПарольПриВходе Тогда
			ПользовательAD.pwdLastSet		= 0;
		Иначе
			ПользовательAD.pwdLastSet		= -1;
		КонецЕсли;
		
		ПользовательAD.SetInfo();
		ПользовательAD.SetPassword(ПарольПользователя);
	Исключение
		фРезультат	= Ложь;
		ОписаниеОшибки	= ОписаниеОшибки();
	КонецПопытки;

	Если фРезультат Тогда
		SID	= ПреобразоватьSID(ПользовательAD.objectSid);
		ПутьПользователяAD	= ПользовательAD.distinguishedName;
	КонецЕсли;
	
	Если фРезультат Тогда
		ПользовательAD.AccountDisabled = Ложь;
		ПользовательAD.SetInfo();
	КонецЕсли;

	Возврат фРезультат;
КонецФункции

В константе НаименованиеДомена находится название домена типа "domain.internal".

4) Добавление пользователя в группу

Функция ДобавитьПользователяВГруппу(
	ПолноеИмяГруппыБезопасности,
	ПутьПользователяAD,

	ОписаниеОшибки = ""
	) Экспорт
	фРезультат					= Истина;
	Попытка	
		ГруппаБезопасности			= ПолучитьCOMОбъект("LDAP://" + ПолноеИмяГруппыБезопасности);
		ГруппаБезопасности.Add("LDAP://" + ПутьПользователяAD);
		ГруппаБезопасности.SetInfo();
	Исключение
		фРезультат	= Ложь;
		ОписаниеОшибки	= ОписаниеОшибки();
	КонецПопытки;
	
	Возврат фРезультат;
КонецФункции

5) Удаление пользователя из группы

Функция УдалитьПользователяИзГруппы(
	ПолноеИмяГруппыБезопасности,
	ПутьПользователяAD,
	
	ОписаниеОшибки = ""
	) Экспорт
	фРезультат					= Истина;
	Попытка	
		ГруппаБезопасности			= ПолучитьCOMОбъект("LDAP://" + ПолноеИмяГруппыБезопасности);
		ГруппаБезопасности.Remove("LDAP://" + ПутьПользователяAD);
		ГруппаБезопасности.SetInfo();
	Исключение
		фРезультат	= Ложь;
		ОписаниеОшибки	= ОписаниеОшибки();
	КонецПопытки;
	
	Возврат фРезультат;
КонецФункции

6) Переобразование SID из массива в читаемый вид типа "S-1-5-21-3784850290-2022084444-2521399107-4676"

Функция ПреобразоватьSID(objectSid)
	SID	= "S-";
	
	МассивSID	= Новый Массив;
	Для Каждого ЭлементSID Из objectSid Цикл
		МассивSID.Добавить(ЭлементSID);
	КонецЦикла;
	//SID_REVISION
	SID	= SID + Строка(МассивSID[0]) + "-";
	
	КоличествоДашей	= МассивSID[1];
	
	SECURITY_NT_AUTHORITY	= 0;
	Для Инд = 0 По 5 Цикл
		SECURITY_NT_AUTHORITY	= SECURITY_NT_AUTHORITY + МассивSID[2 + Инд] * Pow(2, (5 - Инд) * 8);
	КонецЦикла;
	SID	= SID + Строка(SECURITY_NT_AUTHORITY);
	
	Для Инд = 0 По КоличествоДашей - 1 Цикл
		SID	= SID + "-";
		Даш	= 0;
		Для ИндДаш = 0 По 3 Цикл
			Даш	= Даш + МассивSID[8 + 4 * Инд + ИндДаш] * Pow(2, (ИндДаш) * 8);
		КонецЦикла;
		SID	= SID + Строка(Даш);
	КонецЦикла;
	
	Возврат SID;	
КонецФункции

7) Ну и бонусом привожу процедуру установки прав на каталог. Права ставятся с наследованием на нижестоящие объекты. Для установки используется утилита операционки (в моём случае win 2012 в Asure). При вызове (в толстом клиенте) у 1С теряется фокус. К сожалению как установить права другим способом (например WMI) я не нашел. Планирую копать в сторону PowerShell.

Функция УстановитьПраваНаКаталог(
	ПутьККаталогу,
	SIDГруппы,
	
	Описание = "") Экспорт
	фРезультат	= Истина;
	КодВозврата	= Неопределено;
	Попытка
		ЗапуститьПриложение("icacls " + ПутьККаталогу + " /grant *" + SIDГруппы + ":(CI)(OI)F", , Истина, КодВозврата) 
	Исключение
		Описание	= ОписаниеОшибки();
		фРезультат	= Ложь;
	КонецПопытки;
	
	Если фРезультат Тогда
		Если КодВозврата <> 0 Тогда
			фРезультат	= Ложь;
			Описание	= "Код возврата: " + Строка(КодВозврата);
		КонецЕсли;
	КонецЕсли;
	
	Возврат фРезультат;
КонецФункции

Список использованных ссылок:

http://msdn.microsoft.com/en-us/library/windows/desktop/aa772203%28v=vs.85%29.aspx

http://www.script-coding.com/Python/LDAP.html

http://blogs.msdn.com/b/oldnewthing/archive/2004/03/15/89753.aspx

http://technet.microsoft.com/ru-ru/library/cc753525%28v=ws.10%29.aspx

Незаменимой вешью оказалась утилита Марка Руссиновича

Active Directory Explorer (AD Explorer)

111

Специальные предложения

Вознаграждение за ответ
Показать полностью
Комментарии
Избранное Подписка Сортировка: Древо
1. poyson 07.05.14 09:24 Сейчас в теме
Большое спасибо. Будем пробовать....
2. EvgeniuXP 07.05.14 23:56 Сейчас в теме
права на папки можно через командную строку установить - сам не раз так делал, только какая команда сейчас не вспомню, т.к. делал лет 5 назад...
3. ksuman 11.05.14 06:18 Сейчас в теме
Наш суд общественности - самый гуманный суд в мире!
Может хватит морочить людям голову задачами, не имеющими практического значения.
Все эти операции: удалить, добавить, назначить права - отлично делаются специальными инструментами администрирования.
Единственное что могло бы пригодиться, это вычисление: входит ли текущий пользователь в указанную группу AD и, получение списка доступных групп AD для назначения прав своим внутренним объектам 1С.
Алексей_mir2mb; +1 Ответить
4. migele 118 11.05.14 12:36 Сейчас в теме
(3) ksuman,
Ну на счет практического использования это Ваше сугубо субъективное мнение.
Алгоритмы используются на вполне боевой системе провижининга. А специальными инструментами администрирования попробуйте пакетно создать 100 пользователей AD, 100 пользователей 1с в 30 различных базах и привязать их к соответствующим учеткам.
user927056; +1 Ответить
9. Mi4man 163 27.05.14 14:35 Сейчас в теме
(4) есть ли у Вас реализация поиска по ГУИДу в запросе?
10. brr 177 27.05.14 16:27 Сейчас в теме
(9) Mi4man, SELECT ADsPath FROM 'LDAP://10.0.0.254' WHERE objectGUID='\b4\e1\e1\85\3a\15\ac\4b\81\06\db\44\b0\05\14\11­'
MSK_Step; +1 Ответить
11. Mi4man 163 27.05.14 16:41 Сейчас в теме
(10) brr, что-то я пробовал, но никак не получалось. Эх...
12. brr 177 27.05.14 16:55 Сейчас в теме
(11) Mi4man, а ГУИД именно такое имел представление? Пример: b4e1e1853a15ac4b8106db44b0051411.
13. Mi4man 163 27.05.14 18:25 Сейчас в теме
(12) brr, нет, вот такое: \b4\e1\e1\85\3a\15\ac\4b\81\06\db\44\b0\05\14\11 (строка).

А надо было просто b4e1e1853a15ac4b8106db44b0051411 ?
16. brr 177 28.05.14 11:33 Сейчас в теме
(13) Mi4man, нет, просто я не понял какое представление ГУИД вы использовали
6. Gulf_Stream 12.05.14 19:56 Сейчас в теме
(3) ksuman, немного не согласен, вы видимо не администрировали АД с хотя бы 1000 пользователей. На основании этого кода очень удобно выполнять массовые действия над учетными записями. Тоже накатал под свои нужды конфу для работы с LDAP но выложить на общее обозрение не рискну ибо код там уж больно неряшлив :(
33. Neverpoint 29.10.17 05:52 Сейчас в теме
(3) Вы далеки от реального управления бизнесом. В частности у нас в 1С создают новых клиентов, карточки и они автоматом прописываются в AD который как LDAP раздает в FreePBX и еще ряд специальных услуг для клиентов пароли и юзернеймы. Вы не понимаете о чем речь
Алексей_mir2mb; +1 Ответить
5. stanru1 83 12.05.14 16:44 Сейчас в теме
Спасибо за потраченное время! Я тоже проводил похожие исследования для импорта пользователей из AD, но с созданием так и не хватило терпения разобраться :) Обязательно в будущем воспользуюсь идеями!
7. user_2010 430 15.05.14 12:30 Сейчас в теме
Нужно в 1С.ЗУП для физических лиц формировать сетевое имя пользователя, e-mail, а потом уже глобальная задача: создавать пользователя в AD.

Вот вопрос: я сформирую для физ лица сетевое имя - мне же нужно проверить, что такого пользователя еще нет в AD. Как это сделать?
8. Mi4man 163 27.05.14 14:29 Сейчас в теме
(7) user_2010, для этого необходимо выполнить запрос

ТекстЗапроса = "SELECT ADsPath FROM 'LDAP://"+Домен+"' WHERE objectClass='User' AND userPrincipalName='"+ДоменноеИмя+"'";


Если результат пустой, то соответственно в базе нет такого юзера.
14. KroVladS 32 28.05.14 09:47 Сейчас в теме
гдеб найти примеры работы с openLDAP из под Linux?
15. harmer 1 28.05.14 09:54 Сейчас в теме
Спасибо.
Небольшое замечание: SID формируется с символами НПП.
SID    = SID + Строка(Даш);
17. It-developer 20 27.02.15 19:34 Сейчас в теме
Не получается создать пользователя. Пишет "Ошибка получения объекта COM: Сервер возвратил ссылку". Что может быть?
Вроде все по схеме
element_group = ПолучитьCOMОбъект("LDAP://OU=Папка 2,OU=Пользователи домена,OU=sim,DC=dc,DC=my_company,DC=com)");
18. jake_qwert 22 23.03.15 10:52 Сейчас в теме
А каким кодом можно изменить организационную единицу (OrganizationalUnit) у существующего пользователя? Т.е. мне нужно перенести в другую папку пользователя. Пробывал изменить distinguishedName, выдает ошибку.
19. jake_qwert 22 23.03.15 12:09 Сейчас в теме
Разобрался сам, вот так, если кому-то интересно (первая строка куда перемещаем, вторая откуда)
set cont = GetObject("LDAP://dc=dom,dc=com")
set newobj = cont.MoveHere("LDAP://cn=jeffsmith,ou=sales,dc=dom,dc=com", "cn=jeffsmith")
20. i_rebel 8 10.01.16 08:37 Сейчас в теме
Как получить список групп пользователя из AD ? хочу открывать пользователя AD и видеть его группы AD? ; нужно видеть все группы и те которые присвоены данному пользователю
21. Armando 1391 11.01.16 00:33 Сейчас в теме
(20) i_rebel, код на vbs для получения своих групп:
Set objADSysInfo = CreateObject("ADSystemInfo")
Set objUser = GetObject("LDAP://" & objADSysInfo.UserName)
For Each objGroup in objUser.memberOf
    NameGroup = GetObject("LDAP://" & objGroup).cn
Next
23. i_rebel 8 20.01.16 12:30 Сейчас в теме
(21) Armando, мне нужно все группы, чтобы потом мог сделать интерактивно добавление или удаление из группы
22. imbaZeratul 16 15.01.16 07:31 Сейчас в теме
каким кодом можно считать данные пользователя, допустим описание, телефон и так далее
24. jake_qwert 22 10.02.16 12:50 Сейчас в теме
Все получилось всем спасибо.
25. Danila-Master 100 02.06.16 14:25 Сейчас в теме
Весь инет перерыл, так и не смог найти нормального примера/описания как переименовать пользователя в AD.
Задача такая:
В 1С сотрудник сменил ФИО, зная ее доменное имя, как поменять на новое ФИО в самом AD?
26. blackhole321 1040 02.06.16 16:25 Сейчас в теме
27. Danila-Master 100 30.06.16 11:15 Сейчас в теме
Помогите разобтаться. Почему-то не хочет работать powershell.

В 1С делаю ЗапуститьПриложение("powershell.exe -Command {Set-ADUser -Identity ""1ctest"" -Surname ""Иванов"" -GivenName ""Иван""}");
Имя учетни не меняется.
В cmd.exe пишу строку: powershell.exe -Command {Set-ADUser -Identity "1ctest" -Surname "Иванов" -GivenName "Иван"}
Так же, имя учетки не меняется.
Но если в самой консоле PowerShell'а написать строку: Set-ADUser -Identity "1ctest" -Surname "Иванов" -GivenName "Иван"
То все ништяк, Имя в учетке поменялось.

1С, cmd и консоль PowerShell запущенны от именю учетки, у которой есть права на изменение данных в домене. Так что этот момент стразу отсекаю.
28. blackhole321 1040 30.06.16 12:38 Сейчас в теме
(27) Danila-Master, в 1С код выполняется на том же компьютере, где Вы открывали консоль PowerShell? (М.б. Вы открывали консоль на своей клиентской машине, а ЗапуститьПриложение выполняли на сервере)
29. Danila-Master 100 01.07.16 06:39 Сейчас в теме
(28) blackhole321,
(М.б. Вы открывали консоль на своей клиентской машине, а ЗапуститьПриложение выполняли на сервере)

Так оно и есть и будет. Но запуск происходит от одной и той же учетки, что на моем компе, что на сервере.
Но перед тем как писать в 1С, мне нужно из командной строки добится результата. Поэтому пока делаю все на своем компе.

Столкнулся с интересной ситуацией:
В cmd пишу powrshell.exe, проваливаюсь в сам сонсоль PS.
Далее в PS пишу: Get-ADUser -Identity "1ctest"
Выдает ошибку, что команда Get-ADUser не найдена.
Как оказалось нужно подключить модуль для работы с AD.
> Import-Module ActiveDirectory
> Get-ADUser -Identity "1ctest"
о чудо, Get-ADUser выдал результат. но при этом, даже после подключения модуля, команда Set-ADUser -Identity "1ctest" -Surname "Иванов" -GivenName "Иван"
так и выполнилась. И ошибок нет.
30. Danila-Master 100 01.07.16 11:11 Сейчас в теме
В общем разобрался я :)
1. Нужно поставить PowerShell версии 4.0 (по-умолчанию у windows 7 и 2008 R2 стоит версия 2.0)
В версии 4.0 не нужно импортировать разные модули, shell сама все делает.
2. Рабочая команда в cmd: powershell.exe Set-ADUser -Identity '1ctest' -Surname 'Иванов' -GivenName 'Иван' -DisplayName 'Иванов Иван'
где
Identity - параметр поиска (в данном случае доменное имя пользователя)
Surname - Фамилия
GivenName - Имя
DisplayName - Отображаемое имя
31. Danila-Master 100 15.07.16 08:41 Сейчас в теме
Все, разобралися.
Вдруг кому пригодится, вот рабочий код:
ТекстКоманды = "powershell.exe -command ""$user = Get-ADUser -Identity '" + ДоменноеИмя + "'";
ТекстКоманды = ТекстКоманды + " ; Set-ADUser -Identity $user -Surname '" + ТРег(ФамилияEn) + "' -GivenName '" + ТРег(ИмяEn) + "' -DisplayName '" + ПолноеИмя + "'";
ТекстКоманды = ТекстКоманды + " ; Rename-ADObject -Identity $user -NewName '" + ПолноеИмя + "'""";
			
ЗапуститьПриложение(ТекстКоманды);
32. user695952_stepanyan 10.03.17 11:02 Сейчас в теме
Какой командой можно добавить роль в список ролей MemberOf ? И как получить ссылку на саму группу?
34. burstmashine 22.11.18 11:17 Сейчас в теме
Подскажите: Документ, в нет по параметром выходит список (на картинке. студент , создается пользователь в домене и пароль ). Код брал отсюда для создания пользователе. Как сделать так , чтобы при создании пользователя он проверял и выдавал предупреждение(ошибку или не создовал такого пользака) есть ли уже такой пользователь(так как студент может учится в двух разнух факультетах например.)
Прикрепленные файлы:
35. Danila-Master 100 22.11.18 14:57 Сейчас в теме
Можно так проверить:

objConnection = Новый COMОбъект("ADODB.Connection");
objConnection.Provider = "ADSDSOObject";
objConnection.Open("Active Directory Provider");
Домен1 = "dm";
Домен2 = "bc";
ДоменноеИмя = "Ivanov_Ivan";

query = "<LDAP://DC=" + Домен1 + ",DC=" + Домен2 + ">;(&(objectCategory=person)(objectClass=user)(sAMAccountName=" + ДоменноеИмя + "));name,AdsPath,sAMAccountName,mail,pwdLastSet; SubTree";

objRS = objConnection.Execute(query);

Если Не rs.EOF Тогда
	Сообщить("Пользователь существует");
КонецЕсли;

conn.Close();
Показать
36. burstmashine 26.12.18 14:54 Сейчас в теме
Ещё раз сдравствуйте, а как добавить пользователей в группу, по пункту 4 не получается .Все пользователи в группе Учащиеся, в ней группа Студенты с подпиской. я пробывал и так и сяк, что не так делаю?)
Прикрепленные файлы:
37. triviumfan 10 12.03.19 17:36 Сейчас в теме
Может вы в курсе почему стандартный метод ПользователиОС() возвращает массив структур доменов с ограничением массива пользователей в 100 элементов?
38. MSK_Step 19 02.07.19 18:26 Сейчас в теме
(0) Для автора, преобразование objectGUID в строку, может кому пригодиться
//https://support.microsoft.com/en-us/help/325649/how-to-retrieve-the-guid-of-an-object-from-the-active-directory

МассивГУИД = ПреобразоватьВМассивГУИДНаСервере(ПользовательAD.objectGUID);
        
СтрокаGUID  = СтрСоединить(МассивГУИД,"");
СтрокаGUID = ConvertHexStringGUIDToStringGUID(СтрокаGUID);

Функция ConvertHexStringGUIDToStringGUID(strOctet = "")
    
    tmpGUID = "";
    GUIDStr = "";
    
    GUIDStr = Mid(strOctet, 7, 2);
    GUIDStr = GUIDStr + Mid(strOctet,  5, 2);
    GUIDStr = GUIDStr + Mid(strOctet,  3, 2);
    GUIDStr = GUIDStr + Mid(strOctet,  1, 2);
    GUIDStr = GUIDStr + Mid(strOctet, 11, 2);
    GUIDStr = GUIDStr + Mid(strOctet,  9, 2);
    GUIDStr = GUIDStr + Mid(strOctet, 15, 2);
    GUIDStr = GUIDStr + Mid(strOctet, 13, 2);
    GUIDStr = GUIDStr + Mid(strOctet, 17, СтрДлина(strOctet));
    
     tmpGUID = "{" + Mid(GUIDStr,  1,  8) + "-" + Mid(GUIDStr,  9, 4) 
              + "-" + Mid(GUIDStr, 13,  4) + "-" + Mid(GUIDStr, 17, 4) 
              + "-" + Mid(GUIDStr, 21, 15) + "}";
              
     Возврат tmpGUID;        
КонецФункции
Показать



Функция ПреобразоватьВМассивГУИДНаСервере(objectGUID)
    
    МассивGUID    = Новый Массив;
    Для Каждого ЭлементGUID Из objectGUID Цикл
        МассивGUID.Добавить(DecToAny(ЭлементGUID,16));
    КонецЦикла;
    
    Возврат  МассивGUID;
КонецФункции

Показать



Функция DecToAny(Знач тЗначение, Знач тОснование)
   тРезультат = "";
 
   Пока тЗначение > 0 Цикл
      тРезультат = Сред("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", тЗначение%тОснование + 1, 1) + тРезультат;
      тЗначение = Цел(тЗначение/тОснование) ;
   КонецЦикла;
 
   Возврат тРезультат;
КонецФункции

Показать
Оставьте свое сообщение

См. также

Типичные ошибки при разработке прав доступа 101

Статья Программист Нет файла v8 v8::Права Бесплатно (free) Роли и права

Рассмотрим самые распространенные ошибки в разработке прав доступа.

02.10.2019    5424    YPermitin    39       

Как настроить сервер 1С по умолчанию для ПРОФ лицензии после 10.09.2019 92

Статья Системный администратор Нет файла v8 Бесплатно (free) Администрирование данных 1С

Здесь мы собираем все данные по настройкам сервера для работы ПРОФ лицензии.

11.09.2019    19081    infostart    90       

Использование Zabbix для сбора информации о серверных вызовах и управляемых блокировках с сервера 1С Предприятия, работающего на платформе GNU/Linux 72

Статья Системный администратор Программист Нет файла v8 Linux Бесплатно (free) Администрирование данных 1С Zabbix

Описанные в данном опусе механизмы ни в коей мере не противопоставляются тому, что реализует КИП от 1С или какие-либо другие инструменты (решения)! Это всего лишь еще один взгляд на "проблему", который может быть полезен в некоторых ситуациях.

10.09.2019    6899    Sloth    11       

Уверенное обновление 74

Статья Системный администратор Программист Нет файла v8 Бесплатно (free) Администрирование данных 1С

Уверенное обновление. Анализ файла ОтчетОСравнении.txt. Bash

18.07.2019    4883    vasilev2015    35       

Почему Вы не обслуживаете итоги? 76

Статья Системный администратор Программист Нет файла v8 Бесплатно (free) Администрирование данных 1С

Небольшая заметка по обслуживанию итогов. Все ли Вы делаете правильно?

04.07.2019    5629    YPermitin    16       

Назад в прошлое! Небольшие заметки по администрированию пользователей в УПП 71

Статья Системный администратор Программист Стажер Нет файла v8 УПП1 Бесплатно (free) Роли и права

Небольшие заметки по функционалу "Администрирование пользователей" конфигурации "Управление производственным предприятием" версии 1.3. Затрагиваются такие темы как: роли, профили доступа, дополнительные права, настройки пользователей и ограничения доступа на уровне записей (RLS).

06.06.2019    6256    YPermitin    16       

За 5 шагов добавляем мониторинг счетчиков производительности серверов MS SQL и 1С 90

Статья Системный администратор Программист Нет файла v8 Бесплатно (free) Статистика базы данных Производительность и оптимизация (HighLoad)

Мы расскажем и покажем, как добавить данные счетчиков производительности серверов 1С и MS SQL в нашу базу мониторинга за 15 минут. Приведем список наиболее важных из них, опишем основные особенности.

28.05.2019    7119    ivanov660    5       

Подсистема БСП «Управление доступом», основные объекты и регистры 105

Статья Программист Нет файла v8 v8::УФ v8::Права 1cv8.cf Бесплатно (free) БСП (Библиотека стандартных подсистем) Роли и права

Основные принципы работы подсистемы «Управление доступом» из состава БСП. Виды доступа, ограничение доступа на уровне записей. Описание основных объектов и регистров, используемых подсистемой.

23.05.2019    7988    ids79    8       

Опыт обновления до 8.3.14 - лицензии и утилита ring 76

Статья Системный администратор Нет файла v8 Windows Бесплатно (free) Администрирование данных 1С

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

29.04.2019    19144    Sander80    30       

Практика перехода на Linux и Postgres в небольшой компании (10 пользователей) 99

Статья Системный администратор Программист Нет файла v8 1cv8.cf Ubuntu Бесплатно (free) Администрирование данных 1С

Почему я решил поставить давнему клиенту Linux + Postgres вместо Windows + MS SQL? Что меня останавливало раньше?

22.04.2019    19290    starik-2005    158       

Работа с Active Directory из 1С (загрузка / выгрузка данных) 19

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Абонемент ($m) Внешние источники данных

Загрузка данных из Active Directory / Изменение информации пользователя в AD из 1С.

1 стартмани

26.02.2019    4659    43    Смешной 1С    6       

Скорость работы 1С: Предприятие с разными СУБД: MS SQL и с PostgreSQL 70

Статья Системный администратор Нет файла v8 Бесплатно (free) Администрирование данных 1С

Рассмотрим несколько вариантов работы 1С: Предприятие с различными СУБД.

20.02.2019    16003    valentinko    168       

Возможности типовых шаблонов ограничения доступа на уровне записей (RLS) 162

Статья Программист Нет файла v8 v8::Права Бесплатно (free) Практика программирования БСП (Библиотека стандартных подсистем) Роли и права

Краткий обзор применения типовых шаблонов ограничения доступа на уровне записей в конфигурациях, созданных на базе БСП: #ПоЗначениям, #ПоНаборамЗначений, #ПоЗначениямРасширенный, #ПоЗначениямИНаборамРасширенный

03.02.2019    15443    ids79    9       

Debian 9.7 + PostgreSQL для 1С. Как завести с пол-оборота 71

Статья Системный администратор Нет файла v8 Бесплатно (free) Администрирование данных 1С

Предлагаю взять на заметку информацию по установке и настройке в формате typical, typical, done.

02.02.2019    10217    valentinko    13       

1С и Яндекс.Облако Compute Cloud. Вдоль и поперек 82

Статья no Нет файла v8 Бесплатно (free) Администрирование данных 1С

Бороться и искать. Найти и перепрятать. Достаточно популярная поговорка во времена Союза. Вот и сейчас, те у кого сервер 1С в локальной сети мечтают вынести его в облако, а те у кого в облаке прикупить свой в локальную сеть. Тестирование Яндекс.Облако Compute Cloud для 1С Предприятие оставило у меня приятное впечатление. Возможно кто-то повторит его и внесет больше ясности в настройки виртуальных серверов, использованию API и так далее. Пока же пользуйтесь чем я послал. Интересующихся прошу под кат…

20.01.2019    10065    capitan    29       

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

Статья Программист Нет файла v8 Россия Бесплатно (free) Тестирование и исправление

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

17.01.2019    16219    PoZiTiFFF    52       

Копирование числовых ячеек из 1С в Excel 26

Статья Системный администратор Программист Нет файла v8 1cv8.cf Windows Бесплатно (free) Загрузка и выгрузка в Excel Администрирование данных 1С

Решение проблемы, когда значения скопированных ячеек из табличных документов 1С в Excel воспринимаются последним как текст, т.е. без дополнительного форматирования значений невозможно применить арифметические операции. Поводом для публикации послужило понимание того, что целое предприятие с более сотней активных пользователей уже на протяжении года мучилось с такой, казалось бы на первый взгляд, тривиальной проблемой. Варианты решения, предложенные специалистами helpdesk, обслуживающими данное предприятие, а так же многочисленные обсуждения на форумах, только подтвердили убеждение в необходимости описания способа, который позволил мне качественно и быстро справиться с ситуацией.

15.01.2019    10429    itriot11    21       

Восстановление базы 1С, ошибка источника потока 89

Статья Системный администратор Программист Нет файла v8 Бесплатно (free) Тестирование и исправление

Очередной кирпичик в основу решения проблемы восстановления работоспособности базы после динамического обновления.

09.01.2019    10598    idle    23       

Сервер 1С:Предприятие на Ubuntu 16.04 и PostgreSQL 9.6, для тех, кто хочет узнать его вкус. Рецепт от Капитана 162

Статья Системный администратор Нет файла v8 Бесплатно (free) Администрирование данных 1С

Если кратко описать мое отношение к Postgres: Использовал до того, как это стало мейнстримом. Конкретнее: Собирал на нем сервера для компаний среднего размера (до 50 активных пользователей 1С). На настоящий момент их набирается уже больше, чем пальцев рук пары человек (нормальных, а не фрезеровщиков). Следуя этой статье вы сможете себе собрать такой же и начать спокойную легальную жизнь, максимально легко сделать первый шаг в мир Linux и Postgres. А я побороться за 1. Лучший бизнес-кейс (лучший опыт автоматизации предприятия на базе PostgreSQL). Если, конечно, статья придется вам по вкусу.

25.12.2018    19987    2    capitan    146       

Чем PostgreSQL может быть полезен разработчику 1С 170

Статья Программист Нет файла v8 1cv8.cf Windows Бесплатно (free) Администрирование данных 1С

В статье будут рассмотрены примеры, которые могут оказаться полезными в повседневной работе разработчика 1С и не только: как можно сделать снимок рабочей базы без файла резервной копии, как можно эффективно использовать табличные пространства СУБД PostgreSQL, а также как организовать простой и удобный доступ к админке СУБД посредством мобильных устройств.

20.12.2018    15445    Shmell    38       

Заметки про лицензии 1С 106

Статья Системный администратор Программист Нет файла v8 Бесплатно (free) Администрирование данных 1С

Решил собрать шпаргалку по лицензиями 1С о разных нюансах, с которыми успел столкнуться.

15.12.2018    12493    MrWonder    22       

Когда 1С падает в дамп 98

Статья Системный администратор Нет файла v8 Windows Бесплатно (free) Администрирование данных 1С

Мой опыт устранения проблемы, при которой вылетала платформа 1С.

11.10.2018    25498    987ww765    33       

Кластер серверов 1С 181

Статья Системный администратор Программист Нет файла v8 Бесплатно (free) Администрирование данных 1С

Какой уровень отказоустойчивости при проектировании серверов 1С выбрать? В чем отличия центрального и рабочего сервера? Как правильно настроить требования назначения функциональности? На что влияют настройки кластера и сервера 1С и как в них не запутаться? Антон Дорошкевич дает на эти и многие другие вопросы подробные ответы.

24.09.2018    23548    a.doroshkevich    60       

[Шпаргалка] Несколько версий сервера 1С на одном сервере (компьютер) 108

Статья Системный администратор Программист Нет файла v8 1cv8.cf Бесплатно (free) Администрирование данных 1С

Публикация-шпаргалка. Если у вас возникала необходимость в размещение нескольких серверов 1С разных версий на одном сервере (компьютере).

14.05.2018    15313    rpgshnik    26       

Несколько версий сервера 1С на одном компьютере 208

Статья Системный администратор Нет файла v8 Бесплатно (free) Администрирование данных 1С

Как установить несколько экземляров сервера 1С на один компьютер. Как установить несколько служб агента 1С на один сервер? Как запустить сервера разных платформ на одном компьютере.

18.04.2018    44133    spezc    79       

Запуск Apache 2.4 с модулем 1С внутри Docker контейнера 87

Статья Системный администратор Программист Нет файла v8 Linux Бесплатно (free) Администрирование данных 1С WEB docker Apache

Про Apache и про Linux слышали, наверное, все. А вот про Docker пока нет, но он сильно набирает популярность последнее время и не зря. Поделюсь своим опытом и дам пошаговую инструкцию настройки веб-сервера Apache с модулем 1С внутри Docker контейнера на Linux хосте. При этом сам сервер 1С может находиться совсем на другой машине и на другой операционной системе. Это не важно, главное чтобы Apache смог достучаться до сервера 1С по TCP. В статье дам подробное пояснение по каждой используемой команде со ссылками на документацию по Docker, чтобы не создавалось ощущение непонятной магии. Также прилагаю git репозиторий с описанием всей конфигурации, можете попробовать развернуть у себя буквально за 10 минут.

04.04.2018    17820    petr.myazin    35       

Сервер администрирования кластера серверов 1C:Предприятия и deployka 118

Статья Системный администратор Программист Нет файла v8 Windows Бесплатно (free) Сервисные утилиты Администрирование данных 1С

В данной статье познакомимся с сервером администрирования кластера серверов 1С:Предприятия, а конкретно с утилитами rac.exe и ras.exe, а также программой deployka, с помощью которых становится возможным администрирование кластера серверов 1С:Предприятие из командной строки.

04.04.2018    35119    Tavalik    33       

О лицензиях 1С 207

Статья Системный администратор Нет файла v8 Россия Windows Бесплатно (free) Администрирование данных 1С

Разбираем вопросы по получению и переполучению лицензии 1С.

30.03.2018    84583    D_e_X_T_e_R    141       

1C÷Linux÷PostgreSQL÷Apache 87

Статья Системный администратор Нет файла v8 Linux Бесплатно (free) Администрирование данных 1С Apache

Дружим 1С с Линуксом ИЛИ Установка окружения для работы с 1С на Линуксе под Постгресом и Апачем.

26.03.2018    28041    SerVer1C    43       

Настройка веб сервера Apache + 1С (Пошаговое руководство) 245

Статья Системный администратор Нет файла v8 1cv8.cf Windows Бесплатно (free) Администрирование данных 1С Apache

Пошаговое руководство настройки Web сервера Apache на Windows. Не секрет, что файловые базы через веб-сервер будут работать намного шустрее, чем через обычный доступ к сетевому каталогу. Эффект особенно заметен, когда старые компы вообще не справляются с обычным сетевым доступом, регулярно выплевывают 1С. А доступ через веб сервер даже на компьютерах серии "Хлам" работает на ура!

19.07.2017    164731    Aleksey81    133       

Когда перестает работать отладчик 105

Статья Системный администратор Программист Нет файла v8 Россия Windows Бесплатно (free) Тестирование и исправление

Полагаю, некоторые коллеги уже оказывались в ситуации, когда отладка внезапно пропадала, и различные "шаманские" методики (переустановка платформы, чистка локального кэша и прочее) результата не давали. Опишу свой опыт по выявлению и устранению причины.

13.06.2017    21295    mickey.1cx    20       

1C Fresh - решение для тех, у кого много баз и слабые серверы 79

Статья Системный администратор Программист Нет файла v8 Россия Бесплатно (free) Администрирование данных 1С

Или сказ о том, как Иван-Дурак в оптимизаторы заделался (текст изложен в слегка сказочной форме). Небольшой личный опыт установки и запуска 1С Fresh. Ответы на вопросы, которые мне не смогли дать первые 3 франча.

02.06.2017    17634    Drasha    64       

Сравнение двух объектов одной конфигурации, без танцев с бубнами - в пару кликов 162

Статья Системный администратор Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования Администрирование данных 1С

Короткая иллюстрированная инструкция об использовании малоизвестной и малопонятной функциональности в стандартном инструменте сравнения/объединения конфигураций.

23.05.2017    16227    Chrizt    34       

Ошибка формата потока. Решение с описанием проблемы 103

Статья Системный администратор Нет файла v8 1cv8.cf Россия Бесплатно (free) Тестирование и исправление

Ошибка формата потока. Страшная, но симпатишная своей загадочностью. 1С ничего толком не объясняет и не подсказывает. Ниже решение, которое мне помогает решать данную проблему на 100%. Всё очень просто. Данная ошибка возникает (на моей практике) только у клиент серверного варианта. просто потому что с другим форматом не работаю. Рекомендация: Старайтесь избегать динамического обновления, особенно если у вас возможны кратковременные проблемы с 220 и LAN. Далее описание лечения:

25.04.2017    20705    juker    1       

Недостаточно прав доступа или опять забыли дать права на новые объекты 198

Статья Программист Нет файла v8 Бесплатно (free) Информационная безопасность

При постоянной доработке конфигураций в больших коллективах иногда возникает ситуация, когда программист поместил новые объекты в базу, а права на них дать забыл. При этом обновлять базу не позволяет бизнес. Что же делать? Есть небольшая хитрость.

06.04.2017    23477    Silenser    55       

Автоматизированная проверка конфигураций… и пара слов о стандартах разработки 266

Статья Программист Нет файла v8 1cv8.cf Windows Бесплатно (free) Практика программирования Тестирование и исправление

Предлагаю познакомиться с инструментом "Автоматизированная проверка конфигураций" и получить практику его применения

18.01.2017    43440    3    Vladimir Litvinenko    20       

BDD 1С по душе 78

Статья Программист Нет файла v8 Россия Бесплатно (free) Тестирование и исправление

Размышляя над проблемой тестирования, а точнее над проблемой качества решений, умные и не очень люди, в основном ломают копья над следующим противоречием “надо тестировать, но надо разрабатывать, а не тестировать” (Алексей Лустин) www.silverbulleters.org

15.01.2017    20724    dima_tuzov    44       

Дружба крепкая начинается... или мой опыт MS SQL Server на Linux для работы с 1С:Предприятие 8 73

Статья Системный администратор Программист Нет файла v8 Бесплатно (free) Администрирование данных 1С

На днях появилась новость о том, что MS SQL Server представлен для платформы LINUX. Приятная новость. Проверил связку Сервер 1С:Предприятие 8 на Windows + MS SQL Server на Linux и вот что вышло...

20.11.2016    24314    bpc222    47       

Права доступа в 1С:Документооборот 2.1 40

Статья Системный администратор Программист Нет файла v8 ДО Документооборот и делопроизводство Бесплатно (free) Информационная безопасность

В программе 1С:Документооборот ред 2.1 механизм системы прав доступа сильно изменился. С одной стороны, права доступа в данной версии стали проще и быстрее, с другой стороны - права по рабочим группам объектов теперь могут противоречить политикам доступа. Разберемся в данной статье как работает механизм прав доступа в 1с документообороте 2.1.

16.09.2016    56868    vlush78    0       

Загрузка логов журнала регистрации 1С из MS SQL в ElasticSearch 71

Статья no Архив с данными v8 Бесплатно (free) Журнал регистрации

Еще один инструмент хранения и визуализации логов журнала регистрации 1С

01.09.2016    27319    farukshin    9       

Формат баз 1CD - классические и 8.3.8 122

Статья Системный администратор Программист Нет файла v8 Бесплатно (free) Практика программирования Администрирование данных 1С

Некоторые дополнения к описанию формата 1CD от awa и описание нововведений в 8.3.8

14.07.2016    26844    Pasha1st    20       

Технология публикации Fresh. С чем "едят" 91

Статья Системный администратор Программист Нет файла v8 КА1 БП2.0 ЗУП2.5 УНФ Россия Windows Бесплатно (free) Администрирование данных 1С

Я работаю в бухгалтерской компании, мы ведём бухгалтерию примерно для 1000 клиентов. У нас почти 1,5 тысячи баз 1С. Хочу поделиться тем, как мы используем Fresh и строим своё облако с его помощью. Часть первая — обзорная.

17.03.2016    22421    faustrue    68       

Установка 1С Сервер 8.3.7 (i386 и x64) и PostgreSQL 9.4.x x64 на Ubuntu Server 14.04 x64 136

Статья Системный администратор Нет файла v8 Linux Бесплатно (free) Администрирование данных 1С

Рассматривается вариант установки 32-битного и 64-битного 1С Сервера 8.3.7 (на примере версии 8.3.7.1970), а также 64-битного PostgreSQL 9.4.x на 64-битный Ubuntu Server 14.04. Опционально приводятся варианты настройки Timezone и синхронизации времени, установки Apache 2.2, настройки файрвола UFW, установки OpenJDK 1.8 и включения режима отладки 1С Сервера на 64-битном Ubuntu Server 14.04.

17.03.2016    95262    vikdes    67       

Практические советы по настройке и работе с сервером 1С: 8 105

Статья Системный администратор Программист Нет файла v8 Россия Windows Бесплатно (free) Администрирование данных 1С

1. Как запустить более одной службы 1С для параллельной работы с разными версиями платформы 1С: 8.0, 8.1, 8,2 8.3 и т. д. 2. Как перезапустить сервер? 3. Как перенести БД с платформы на платформу, без потери журнала регистрации?

1 стартмани

09.03.2016    19837    Zlohobbit    9       

Сборка PostgreSQL 9.4.2 из исходников с патчами от 1С 83

Статья Системный администратор Программист Нет файла v8 Бесплатно (free) Производительность и оптимизация (HighLoad) Администрирование данных 1С

Честно - не нашел нигде описания того, как пропатчить KDE для FreeBSD, поэтому решил ликвидировать данную несправедливость. Ниже по тексту я расскажу не только про то, как собрать Postgres, но и как использовать флаги оптимизации для вашего процессора, чтобы все работало максимально быстро. Ну и немного остановлюсь на конфигурировании и администрировании.

23.02.2016    27668    starik-2005    28       

Для чего НЕ нужны индексы 192

Статья Системный администратор Программист Нет файла v8 Бесплатно (free) Статистика базы данных Практика программирования

Индекс лишним не бывает? Чем больше индексов, тем лучше? А не проиндексировать ли это измерение на всякий случай? Если подобные вопросы иногда возникают в вашей голове, то эту статью прочитать было бы весьма полезно.

16.01.2016    40574    comol    93