|
Добавить пользователей в группу | ☑ | ||
---|---|---|---|---|
0
ivl19
01.06.23
✎
10:40
|
Добрый день! Подскажите пожалуйста, в настоящее время требуется найти пользователей которые входят в определенную группу (справочник ГруппыПользователей - Администратор тестовой базы).
После требуется данных пользователей добавить в другие группы "Открытие внешних обработок" и "Администратор", не совсем ясно как реализовать ( Бух 8.3 ГруппаДоступа = Справочники.ГруппыПользователей.НайтиПоНаименованию("Администратор тестовой базы"); ГруппаДоступаАдм = Справочники.ГруппыПользователей.НайтиПоНаименованию("Администраторы").ПолучитьОбъект(); ГруппаДоступаОткрОбработок = Справочники.ГруппыПользователей.НайтиПоНаименованию("Открытие внешних обработок").ПолучитьОбъект(); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | СоставыГруппПользователей.Пользователь КАК Пользователь |ИЗ | РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей |ГДЕ | СоставыГруппПользователей.ГруппаПользователей = &ГруппаПользователей"; Запрос.УстановитьПараметр("ГруппаПользователей",ГруппаДоступа); РезультатЗапроса = Запрос.Выполнить(); Если РезультатЗапроса.Пустой() Тогда Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Результат пустой"; Сообщение.Сообщить(); Иначе Выборка = РезультатЗапроса.Выбрать(); Пока Выборка.Следующий() Цикл КонецЦикла; КонецЕсли; |
|||
1
mikecool
01.06.23
✎
11:03
|
вместо НайтиПоНаименованию используй ссылки на форме обработки
|
|||
2
ivl19
01.06.23
✎
12:32
|
Это хорошо, а как реализовать добавление в группуПользователей?
|
|||
3
АОЮБ
01.06.23
✎
13:00
|
Классно
|
|||
4
timurhv
01.06.23
✎
13:02
|
||||
5
Волшебник
01.06.23
✎
13:18
|
(2) В цикле надо добавить запись в регистр
|
|||
6
ivl19
01.06.23
✎
15:42
|
"https://its.1c.ru/db/bsp317doc#content:1961:hdoc" ругается на найдены подключенные расширения конфигурации изменяющие роли конфигурации 1с и так на все процедуры которые нашел
|
|||
7
Мультук
01.06.23
✎
15:45
|
(6)
Код. Показывай свой код. Кроме строчки из (4). Она и так очевидна УправлениеДоступом.ВключитьПрофильПользователю(Пользователь, Профиль); |
|||
8
ivl19
01.06.23
✎
15:49
|
Сейчас просто проверял :
ПользовательТест = Справочники.Пользователи.НайтиПоНаименованию("1CTester"); ПрофильТест = Справочники.ПрофилиГруппДоступа.НайтиПоНаименованию("Открытие внешних отчетов и обработок"); УправлениеДоступом.ВключитьПрофильПользователю(ПользовательТест, ПрофильТест); УправлениеДоступомСлужебный.ВключитьПользователяВГруппуДоступа(ПользовательТест, ПрофильТест); выходит данное сообщение. Видимо вариант только добавить запись в рс СоставыГруппПользователей |
|||
9
ivl19
01.06.23
✎
15:50
|
если это верно, подскажите как правильно добавить запись пожалуйста
|
|||
10
ivl19
01.06.23
✎
16:49
|
ГруппаДоступа = Справочники.ГруппыПользователей.НайтиПоНаименованию("Администратор тестовой базы");
ГруппаДоступаАдм = Справочники.ГруппыПользователей.НайтиПоНаименованию("Открытие внешних обработок"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | СоставыГруппПользователей.Пользователь КАК Пользователь |ИЗ | РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей |ГДЕ | СоставыГруппПользователей.ГруппаПользователей = &ГруппаПользователей"; Запрос.УстановитьПараметр("ГруппаПользователей",ГруппаДоступа); РезультатЗапроса = Запрос.Выполнить(); Если РезультатЗапроса.Пустой() Тогда Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Результат пустой"; Сообщение.Сообщить(); Иначе Выборка = РезультатЗапроса.Выбрать(); ПользовательТест = Справочники.Пользователи.НайтиПоНаименованию("1CTester"); Пока Выборка.Следующий() Цикл ПользователиГрупп = Выборка.Пользователь.ПолучитьОбъект(); НаборЗаписей = РегистрыСведений.СоставыГруппПользователей.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.ГруппаПользователей.Установить(ГруппаДоступаАдм); НаборЗаписей.Отбор.Пользователь.Установить(ПользовательТест); НоваяЗапись = НаборЗаписей.Добавить(); НоваяЗапись. ГруппаПользователей = ГруппаДоступаАдм; НоваяЗапись.Пользователь = ПользовательТест; НаборЗаписей.Записать(); Сообщить(ПользователиГрупп); КонецЦикла; КонецЕсли; |
|||
11
Волшебник
01.06.23
✎
16:50
|
(9) Используйте НаборЗаписей или МенеджерЗаписи
|
|||
12
ivl19
01.06.23
✎
16:50
|
при такой записи запись в РС создается, но доп права не назначаются
|
|||
13
Волшебник
01.06.23
✎
16:50
|
(10) Не теряйте "лесенку" программы
|
|||
14
Волшебник
01.06.23
✎
16:51
|
(12) Назначьте доп. права и перезапустите сеанс
|
|||
15
ivl19
01.06.23
✎
16:57
|
ГруппаДоступа = Справочники.ГруппыПользователей.НайтиПоНаименованию("Администратор тестовой базы");
ГруппаДоступаАдм = Справочники.ГруппыПользователей.НайтиПоНаименованию("Открытие внешних обработок"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | СоставыГруппПользователей.Пользователь КАК Пользователь |ИЗ | РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей |ГДЕ | СоставыГруппПользователей.ГруппаПользователей = &ГруппаПользователей"; Запрос.УстановитьПараметр("ГруппаПользователей",ГруппаДоступа); РезультатЗапроса = Запрос.Выполнить(); Если РезультатЗапроса.Пустой() Тогда Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Результат пустой"; Сообщение.Сообщить(); Иначе Выборка = РезультатЗапроса.Выбрать(); ПользовательТест = Справочники.Пользователи.НайтиПоНаименованию("1CTester"); Пока Выборка.Следующий() Цикл ПользователиГрупп = Выборка.Пользователь.ПолучитьОбъект(); НаборЗаписей = РегистрыСведений.СоставыГруппПользователей.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.ГруппаПользователей.Установить(ГруппаДоступаАдм); НаборЗаписей.Отбор.Пользователь.Установить(ПользовательТест); НоваяЗапись = НаборЗаписей.Добавить(); НоваяЗапись. ГруппаПользователей = ГруппаДоступаАдм; НоваяЗапись.Пользователь = ПользовательТест; НоваяЗапись.Используется = Истина; НаборЗаписей.Записать(); Сообщить(ПользователиГрупп); КонецЦикла; КонецЕсли; Запустил, запись в РС создалась корректно, но пользователь не добавлен в группу доступа "Открытие внешних обработок" |
|||
16
Волшебник
01.06.23
✎
17:39
|
(15) Верните программе "лесенку".
И это плохое название переменной: ГруппаДоступаАдм = Справочники.ГруппыПользователей.НайтиПоНаименованию("Открытие внешних обработок"); |
|||
17
Волшебник
01.06.23
✎
17:40
|
В Вашем случае лучше пользоваться МенеджерЗаписи, чтобы не уничтожить регистр сведений.
|
|||
18
ivl19
01.06.23
✎
17:50
|
ГруппаДоступа = Справочники.ГруппыПользователей.НайтиПоНаименованию("Администратор тестовой базы");
ГруппаДоступаОткрытиеОбработок = Справочники.ГруппыПользователей.НайтиПоНаименованию("Открытие внешних обработок"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | СоставыГруппПользователей.Пользователь КАК Пользователь |ИЗ | РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей |ГДЕ | СоставыГруппПользователей.ГруппаПользователей = &ГруппаПользователей"; Запрос.УстановитьПараметр("ГруппаПользователей",ГруппаДоступа); РезультатЗапроса = Запрос.Выполнить(); Если РезультатЗапроса.Пустой() Тогда Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Результат пустой"; Сообщение.Сообщить(); Иначе Выборка = РезультатЗапроса.Выбрать(); Пока Выборка.Следующий() Цикл ПользователиГрупп = Выборка.Пользователь; МенеджерЗаписейПользователи = РегистрыСведений.СоставыГруппПользователей; МенеджерЗаписи = МенеджерЗаписейПользователи.СоздатьМенеджерЗаписи(); МенеджерЗаписи.ГруппаПользователей = ГруппаДоступаОткрытиеОбработок; МенеджерЗаписи.Пользователь = ПользователиГрупп; МенеджерЗаписи.Используется = Истина; МенеджерЗаписи.Записать(); КонецЦикла; КонецЕсли; |
|||
19
ivl19
01.06.23
✎
17:50
|
так верно?
|
|||
20
ivl19
01.06.23
✎
17:51
|
записи в РС создаются корректно, но проблема осталась, права у пользователей не расширились(
пользователи не добавились в группу доступа "Открытие внешних обработок" |
|||
21
Волшебник
01.06.23
✎
17:56
|
Право открытия внешних отчётов и обработок регулируется ролью на уровне Конфигуратора, а не на уровне регистра сведений.
Освойте работу с объектом ПользовательИнформационнойБазы |
|||
22
ivl19
01.06.23
✎
18:00
|
Задача вообще состоит в том, что необходимо отобрать сотрудников в группе пользователей "Администратор тестовой базы" и добавить им группы доступа "Администратор", "Открытие внешних отчетов и обработок"
|
|||
23
ivl19
01.06.23
✎
18:02
|
Данный вариант не подходит https://its.1c.ru/db/bsp317doc#content:1961:hdoc, данная процедура УстановитьПравоОткрытияВнешнихОтчетовИОбработок тоже и не ясно как это ещё можно реализовать
|
|||
24
ivl19
02.06.23
✎
09:11
|
Подскажите есть ещё варианты?(
|
|||
25
Волшебник
02.06.23
✎
10:04
|
(24) Вы плохо стараетесь. Вам же сказали: "добавить группы доступа". Ну так добавьте! Найдите, где они хранятся и добавьте. Может всё-таки в регистре СоставыГруппПользователей? Да ну, не может быть...
|
|||
26
Мультук
02.06.23
✎
10:09
|
(25)
Ошибка: "найдены подключенные расширения конфигурации изменяющие роли конфигурации 1с" По РС "Права ролей" подскажите Короче, какая-то вселенская печаль. |
|||
27
ivl19
02.06.23
✎
10:43
|
ГруппаДоступа = Справочники.ГруппыПользователей.НайтиПоНаименованию("Администратор тестовой базы");
ГруппаДоступаОткрытиеОбработок = Справочники.ГруппыПользователей.НайтиПоНаименованию("Открытие внешних обработок"); ГруппаДоступаАдминистратор = Справочники.ГруппыПользователей.НайтиПоНаименованию("Администраторы"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | СоставыГруппПользователей.Пользователь КАК Пользователь |ИЗ | РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей |ГДЕ | СоставыГруппПользователей.ГруппаПользователей = &ГруппаПользователей"; Запрос.УстановитьПараметр("ГруппаПользователей",ГруппаДоступа); РезультатЗапроса = Запрос.Выполнить(); Если РезультатЗапроса.Пустой() Тогда Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Результат пустой"; Сообщение.Сообщить(); Иначе Выборка = РезультатЗапроса.Выбрать(); ЭлементОбъект = ГруппаДоступаОткрытиеОбработок.ПолучитьОбъект(); Пока Выборка.Следующий() Цикл ПользователиГрупп = Выборка.Пользователь; НоваяСтрока = ЭлементОбъект.Состав.Добавить(); НоваяСтрока.Пользователь = ПользователиГрупп; ЭлементОбъект.Записать(); КонецЦикла; КонецЕсли; |
|||
28
ivl19
02.06.23
✎
10:45
|
Просьба пожалуйста подсказать, в настоящее время пользователи добавляются в нужную группу:
1) Как сделать проверку на наличие подобной записи, чтобы записи не дублировались? 2) как таким же образом добавить данных пользователей ещё в одну группу, чтобы сразу пользователи добавлялись в 2 группы? |
|||
29
Волшебник
02.06.23
✎
10:45
|
(27) лишняя переменная ПользователиГрупп
НоваяСтрока = ЭлементОбъект.Состав.Добавить(); НоваяСтрока.Пользователь = Выборка.Пользователь; ЭлементОбъект.Записать(); |
|||
30
Волшебник
02.06.23
✎
10:46
|
(28)
1) Используйте метод НайтиСтроки 2) по аналогии |
|||
31
ivl19
02.06.23
✎
13:03
|
ГруппаДоступа = Справочники.ГруппыПользователей.НайтиПоНаименованию("Администратор тестовой базы");
ГруппаДоступаОткрытиеОбработок = Справочники.ГруппыПользователей.НайтиПоНаименованию("Открытие внешних обработок"); ГруппаДоступаАдминистратор = Справочники.ГруппыПользователей.НайтиПоНаименованию("Администраторы"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | СоставыГруппПользователей.Пользователь КАК Пользователь |ИЗ | РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей |ГДЕ | СоставыГруппПользователей.ГруппаПользователей = &ГруппаПользователей"; Запрос.УстановитьПараметр("ГруппаПользователей",ГруппаДоступа); РезультатЗапроса = Запрос.Выполнить(); Если РезультатЗапроса.Пустой() Тогда Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Результат пустой"; Сообщение.Сообщить(); Иначе Выборка = РезультатЗапроса.Выбрать(); ЭлементОбъект = ГруппаДоступаОткрытиеОбработок.ПолучитьОбъект(); ЭлементОбъектАдминистратор = ГруппаДоступаАдминистратор.ПолучитьОбъект(); тз = Новый ТаблицаЗначений; тз.Колонки.Добавить("Группы"); НоваяСтрока = тз.Добавить(); НоваяСтрока.Группы = ГруппаДоступаОткрытиеОбработок; НоваяСтрока = тз.Добавить(); НоваяСтрока.Группы = ГруппаДоступаАдминистратор; ПараметрыПоиска = Новый Структура; ПараметрыПоиска.Вставить("Группы",ГруппаДоступаОткрытиеОбработок); ПараметрыПоиска.Вставить("Группы",ГруппаДоступаАдминистратор); МассивСтрок = ТЗ.НайтиСтроки(ПараметрыПоиска); Для Каждого ЭлементаСтрок Из МассивСтрок Цикл Пока Выборка.Следующий() Цикл НоваяСтрока = ЭлементОбъект.Состав.Добавить(); НоваяСтрока.Пользователь = Выборка.Пользователь; ЭлементОбъект.Записать(); КонецЦикла; КонецЦикла; КонецЕсли; 1) GПодскажите пожалуйста в МассивСтрок записывается только одна строка, хотя 2 отбора указано. По отдельности записывает и тот и тот, как сделать чтобы две строки записалось? 2) Как правильно указать ЭлементаСтрок в Пока Выборка.Следующий() Цикл чтобы добавляли в обе группы? |
|||
32
Мультук
02.06.23
✎
13:28
|
(31)
Если в "состав" нет данного пользователя -- добавляем. Можно искать с помощью НайтиСтроки. Если ГруппаДоступаОткрытиеОбработок.Состав.Найти(Выборка.Пользователь, "Пользователь") = Неопределено Тогда НоваяСтрока = ЭлементОбъект.Состав.Добавить(); НоваяСтрока.Пользователь = Выборка.Пользователь; ЭлементОбъект.Записать(); КонецЕсли; P.S. То что вы написали про "НайтиСтроки", это даже не бред, высасывание из пальца. https://helpf.pro/faq/view/954.html Там много "устаревшего" кода, но есть и вполне себе. |
|||
33
ivl19
02.06.23
✎
15:15
|
Вообщем вот что получилось, подскажите насколько корректно пожалуйста? при проверке, пользователи которые находятся в группе Администратор тестовой базы, при запуске кода добавляются в группы "Открытие внешних обработок" и "Администраторы". Если такой пользователь в группе есть повторно не добавляется.
ГруппаДоступа = Справочники.ГруппыПользователей.НайтиПоНаименованию("Администратор тестовой базы"); ГруппаДоступаОткрытиеОбработок = Справочники.ГруппыПользователей.НайтиПоНаименованию("Открытие внешних обработок").ПолучитьОбъект(); ГруппаДоступаАдминистратор = Справочники.ГруппыПользователей.НайтиПоНаименованию("Администраторы").ПолучитьОбъект(); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | СоставыГруппПользователей.Пользователь КАК Пользователь |ИЗ | РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей |ГДЕ | СоставыГруппПользователей.ГруппаПользователей = &ГруппаПользователей"; Запрос.УстановитьПараметр("ГруппаПользователей",ГруппаДоступа); РезультатЗапроса = Запрос.Выполнить(); Если НЕ РезультатЗапроса.Пустой() Тогда Выборка = РезультатЗапроса.Выбрать(); ТЗ = Новый ТаблицаЗначений; ТЗ.колонки.Добавить("Группы"); НоваяСтрока = ТЗ.Добавить(); НоваяСтрока.Группы = ГруппаДоступаОткрытиеОбработок; НоваяСтрока = ТЗ.Добавить(); НоваяСтрока.Группы = ГруппаДоступаАдминистратор; Пока Выборка.Следующий() Цикл Если ГруппаДоступаОткрытиеОбработок.Состав.Найти(Выборка.Пользователь, "Пользователь") = Неопределено Тогда Для каждого СтрокаТЗ Из ТЗ Цикл ГруппыДоступа = СтрокаТЗ.Группы; НоваяСтрока = ГруппыДоступа.Состав.Добавить(); НоваяСтрока.Пользователь = Выборка.Пользователь; ГруппыДоступа.Записать(); КонецЦикла; КонецЕсли; КонецЦикла; Иначе Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Результат пустой"; Сообщение.Сообщить(); КонецЕсли; |
|||
34
ivl19
02.06.23
✎
16:31
|
ГруппаДоступа = Справочники.ГруппыПользователей.НайтиПоНаименованию("Администратор тестовой базы");
ГруппаДоступаОткрытиеОбработок = Справочники.ГруппыПользователей.НайтиПоНаименованию("Открытие внешних обработок").ПолучитьОбъект(); ГруппаДоступаАдминистратор = Справочники.ГруппыПользователей.НайтиПоНаименованию("Администраторы").ПолучитьОбъект(); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | СоставыГруппПользователей.Пользователь КАК Пользователь |ИЗ | РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей |ГДЕ | СоставыГруппПользователей.ГруппаПользователей = &ГруппаПользователей"; Запрос.УстановитьПараметр("ГруппаПользователей",ГруппаДоступа); РезультатЗапроса = Запрос.Выполнить(); Если НЕ РезультатЗапроса.Пустой() Тогда Выборка = РезультатЗапроса.Выбрать(); ТЗ = Новый ТаблицаЗначений; ТЗ.колонки.Добавить("Группы"); НоваяСтрока = ТЗ.Добавить(); НоваяСтрока.Группы = ГруппаДоступаОткрытиеОбработок; НоваяСтрока = ТЗ.Добавить(); НоваяСтрока.Группы = ГруппаДоступаАдминистратор; Пока Выборка.Следующий() Цикл Для каждого СтрокаТЗ Из ТЗ Цикл ГруппыДоступа = СтрокаТЗ.Группы; Если ГруппыДоступа.Состав.Найти(Выборка.Пользователь, "Пользователь") = Неопределено Тогда НоваяСтрока = ГруппыДоступа.Состав.Добавить(); НоваяСтрока.Пользователь = Выборка.Пользователь; ГруппыДоступа.Записать(); КонецЕсли; КонецЦикла; КонецЦикла; КонецЕсли; |
|||
35
ivl19
06.06.23
✎
11:04
|
Подскажите пожалуйста в итоге перебрал не много код, и теперь вопрос как в процедуре ДобавитьПользователяВГруппуДоступа добавить пользователей в данные группы?
Процедура ДобавитьПользователяВГруппуДоступа(груп,польз) КонецПроцедуры Процедура ДобавитьПользователяВГруппуПользователей(группаДоступа, пользователи) группаДоступаОбъект = группаДоступа.ПолучитьОбъект(); группаДоступаОбъект.Пользователи.Загрузить(пользователи); группаДоступаОбъект.Записать(); КонецПроцедуры ГруппаДоступаАдминистраторТБ = Справочники.ГруппыПользователей.НайтиПоНаименованию("Администратор тестовой базы"); ГруппаДоступаОткрытиеОбработок = Справочники.ГруппыПользователей.НайтиПоНаименованию("Открытие внешних обработок"); ГруппаДоступаАдминистратор = Справочники.ГруппыПользователей.НайтиПоНаименованию("Администраторы"); Администратрор = Справочники.ГруппыДоступа.НайтиПоНаименованию("Администраторы"); списокГруппПользователей = Новый СписокЗначений; списокГруппПользователей.Добавить(ГруппаДоступаАдминистраторТБ); списокГруппПользователей.Добавить(ГруппаДоступаОткрытиеОбработок); списокГруппПользователей.Добавить(ГруппаДоступаАдминистратор); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | СоставыГруппПользователей.Пользователь КАК Пользователь |ИЗ | РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей |ГДЕ | СоставыГруппПользователей.ГруппаПользователей = &ГруппаПользователей"; Запрос.УстановитьПараметр("ГруппаПользователей",ГруппаДоступаАдминистраторТБ); РезультатЗапроса = Запрос.Выполнить().Выгрузить(); ДобавитьПользователяВГруппуПользователей(Администратрор, РезультатЗапроса); Для каждого группа Из списокГруппПользователей Цикл ДобавитьПользователяВГруппуДоступа(группа, РезультатЗапроса); КонецЦикла; |
|||
36
Волшебник
06.06.23
✎
11:09
|
(35) У Вас программный код снаружи процедуры
|
|||
37
Волшебник
06.06.23
✎
11:09
|
а процедура ДобавитьПользователяВГруппуДоступа вообще пустая
|
|||
38
ivl19
06.06.23
✎
11:11
|
Вот тут ДобавитьПользователяВГруппуДоступа и вопрос как в данной процедуре добавить пользователей в группы
|
|||
39
Волшебник
06.06.23
✎
11:56
|
(38) Что Вы под этим подразумеваете?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |