Имя: Пароль:
1C
1С v8
БСП: Как программно перезаписать пользователя?
0 _stay true_
 
09.09.16
15:00
Всем пятницы! выручайте, более опытные коллеги, ибо туплю малька. Конфа ERP 2.2.1.100, нужно быстро завести 1200 юзеров(считать с таблицы ods), да так, чтобы сразу можно было входить и работать.

Есть один нюанс: есть юзеры, которых пытался программно создать другой 1С-ник, по сему: есть юзеры ИБ без ролей и есть криво записанный Юзер в справочнике(в списке не отображается, галка "вход в программу разрешен" не установлена, но связь с юзером ИБ есть) и есть руками заведенные "Корректные" юзеры.

Как программно завести новых я разобрался:

&НаСервере
Процедура ЗаписатьПользователя(ФИОЮзера, ИмяДляВхода, ПользовательОбъект, ТекСтрока)
    
    ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоИмени(ИмяДляВхода);
    ПользовательОбъект.Наименование                        = ФИОЮзера;
    ОбновляемыеСвойства = Пользователи.НовоеОписаниеПользователяИБ();
    ОбновляемыеСвойства.Вставить("Имя", ИмяДляВхода);
    ОбновляемыеСвойства.Вставить("ПолноеИмя", ФИОЮзера);
    ОбновляемыеСвойства.Вставить("ПоказыватьВСпискеВыбора", Истина);
    ОбновляемыеСвойства.Вставить("АутентификацияСтандартная", Истина);
    ОбновляемыеСвойства.Вставить("УникальныйИдентификатор", ПользовательИБ.УникальныйИдентификатор);
    ОбновляемыеСвойства.Вставить("Действие", "Записать");
    ПользовательОбъект.ДополнительныеСвойства.Вставить("Действие", "Записать");                
    ПользовательОбъект.ДополнительныеСвойства.Вставить("АутентификацияОС", ЛОЖЬ);
    ПользовательОбъект.ДополнительныеСвойства.Вставить("АутентификацияСтандартная", ИСТИНА);
    ПользовательОбъект.ДополнительныеСвойства.Вставить("ОписаниеПользователяИБ", ОбновляемыеСвойства);
    ПользовательОбъект.ФизическоеЛицо = ПроверитьФизЛицо(ФИОЮзера, ТекСтрока.Фамилия, ТекСтрока.Имя, ТекСтрока.Отчество);
    ЗаполнитьКИ(ПользовательОбъект,ТекСтрока);
    ПользовательОбъект.КодАксапта = ТекСтрока.КодАксапта;
    
    Попытка
        ПользовательОбъект.Записать();
    Исключение
        Сообщить(ОписаниеОшибки());
    КонецПопытки;
    //ПриЗаписи пользователя создается пользователь ИБ;    
    ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоИмени(ИмяДляВхода);
    
    ПользовательИБ.Роли.Добавить(Метаданные.Роли.ЗапускВебКлиента);
    ПользовательИБ.Роли.Добавить(Метаданные.Роли.ПолныеПрава);
    ПользовательИБ.Роли.Добавить(Метаданные.Роли.ЗапускТонкогоКлиента);
    ПользовательИБ.Роли.Добавить(Метаданные.Роли.ЗапускТолстогоКлиента);
    
    Попытка
        ПользовательИБ.Записать();
    Исключение
        Сообщить(ОписаниеОшибки());
    КонецПопытки;
    
    //Добавим в указанную группу доступа;
    ГруппаДоступа  = Объект.ГруппаДоступа.Ссылка.ПолучитьОбъект();
    НовЮзерВГруппе = ГруппаДоступа.Пользователи.Добавить();
    НовЮзерВГруппе.Пользователь = ПользовательОбъект;
    
    Попытка
        ГруппаДоступа.Записать();
    Исключение
        Сообщить(ОписаниеОшибки());
    КонецПопытки;



А вот как таким же макаром перезаписать существующих без костылей? Чтобы не удалять их и создавать по новому, а как-то связать существующих.

Заранее спасибо.
Пятнично((
1 _stay true_
 
09.09.16
15:04
Up: если такой процедурой пытаться перезаписывать существующих, получаем ошибку "Такой пользователь ИБ уже зарегистрирован в системе, укажите другое имя для входа".
Если же как в случае создания нового меняем одну строку:

ОбновляемыеСвойства.Вставить("УникальныйИдентификатор", Неопределено)

То получаем "Пользователь с таким именем уже зарегистрирован в справочнике "Пользователи"".
2 _stay true_
 
09.09.16
15:09
Если в справочнике вручную ставишь галку "Вход в программу разрешен", ругается "Имя для входа уже занято".

Велосипедный вариант: удалить юзера ИБ и перезаписать элемент справочника(юзер иб создается в процессе записи элемента справочника).

Кто сталкивался - поделитесь мудростью. Ну позязя:))
3 _stay true_
 
09.09.16
15:27
Придётся велосипедить, ибо никаких революций в пятницу!
4 xafavute
 
09.09.16
15:40
соостветстиве не по имени, а по гуиду идет
5 xafavute
 
09.09.16
15:40
реквизит ИдентификаторПользователяИБ
6 _stay true_
 
09.09.16
15:41
Пробовал, не помогает. Ругается. Только после удаления пользователя ИБ в результате перезаписи элемента справочника всё окей)))
7 xafavute
 
09.09.16
15:42
пройдись по пользователям спаравочника и проставь ид
8 _stay true_
 
09.09.16
15:45
(7) А вот это мысль. Сейчас попробую!
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.