Программное создание пользователя 8.3

1. olenka-ul 3 23.05.17 12:42 Сейчас в теме
Всем привет!
Программно создаю пользователя в ЗУП 3.1.
Есть реквизиты формы элемента справочника Пользователи - ВходВПрограммуРазрешен и ПользовательИБИмя - как их заполнить, если я делаю это программно на сервере, и метод ПолучитьФорму() недоступен?
Заранее благодарю!
По теме из базы знаний
Найденные решения
20. Phoedoth 23.05.17 16:55 Сейчас в теме
Может быть поплясать с бубном и добавить?
НовыйПользователь.ОбменДанными.Загрузка = Истина
jan-pechka; e-katerina; VOPOH; +3 Ответить
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
27. ive 3 25.09.18 22:28 Сейчас в теме
(1)Тоже сначала брал за основу (20), но при программном создании пользователя в 1С:Документооборот с ОбменДанными.Загрузка = Истина не выполняются процедуры при записи пользователя и в итоге не хватает прав на объекты.

Для создания пользователя без использования ОбменДанными.Загрузка = Истина, необходимо заполнение структуры:

		ОписаниеПользователяИБ = Новый Структура; 
			ОписаниеПользователяИБ.Вставить("Действие", "Записать"); 
			ОписаниеПользователяИБ.Вставить("Имя", ТекущийПользовательИБ.Имя);
			ОписаниеПользователяИБ.Вставить("ПолноеИмя", ТекущийПользовательИБ.ПолноеИмя);
			ОписаниеПользователяИБ.Вставить("Пароль",ТекущийПользовательИБ.Пароль); 
			ОписаниеПользователяИБ.Вставить("АутентификацияОС", Ложь); 
			ОписаниеПользователяИБ.Вставить("ПоказыватьВСпискеВыбора", Ложь); 
			ОписаниеПользователяИБ.Вставить("ЗапрещеноИзменятьПароль", Истина); 


И передачи ее в дополнительные свойства:

НовыйПользователь.ДополнительныеСвойства.Вставить("ОписаниеПользователяИБ", Свойства); 
gybson; Xershi; sacred_a; +3 Ответить
2. ResetAtreides 23.05.17 13:06 Сейчас в теме
А зачем заполнять реквизиты формы, если её нет, да и сама форма не нужна? (элемент создается программно)
127.0.0.0; +1 1 Ответить
3. olenka-ul 3 23.05.17 13:08 Сейчас в теме
(2) Если эти реквизиты не заполнены, пользователь не сможет зайти в базу.
4. DrBlack 23 23.05.17 13:12 Сейчас в теме
(3) А что мешает их заполнить на сервере?
И вообще вопрос, заааачееем создавать пользователя программно?
29. Pavel_Vladivostok 58 26.03.20 04:03 Сейчас в теме
(4) Если у тебя 250 пользователей, все они есть в соседней базе, и их нужно быстро создать в новой базе, программное создание обработкой это выход.
5. ResetAtreides 23.05.17 13:12 Сейчас в теме
(3) Реквизиты формы на это влиять никак не могут, она не используется при входе в 1С. Может реквизиты объекта? Но в чем тогда проблема их заполнить?
7. olenka-ul 3 23.05.17 15:24 Сейчас в теме
(5) Как только пользователь заходит в 1С, выходит такое сообщение:

Авторизация не выполнена. Работа системы будет завершена.

Пользователь "Такой то" не найден в справочнике "Пользователи".

Обратитесь к администратору.

Это потому, что в справочнике Пользователи не заполнено поле ПользовательИБИмя.
А это реквизит формы элемента.

Связь между пользователем и пользователем ИБ устанавливаю так:
НовыйПользователь.ИдентификаторПользователяИБ = ПользовательИБ.УникальныйИдентификатор;
17. ResetAtreides 23.05.17 16:45 Сейчас в теме
(7)
Это потому, что в справочнике Пользователи не заполнено поле ПользовательИБИмя.
А это реквизит формы элемента.

Вы путаете реквизит справочника и реквизит формы. Это разные вещи, реквизит справочника существует независимо от формы. Насколько понял, вам в этот реквизит(справочника) нужно просто записать имя пользователя информационной базы, так, как он в меню "Администрирование"-"Пользователи" написан
18. olenka-ul 3 23.05.17 16:49 Сейчас в теме
(17) Я ничего не путаю. Это реквизит формы элемента справочника, и в него надо записать имя пользователя информационной базы, так, как он в меню "Администрирование"-"Пользователи" написан. Но как это сделать, я не знаю.
6. ipoloskov 162 23.05.17 13:29 Сейчас в теме
ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(Пользователь.ИдентификаторПользователяИБ);
8. olenka-ul 3 23.05.17 15:24 Сейчас в теме
(6) Как только пользователь заходит в 1С, выходит такое сообщение:

Авторизация не выполнена. Работа системы будет завершена.

Пользователь "Такой то" не найден в справочнике "Пользователи".

Обратитесь к администратору.

Это потому, что в справочнике Пользователи не заполнено поле ПользовательИБИмя.
А это реквизит формы элемента.

Связь между пользователем и пользователем ИБ устанавливаю так:
НовыйПользователь.ИдентификаторПользователяИБ = ПользовательИБ.УникальныйИдентификатор;
9. ipoloskov 162 23.05.17 16:14 Сейчас в теме
(8)
НовыйПользователь.ИдентификаторПользователяИБ = ПользовательИБ.УникальныйИдентификатор;

Текст всей процедуры приведите
alex-l19041; +1 Ответить
10. olenka-ul 3 23.05.17 16:28 Сейчас в теме
Результат = Запрос.Выполнить().Выгрузить();                           

Для Каждого ЭЛ из Результат Цикл
Попытка
СсылкаНаПользователя = Справочники.Пользователи.НайтиПоРеквизиту("ФизическоеЛицо", эл.ФизическоеЛицо);
			
Если СсылкаНаПользователя = Справочники.Пользователи.ПустаяСсылка()  Тогда
				НовыйПользователь = Справочники.Пользователи.СоздатьЭлемент();
				НовыйПользователь.Наименование = эл.ФизическоеЛицо.наименование;
				НовыйПользователь.ФизическоеЛицо = эл.ФизическоеЛицо;
							Иначе
				НовыйПользователь = ссылкаНаПользователя.ПолучитьОбъект();
				НовыйПользователь.ФизическоеЛицо = эл.ФизическоеЛицо;
			КонецЕсли;	
			НовыйПользователь.Записать();

Исключение
Сообщить("Ошибка создания " + Эл.ФизическоеЛицо.Наименование + " " + ОписаниеОшибки());
КонецПопытки;
				
ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(НовыйПользователь.ИдентификаторПользователяИБ);

Если ПользовательИБ = Неопределено Тогда
			
ПользовательИБ = ПользователиИнформационнойБазы.СоздатьПользователя();
			
Имя = ФизическиеЛицаКлиентСервер.ФамилияИнициалы(НовыйПользователь.Наименование);
			Имя1 = СтрЗаменить(Имя, ".", "");
			Имя2 = СтрЗаменить(Имя1, " ", "");

			ПользовательИБ.Имя = Имя2;

			ПользовательИБ.ПолноеИмя = СокрЛП(НовыйПользователь.ПолноеНаименование());

			ЛогинОС = ПолучитьПользователяОС(эл.ФизическоеЛицо);
			
			Если ЛогинОС <> Неопределено тогда
				ПользовательИБ.АутентификацияОС = Истина;
				ПользовательИБ.ПользовательОС = "\\" + ЛогинОС;
				ПользовательИБ.ПоказыватьВСпискеВыбора = Ложь;
			Иначе
				Сообщить("У пользователя не заполнено свойство ""Логин"" " +эл.ФизическоеЛицо.наименование);
				ПользовательИБ.АутентификацияСтандартная = Истина;
				ПользовательИБ.Пароль = НовыйПользователь.Код; 
				ПользовательИБ.ПоказыватьВСпискеВыбора = истина;
			КонецЕсли;			
			
			ПользовательИБ.Язык = Метаданные.Языки.Русский;
			
			ПользовательИБ.Роли.Добавить(Метаданные.роли.БазовыеПрава);
			ПользовательИБ.Роли.Добавить(Метаданные.роли.ЗапускВебКлиента);
			
		КонецЕсли;
	
		Попытка
			ПользовательИБ.Записать(); 
			Сообщить(ПользовательИБ.Имя + " создан!");	
		Исключение
			Сообщить("Ошибка создания или редактирования " +эл.ФизическоеЛицо.наименование +" "+ ОписаниеОшибки());
		КонецПопытки;
		
		НовыйПользователь.ИдентификаторПользователяИБ = ПользовательИБ.УникальныйИдентификатор;
		НовыйПользователь.Записать();
КонецЦикла;
Показать
11. alex-l19041 8 23.05.17 16:33 Сейчас в теме
(10) после создания
ПользователиИнформационнойБазы.СоздатьПользователя();
надо еще создать

элемент справочника Пользователи
12. ipoloskov 162 23.05.17 16:34 Сейчас в теме
После
Сообщить("Ошибка создания или редактирования " +эл.ФизическоеЛицо.наименование +" "+ ОписаниеОшибки()); 

сделайте
ВызватьИсключение;

а то у вас НовыйПользователь.ИдентификаторПользователяИБ записывается, даже если ПользовательИБ не записался.
Пользователи ИБ создаются? Можно посмотреть в конфигураторе.
13. olenka-ul 3 23.05.17 16:35 Сейчас в теме
(12) Спасибо, сделаю.

Да, пользователи ИБ создаются.
14. ipoloskov 162 23.05.17 16:36 Сейчас в теме
(13) тогда непонятно. Сделайте точку останова и посмотрите, что у вас в НовыйПользователь.ИдентификаторПользователяИБ перед и после записи.
15. olenka-ul 3 23.05.17 16:41 Сейчас в теме
(14) До записи нового пользователя - идентификатор пустой, после записи - принимает значение уникального идентификатора пользователя ИБ.
16. ipoloskov 162 23.05.17 16:44 Сейчас в теме
(15) до записи какого пользователя? Пользователь или ПользовательИБ?
19. olenka-ul 3 23.05.17 16:53 Сейчас в теме
(16) до записи пользователя.

Т.е. до строки

НовыйПользователь.ИдентификаторПользователяИБ = ПользовательИБ.УникальныйИдентификатор;

идентификатор пустой, после - принимает значение уникального идентификатора пользователя ИБ.
20. Phoedoth 23.05.17 16:55 Сейчас в теме
Может быть поплясать с бубном и добавить?
НовыйПользователь.ОбменДанными.Загрузка = Истина
jan-pechka; e-katerina; VOPOH; +3 Ответить
21. olenka-ul 3 23.05.17 17:02 Сейчас в теме
(20) Спасибо, помогло!!! Только не понимаю как, не могли бы вы пояснить?
22. borodaty_pontorez 23.05.17 17:04 Сейчас в теме
(21) Скорее всего там какие то проверки идут, а ОбменДанными.Загрузка = Истина их пропускает
23. Phoedoth 23.05.17 17:08 Сейчас в теме
(21) Думаю где-то в перед записью пользователя пишут что-то вроде Объект.ИдентификаторПользователяИБ = Ссылка.ИдентификаторПользователяИБ

чтобы люди покупали конфигурацию для администрирования а не писали обработки. Впрочем я в это не вникал.
25. VOPOH 20.12.17 12:44 Сейчас в теме
(20) Валерий Спасибо Вам Огромное, я 3 дня сидел голову ломал, думал, уж все окончено со мной, но Ваш ответ меня спас!!!
31. jan-pechka 403 27.11.23 10:51 Сейчас в теме
(20)Спасибо. у меня как раз был этот флаг в Истине при загрузке спр.Пользователи - и никак не получалось создать ПользователейИБ, а как заремарила - все взлетело!

НовСпр = Справочники.Пользователи.СоздатьЭлемент();
ЗаполнитьЗначенияСвойств(НовСпр, Спр.Реквизиты);
НовСпр.КонтактнаяИнформация.Загрузить(Спр.КонтактнаяИнформация);

		ОбновляемыеСвойства = Пользователи.НовоеОписаниеПользователяИБ();
        ОбновляемыеСвойства.Вставить("Имя", Спр.Реквизиты.Наименование);
        ОбновляемыеСвойства.Вставить("ПолноеИмя", Спр.Реквизиты.Наименование);
        ОбновляемыеСвойства.Вставить("ПоказыватьВСпискеВыбора", Истина);
        ОбновляемыеСвойства.Вставить("АутентификацияОС", Ложь);
        //ОбновляемыеСвойства.Вставить("ПользовательОС", "\\SL24\" + Выборка.Логин);
        ОбновляемыеСвойства.Вставить("УникальныйИдентификатор", Неопределено); //ИдентификаторПользователяИБ
        ОбновляемыеСвойства.Вставить("Действие", "Записать");
        ОбновляемыеСвойства.Вставить("ВходВПрограммуРазрешен", Истина);
        ОбновляемыеСвойства.Вставить("АутентификацияСтандартная", Истина); //Ложь 
		
        //ОбновляемыеСвойства.Вставить("Пароль", "12345");  
            
        НовСпр.ДополнительныеСвойства.Вставить("Действие", "Записать");
        НовСпр.ДополнительныеСвойства.Вставить("ВходВПрограммуРазрешен", Истина);
        //НовСпр.ДополнительныеСвойства.Вставить("АутентификацияОС", Истина);
        НовСпр.ДополнительныеСвойства.Вставить("АутентификацияСтандартная", Истина);//Ложь
        НовСпр.ДополнительныеСвойства.Вставить("ОписаниеПользователяИБ", ОбновляемыеСвойства);
        //ПользовательОбъект.ОбменДанными.Загрузка = Истина;			
			
			
			//НовСпр.ОбменДанными.Загрузка = Истина; //!!!!!!!!!!!!!!!!!!! Для спр.Пользователи не нужно вкл.этот флаг, иначе ПользовательИБ не создастся!
			
			НовСпр.Записать();

Показать
24. Minakov00078 38 20.09.17 16:54 Сейчас в теме
Это конечно.. треш. Сам потратил несколько часов на связь пользователя ИБ и элемента справочника пользователя. Помогло только

НовыйПользователь.ОбменДанными.Загрузка = Истина.
В противном случае- всегда 0000 00000 вылетали в поле идентификаторИБ для элемента справочника Пользователи после записи чтобы я туда не подставлял
26. olegmedvedev 65 20.12.17 12:58 Сейчас в теме
а может мне кто прояснить - зачем программно создавать пользователя?
28. Gang031 17.09.19 11:30 Сейчас в теме
(26) например нужно из одной базы перенести пользователей в другую
30. Алексей777 92 15.06.21 18:36 Сейчас в теме
// Код для создания пользователя ИБ с привязкой к пользователю БСП (справочник.пользователи).

ГУИДПользователя = "Требуемый уникальный идентификатор";
		
		Ссылка = Справочники.Пользователи.ПолучитьСсылку(Новый УникальныйИдентификатор(ГУИДПользователя ));
				
		Если НЕ Ссылка.ПолучитьОбъект() = Неопределено Тогда
			ОбъектУчета = Ссылка.ПолучитьОбъект();
		Иначе
			ОбъектУчета = Справочники.Пользователи.СоздатьЭлемент();
			ОбъектУчета.УстановитьСсылкуНового(Ссылка);
		КонецЕсли;		
		
		ИмяПользователя = "Иванов Иван Иванович";
		
		ОбъектУчета.Наименование = ФИО;

		ОбъектУчета.ИдентификаторПользователяИБ = Новый УникальныйИдентификатор(ГУИДПользователя);
		
		ОписаниеПользователяИБ = Новый Структура;
		ОписаниеПользователяИБ.Вставить("Действие", "Записать"); 
		ОписаниеПользователяИБ.Вставить("Имя", ИмяПользователя );
		ОписаниеПользователяИБ.Вставить("ПолноеИмя", ИмяПользователя );
		ОписаниеПользователяИБ.Вставить("АутентификацияСтандартная", Истина);
		ОписаниеПользователяИБ.Вставить("Пароль", "123"); 
		ОписаниеПользователяИБ.Вставить("АутентификацияОС", Ложь); 
		ОписаниеПользователяИБ.Вставить("ПоказыватьВСпискеВыбора", Истина); 
		ОписаниеПользователяИБ.Вставить("ЗапрещеноИзменятьПароль", Ложь); 
		ОписаниеПользователяИБ.Вставить("РежимЗапуска","Авто");
		
		ОписаниеПользователяИБ.Вставить("Язык",
		?(Метаданные.ОсновнойЯзык = Неопределено, "", Метаданные.ОсновнойЯзык.Имя));
		

		ОписаниеПользователяИБ.Вставить("Роли");
		
		ОбъектУчета.ДополнительныеСвойства.Вставить("ОписаниеПользователяИБ", ОписаниеПользователяИБ);
		
		ОбъектУчета.Записать();
		
// Назначаем роли через назначение групп доступа. ГруппыДоступа  - это список значений на форме с типом СправочникСсылка.ГруппыДоступа.
		Для Каждого Группа Из ГруппыДоступа Цикл
			ГруппаДоступаОбъект = Группа.Значение.ПолучитьОбъект();
			
			Если ГруппаДоступаОбъект.Пользователи.Найти(ОбъектУчета.Ссылка, "Пользователь") = Неопределено Тогда
				ГруппаДоступаОбъект.Пользователи.Добавить().Пользователь = ОбъектУчета.Ссылка;
				ГруппаДоступаОбъект.Записать();
			КонецЕсли;
			
		КонецЦикла;
Показать
Xershi; Nikita_Tretyakov; sdaf; +3 Ответить
Оставьте свое сообщение
Вакансии
Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)

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

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

Аналитик
Санкт-Петербург
зарплата от 200 000 руб. до 250 000 руб.
Полный день