Имя: Пароль:
1C
1С v8
Как поставить галочку в справочнике Пользователи
0 IvanVlad007
 
19.03.19
13:27
Как проставить галочку "ДоступКИнформационнойБазеРазрешен" в справочнике "Пользователи" Если она находится на форме. Или как сделать так чтобы пользователь ИБ и пользователь справочника "Пользователи" были связаны. Использовал этот код тоже не помогает. Пользователь создается а связи все равно нету и если руками поставить галочку "ДоступКИнформационнойБазеРазрешен" то при записи справочника будет создаваться новый пользователь ИБ. Пользователь создается через ComConnector по Guid.

                СтрокаGUID = СокрЛП(Результат.ИдентификаторПользователяИБ);
        НовыйGUID = V8.NewObject("УникальныйИдентификатор",СтрокаGUID);
        СпрСсылка = V8.Справочники.Пользователи.ПолучитьСсылку(НовыйGUID);
        Если СпрСсылка.ПолучитьОбъект()=Неопределено Тогда
            НовыйПользователь = V8.Справочники.Пользователи.СоздатьЭлемент();
            НовыйПользователь.УстановитьСсылкуНового(СпрСсылка);
            НовыйПользователь.ИдентификаторПользователяИБ = НовыйGUID;
            НовыйПользователь.Наименование = Результат.Наименование;
            НовыйПользователь.ОсновнойEmail = Результат.Email;
            НовыйПользователь.ОсновнойТелефон = Результат.Телефон;
            НовыйПользователь.Логин = Результат.Наименование;
            НовыйПользователь.Служебный = Ложь;
            НовыйПользователь.Должность = ПолучитьДолжность(Результат.Должность,V8);
            НовыйПользователь.Организация = ПолучитьОрганизацию(Результат.Подразделение2,V8);
            НовыйПользователь.Подразделение = ПолучитьПодразделение(Результат.Подразделение2,V8,НовыйПользователь.Организация);
            НовыйПользователь.Записать();
            ОписаниеПользователяИБ = Новый Структура;
            ОписаниеПользователяИБ.Вставить("Действие","Записать");
            ОписаниеПользователяИБ.Вставить("Имя",Результат.Наименование);
            ОписаниеПользователяИБ.Вставить("Пароль","123");
            ОписаниеПользователяИБ.Вставить("Язык","");    
            ОписаниеПользователяИБ.Вставить("АутентификацияСтандартная ",Истина);
            ОписаниеПользователяИБ.Вставить("ПоказыватьВСпискеВыбора",Истина);
            ОписаниеПользователяИБ.Вставить("РежимЗапуска","Авто");
            ОписаниеПользователяИБ.Вставить("ДоступКИнформационнойБазеРазрешен",Истина);
            НовыйПользователь.ДополнительныеСвойства.Вставить("ОписаниеПользователяИБ",ОписаниеПользователяИБ);
            V8.ПользователиСлужебный.НачатьОбработкуПользователяИБ(НовыйПользователь,ПараметрыОбработкиПользователяИБ);
            V8.ПользователиСлужебный.ЗавершитьОбработкуПользователяИБ(НовыйПользователь,ПараметрыОбработкиПользователяИБ);
1 Mort
 
19.03.19
13:49
НовыйПользователь.ИдентификаторПользователяИБ = НовыйGUID вот где связь настраивается.
2 Mort
 
19.03.19
13:52
ПользователиСлужебный.НачатьОбработкуПользователяИБ - сейчас нет под рукой, но если туда передается объект, большая вероятность что в него вносятся изменения. А ты записываешь его ещё до вызова.
3 IvanVlad007
 
19.03.19
14:01
(1) Я так делал, он мне пишет ошибку
"Поле объекта недоступно для записи (УникальныйИдентификатор)
ПользовательИБ.УникальныйИдентификатор = НовыйGUID;"

Вот код:
            НовыйПользователь = V8.Справочники.Пользователи.СоздатьЭлемент();
            НовыйПользователь.УстановитьСсылкуНового(СпрСсылка);
            НовыйПользователь.ИдентификаторПользователяИБ = НовыйGUID;
            НовыйПользователь.Наименование = Результат.Наименование;
            НовыйПользователь.ОсновнойEmail = Результат.Email;
            НовыйПользователь.ОсновнойТелефон = Результат.Телефон;
            НовыйПользователь.Логин = Результат.Наименование;
            НовыйПользователь.Служебный = Ложь;
            НовыйПользователь.Должность = ПолучитьДолжность(Результат.Должность,V8);
            НовыйПользователь.Организация = ПолучитьОрганизацию(Результат.Подразделение2,V8);
            НовыйПользователь.Подразделение =
                        ПолучитьПодразделение(Результат.Подразделение2,V8,НовыйПользователь.Организация);
            НовыйПользователь.Записать();
            ПользовательИБ = V8.ПользователиИнформационнойБазы.СоздатьПользователя();
            ПользовательИБ.Имя = Результат.Наименование;
            ПользовательИБ.УникальныйИдентификатор = НовыйGUID;
            ПользовательИБ.АутентификацияСтандартная = Истина;
            ПользовательИБ.Пароль = "123";
            ПользовательИБ.ПоказыватьВСпискеВыбора = Истина;
            ПользовательИБ.Записать();
4 Mort
 
19.03.19
14:03
(3) Ну так сначала запиши пользователя ИБ, а потом его гуид укажи пользователю - элементу справочника.
5 IvanVlad007
 
19.03.19
14:03
(2) Объясни пожалуйста что значит записываю до вызова? Я просто этот код нашел на просторах интернета. Заранее благодарен
6 IvanVlad007
 
19.03.19
14:04
(4) Понятно, это плохо т.к. мне нужно еще по GUID связать пользователя из другой базы. а присвоить получается пользователю его нельзя(. Потому что у меня синхронизация между базами будет не по коду а по GUIDу
7 IvanVlad007
 
19.03.19
14:08
(4) Спасибо большое)))) Ура))) Все заработало, только теперь надо продумать как им присвоить GUID из другой базы)))
8 aleks_default
 
19.03.19
14:12
не создавай нового пользователя ИБ в другой базе, а передавай его напрямую в виде XML
9 IvanVlad007
 
19.03.19
14:36
Спасибо большое всем за помощь. Высылаю работающий код, вдруг кому пригодиться)



            ПользовательИБ = V8.ПользователиИнформационнойБазы.СоздатьПользователя();
            ПользовательИБ.Имя = Результат.Наименование;
            ПользовательИБ.АутентификацияСтандартная = Истина;
            ПользовательИБ.Пароль = "123";
            ПользовательИБ.ПоказыватьВСпискеВыбора = Истина;
            ПользовательИБ.Записать();
            НовыйПользователь = V8.Справочники.Пользователи.СоздатьЭлемент();
            НовыйПользователь.УстановитьСсылкуНового(СпрСсылка);
            НовыйПользователь.ИдентификаторПользователяИБ = ПользовательИБ.УникальныйИдентификатор;
            НовыйПользователь.Наименование = Результат.Наименование;
            НовыйПользователь.ОсновнойEmail = Результат.Email;
            НовыйПользователь.ОсновнойТелефон = Результат.Телефон;
            НовыйПользователь.Логин = Результат.Наименование;
            НовыйПользователь.Служебный = Ложь;
            НовыйПользователь.Должность = ПолучитьДолжность(Результат.Должность,V8);
            НовыйПользователь.Организация = ПолучитьОрганизацию(Результат.Подразделение2,V8);
            НовыйПользователь.Подразделение =
                        ПолучитьПодразделение(Результат.Подразделение2,V8,НовыйПользователь.Организация);
            НовыйПользователь.Записать();
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший