Имя: Пароль:
1C
 
Отобрать пользователей по группе пользователей
0 ivl19
 
29.05.23
17:48
Здравствуйте! Могли бы подсказать?
Есть справочник "Группы пользователей" 1С бух 8.3, необходимо отобрать всех пользователей входящих в определенную группу "Администраторы", подскажите как это можно реализовать?
1 Волшебник
 
29.05.23
17:52
Сделайте это запросом по вхождению пользователя в группу. Это какой-нибудь регистр сведений типа РегистрСведений.СоставыГруппПользователей
2 ivl19
 
29.05.23
17:56
понял, спасибо Вам
3 Михаил Козлов
 
29.05.23
18:08
(0) Группы доступа или "папка" в справочнике пользователи?
4 ivl19
 
30.05.23
13:26
Запрос = Новый Запрос;
Запрос.Текст =
  "ВЫБРАТЬ
  |    СоставыГруппПользователей.Пользователь КАК Пользователь
  |ИЗ
  |    РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
  |ГДЕ
  |    СоставыГруппПользователей.ГруппаПользователей = &ГруппаПользователей";
Запрос.УстановитьПараметр("ГруппаПользователей","Администратор тестовой базы");
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда  
    Сообщение = Новый СообщениеПользователю;
    Сообщение.Текст = "Результат пустой";
    Сообщение.Сообщить();      
КонецЕсли;
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
    Сообщение = Новый СообщениеПользователю;
    Сообщение.Текст = Выборка.Пользователь;
    Сообщение.Сообщить();
КонецЦикла;
5 Волшебник
 
30.05.23
13:27
(4) ошибка в этой строке:

Запрос.УстановитьПараметр("ГруппаПользователей","Администратор тестовой базы");
6 ivl19
 
30.05.23
13:29
Подскажите,сделал такой запрос, но выводит пусто. В консоль запросов при выборе значения параметра "ГруппаПользователей" необходимо выбрать тип ГруппыПользователей и после отрабатывает корректно
7 ivl19
 
30.05.23
13:30
ошибка в этой строке:
    
"(4) ошибка в этой строке:

Запрос.УстановитьПараметр("ГруппаПользователей","Администратор тестовой базы");"
А что не так? указал параметр (ГруппуПользователей) по которому требуется отобраться
8 Волшебник
 
30.05.23
13:31
(7) Надо указать группу, а Вы передали строку
9 ivl19
 
30.05.23
13:32
Запрос.УстановитьПараметр("ГруппаПользователей",Администратор тестовой базы); верно?
10 Волшебник
 
30.05.23
13:34
(9) Нет
11 ivl19
 
30.05.23
13:38
ГруппаДоступа = Справочники.ГруппыПользователей.НайтиПоНаименованию("Администратор тестовой базы");    
Запрос = Новый Запрос;
Запрос.Текст =
  "ВЫБРАТЬ
  |    СоставыГруппПользователей.Пользователь КАК Пользователь
  |ИЗ
  |    РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
  |ГДЕ
  |    СоставыГруппПользователей.ГруппаПользователей = &ГруппаПользователей";
Запрос.УстановитьПараметр("ГруппаПользователей",ГруппаДоступа);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда  
    Сообщение = Новый СообщениеПользователю;
    Сообщение.Текст = "Результат пустой";
    Сообщение.Сообщить();      
КонецЕсли;
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
    Сообщение = Новый СообщениеПользователю;
    Сообщение.Текст = Выборка.Пользователь;
    Сообщение.Сообщить();
КонецЦикла;
12 Волшебник
 
30.05.23
13:39
(11) Опять неправильно. В начальном сообщении была речь про группу "Администраторы"
13 ivl19
 
30.05.23
13:41
Администраторы = Администратор тестовой базы
группы одинаковые, базы разные, вообщем пусть будет Администратор тестовой базы")
14 ivl19
 
30.05.23
13:41
в таком состоянии проверяю отрабатывает корректно
15 Волшебник
 
30.05.23
13:42
Правильнее так:

Если РезультатЗапроса.Пустой() Тогда  
    Сообщение = Новый СообщениеПользователю;
    Сообщение.Текст = "Результат пустой";
    Сообщение.Сообщить();      
Иначе
   Выборка = РезультатЗапроса.Выбрать();
   Пока Выборка.Следующий() Цикл
      Сообщение = Новый СообщениеПользователю;
      Сообщение.Текст = Выборка.Пользователь;
      Сообщение.Сообщить();
   КонецЦикла;
КонецЕсли;
16 ivl19
 
30.05.23
13:43
понял, спасибо Вам большое
17 ivl19
 
30.05.23
15:01
Подскажите ещё пожалуйста куда копать? Требуется теперь найденных пользователей добавить в справочник "Группы пользователей", только в другую группу.
18 Волшебник
 
30.05.23
15:04
(17) Надо добавить их в тот же регистр, только с другой группой доступа
19 Kigo_Kigo
 
30.05.23
15:07
Пока Выборка.Следующий() Цикл
РегистрПользователь = Выборка.Пользователь.ПолучитьОбъект();
РегистрПользователь.ГруппаДоступа = БлаБлаБла;//Можно из реквизита обработки
РегистрПользователь.Записать();
20 Волшебник
 
30.05.23
15:08
(19) это не "РегистрПользователь", а просто "Пользователь"
21 Волшебник
 
30.05.23
15:09
Вангую, что сейчас начнётся уничтожение регистров с помощью набора записей.
22 ivl19
 
30.05.23
15:11
А если не через РС а добавить в справочник "Группы пользователей" - группа "Открытие внешних обработок" ?
23 Kigo_Kigo
 
30.05.23
15:11
(20) я дкумаю что если пользователю перназначить группу и записать то в обработка записи сама запишет в ригистр новое значение, но тут смотреть надо как это там работает и работает ли РегистрСведений.СоставыГруппПользователей это как история срез последних
24 Волшебник
 
30.05.23
15:13
(22) Конечно, добавьте.
25 Волшебник
 
30.05.23
15:14
(23) Вы одно меняете, а другое ломаете. Это не дело
26 Kigo_Kigo
 
30.05.23
15:17
(25) Он спросил как записать я сказал
27 Волшебник
 
30.05.23
15:43
(26) Вы дезинформировали бота. Теперь будущие системы будут с Вашим багом. Вместо добавления пользователя в группу доступа, они будут переписывать основную группу доступа пользователя.
28 ivl19
 
30.05.23
16:17
Я и прошу помощи чтобы подсказали как добавить пользователей в нужную группу доступа
29 Волшебник
 
30.05.23
16:18
(28) Вам уже объяснили в (18)
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.