Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

БСП: Как программно перезаписать пользователя?

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

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

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

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

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

    ГруппаДоступа  = Объект.ГруппаДоступа.Ссылка.ПолучитьОбъект();
    НовЮзерВГруппе = ГруппаДоступа.Пользователи.Добавить();
    НовЮзерВГруппе.Пользователь = ПользовательОбъект;
    
    Попытка
        ГруппаДоступа.Записать();
    Исключение
        Сообщить(ОписаниеОшибки());
    КонецПопытки;



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

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

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

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

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

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование.
Фредерик Брукс-младший
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует