|
ДополнительныеСвойства через COM объект | ☑ | ||
---|---|---|---|---|
0
ikbokov
16.08.16
✎
16:41
|
Лезу в базу комом.
Цель - в справочнике пользователи всем проставить галку "вход в программу разрешен". Не выходит:( Где косяк? Код: Логин = ""; Пароль = ""; Кластер = ; ИмяВКластере = ; Область = ; Соединитель = Новый COMОбъект("V83.COMConnector"); СтрокаПодключения = "Srvr=" + Кластер + ";Ref=" + ИмяВКластере + ";"; СтрокаПодключения = СтрокаПодключения + "Usr = """ + Логин + """"+ ";Pwd = """ + Пароль + """"; //Сообщить(СтрокаПодключения); Попытка Соединение = Соединитель.Connect(СтрокаПодключения); Исключение Сообщить("" + ТекущаяДата() + " " +"Ошибка " + КраткоеПредставлениеОшибки(ИнформацияОбОшибке()), СтатусСообщения.Важное); КонецПопытки; //Сообщить(Область); Соединение.ПараметрыСеанса["ОбластьДанныхИспользование"] = true; Соединение.ПараметрыСеанса["ОбластьДанныхЗначение"] = Область; ВыборкаПольз = Соединение.Справочники.Пользователи.Выбрать(); Пока ВыборкаПольз.Следующий() Цикл Обект = ВыборкаПольз.ПолучитьОбъект(); Обект.Недействителен = Ложь; ОбновляемыеСвойства = Соединение.NewObject("Структура"); ОбновляемыеСвойства.Вставить("Действие", "Записать"); ОбновляемыеСвойства.Вставить("ВходВПрограммуРазрешен", Истина); ОбновляемыеСвойства.Вставить("АутентификацияСтандартная", Истина); Обект.ДополнительныеСвойства.Вставить("ОписаниеПользователяИБ", ОбновляемыеСвойства); Обект.Записать(); КонецЕсли КонецЦикла; |
|||
1
Горогуля
16.08.16
✎
16:42
|
залезь в базу напрямую
|
|||
2
ikbokov
16.08.16
✎
16:43
|
(1) лень в сотню баз лезть руками
|
|||
3
Nuobu
16.08.16
✎
16:43
|
А ошибка какая?
|
|||
4
ikbokov
16.08.16
✎
16:43
|
(3) Ничего не пишет, по ЖР тоже пусто. Видно что комом пользователей шерудят, но без ошибок
|
|||
5
Горогуля
16.08.16
✎
16:43
|
ОбновляемыеСвойства - а это зачем это?
|
|||
6
Nuobu
16.08.16
✎
16:44
|
(4) А Журанл базы, к которой коннектишься?
|
|||
7
Горогуля
16.08.16
✎
16:45
|
(5) снимаю вопрос. как-то хитро там всё
|
|||
8
ikbokov
16.08.16
✎
16:45
|
(5) Потому что это не реквизит справочника, а доп свойство. В модуле менеджера справочника пользователи можно почитать:
// *Область ПрограммныйИнтерфейс // // Программный интерфейс объекта реализован через ДополнительныеСвойства: // // ОписаниеПользователяИБ - Структура со свойствами: // Действие - Строка - "Записать" или "Удалить". // 1. Если Действие = "Удалить" другие свойства не требуются. Удаление // будет считаться успешным и в том случае, когда пользовательИБ // не найден по значению реквизита ИдентификаторПользователяИБ. // 2. Если Действие = "Записать", тогда будет создан или обновлен // пользователь ИБ по указанным свойствам. // // ВходВПрограммуРазрешен - Неопределено - вычислить автоматически: // если вход в программу запрещен, тогда остается запрещен, // иначе остается разрешен, кроме случая, когда // все виды аутентификации установлены в Ложь. // - Булево - если Истина, тогда установить аутентификацию, как // указана или сохранена в значениях одноименных реквизитов; // если Ложь, тогда снять все виды аутентификации у пользователя ИБ. // - свойство не указано - прямая установка сохраняемых и // действующих видов аутентификации (для поддержки обратной совместимости). // // АутентификацияСтандартная, АутентификацияОС, АутентификацияOpenID - установить // сохраняемые значения видов аутентификации и, в зависимости от использования свойства. // ВходВПрограммуРазрешен, установить действующие значения видов аутентификации. |
|||
9
ikbokov
16.08.16
✎
16:45
|
(6) Именно он)
|
|||
10
ikbokov
16.08.16
✎
16:47
|
Кстати, напрямую в базу тоже не проставляется галка. Код тот-же, с исправлениями под работу напрямую
|
|||
11
Горогуля
16.08.16
✎
16:47
|
а отладить локально и пошагово?
|
|||
12
vde69
16.08.16
✎
16:51
|
только сейчас писал скрипты для сабжа... скрипты немного разные для разных версий, пощу для всех 3.0.ххх если нужны более ранние - пишите
мСтр = СокрЛП(Метаданные.Версия); // определим версию БСП контекста Если Лев(мСтр,7)="3.0.43." // бух 3 ИЛИ Лев(мСтр,7)="3.0.37." // бух 3 ИЛИ Лев(мСтр,7)="3.0.20." // зуп 3 ИЛИ Лев(мСтр,7)="3.0.25." Тогда // зуп 3 мСписок = Новый СписокЗначений(); //------------------------------------------ // наименования пользователей для блокировки //------------------------------------------ мСписок.Добавить("1C"); мСписок.Добавить("user"); мСписок.Добавить("Администратор"); //------------------------------------------ Запрос = Новый Запрос( "ВЫБРАТЬ | Пользователи.Ссылка, | Пользователи.Наименование, | Пользователи.Недействителен, | Пользователи.ИдентификаторПользователяИБ, | Пользователи.СвойстваПользователяИБ |ИЗ | Справочник.Пользователи КАК Пользователи |ГДЕ | Пользователи.Наименование В(&КУдалению) | И НЕ Пользователи.Недействителен"); Запрос.УстановитьПараметр("КУдалению", мСписок); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл Попытка НачатьТранзакцию(); оПользователь = Выборка.Ссылка.ПолучитьОбъект(); оПользователь.Недействителен = Истина; ПрочитанныеСвойства = Неопределено; // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Если Пользователи.ПрочитатьПользователяИБ(Выборка.ИдентификаторПользователяИБ, ПрочитанныеСвойства) Тогда // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ПрочитанныеСвойства.Вставить("Имя", ПользователиСлужебныйКлиентСервер.ПолучитьКраткоеИмяПользователяИБ(Выборка.Наименование)); ПрочитанныеСвойства.Вставить("АутентификацияOpenID", Ложь); ПрочитанныеСвойства.Вставить("АутентификацияСтандартная", Ложь); ПрочитанныеСвойства.Вставить("ПоказыватьВСпискеВыбора", Ложь); ПрочитанныеСвойства.Вставить("Пароль", Неопределено); ПрочитанныеСвойства.Вставить("СохраняемоеЗначениеПароля", Неопределено); ПрочитанныеСвойства.Вставить("ПарольУстановлен", Ложь); ПрочитанныеСвойства.Вставить("АутентификацияОС", Ложь); ПрочитанныеСвойства.Вставить("Роли", Неопределено); оПользователь.СвойстваПользователяИБ = Новый ХранилищеЗначения(ПрочитанныеСвойства); КонецЕсли; оПользователь.Записать(); // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Пользователи.ЗаписатьПользователяИБ(Выборка.ИдентификаторПользователяИБ, ПрочитанныеСвойства); ЗафиксироватьТранзакцию(); Исключение ЗаписьЖурналаРегистрации("CRM.УдалениеПользователей", УровеньЖурналаРегистрации.Информация, , , ОписаниеОшибки()); Если ТранзакцияАктивна() Тогда ОтменитьТранзакцию(); КонецЕсли; КонецПопытки; КонецЦикла; КонецЕсли; |
|||
13
vde69
16.08.16
✎
16:56
|
(12) + скрипты прикрутил к базе "Администрирование информационных баз, редакция 4.0 (4.1)", проверено работает...
|
|||
14
ikbokov
16.08.16
✎
16:56
|
(12) Спасибо, попробую через УИД и функции модуля "Пользователи"
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |