|
v7: Перебор пользователей | ☑ | ||
---|---|---|---|---|
0
vladimirpetrov11
12.04.12
✎
13:29
|
Привет всем! Как программно перебрать список пользователей, заведенных в системе? (1Cv7)
|
|||
1
zak555
12.04.12
✎
13:30
|
конфа ?
|
|||
2
povar
12.04.12
✎
13:31
|
admin.dll
|
|||
3
vladimirpetrov11
12.04.12
✎
13:35
|
мне нужно написать код, чтобы при вводе в таблицу по нажатию кнопки вылетал список пользователей, которые есть в программе
|
|||
4
vladimirpetrov11
12.04.12
✎
13:35
|
как то через метаданные вытянуть может...
|
|||
5
povar
12.04.12
✎
13:36
|
(4) у вас пользователи в метаданных ?
|
|||
6
Torquader
12.04.12
✎
13:42
|
Пользователи живут в файле userdef.usr и только там их можно найти.
Другое дело, что почти в любой конфигурации есть справочник пользователи, чтобы проставлять, например, автора документа. |
|||
7
zak555
12.04.12
✎
13:43
|
автору осталось объяснить зачем ему изврат данный
|
|||
8
vladimirpetrov11
12.04.12
✎
13:44
|
(6)Вооот им как же вытащить их из файла userdef.usr программно??
|
|||
9
FN
12.04.12
✎
13:45
|
FSO=createobject("Scripting.FileSystemObject");
WshShell = CreateObject("WScript.Shell"); Txt=FSO.OpenTextFile(КаталогИБ()+"usrdef\users.usr"); LineUser=""; ChI=0; Пока Txt.AtEndOfStream=0 Цикл Chi=Chi+1; Buf=Txt.Read(1); Если КодСимв(Buf)>31 Тогда LineUser=LineUser+Buf; КонецЕсли; КонецЦикла; LineBof="{"+chr(34)+"Container.Contents"+chr(34)+","; LineUser=Сред(LineUser,Найти(LineUser,LineBof)+23); LineUser=Сред(LineUser,1,Найти(LineUser,"}}")); LineUser=СтрЗаменить(LineUser,РазделительСтрок," "); LineUser=СтрЗаменить(LineUser,"},{",РазделительСтрок); Для к=1 По СтрКоличествоСтрок(LineUser) Цикл а=СтрЗаменить(СтрПолучитьСтроку(LineUser,к),Симв(34),""); а=СтрЗаменить(СтрПолучитьСтроку(LineUser,к),"}",""); а=Сред(а,19); а=Сред(а,Найти(а,",")+1); а=Сред(а,1,Найти(а,",")-1); а=СтрЗаменить(а,"""",""); // уберем кавычки ТЗПользователи.НоваяСтрока(); ТЗПользователи.Пользователь = а; КонецЦикла; |
|||
10
povar
12.04.12
✎
13:46
|
||||
11
vladimirpetrov11
12.04.12
✎
13:46
|
(7) Создаю справочник пользователей с паролями, который просматривать смогу только сам, чтоб заходить под ними и проверять
|
|||
12
zak555
12.04.12
✎
13:47
|
(11) смысл ?
|
|||
13
povar
12.04.12
✎
13:47
|
(11) попахивает бредятиной
|
|||
14
Гость2
12.04.12
✎
13:48
|
функция сзПолучитьПользователей(стрПутьКБазе)
// Создаем список значений для возврата Ответ = создатьобъект("СписокЗначений"); // Формируем полное имя файла, в котором 1С // хранит информацию о пользователях базы. стрИмяФайла = стрПутьКБазе + "\UsrDEF\Users.USR"; // Проверим его наличие. если фс.СуществуетФайл(стрИмяФайла) > 0 тогда // Создаем объект FSO для работы с файлами. обФСО = создатьобъект("Scripting.FileSystemObject"); // Открываем файл пользователей как текстовый. тхтФайл = обФСО.OpenTextFile(стрИмяФайла); // Инициализация первоначальных переменных // Загружаем в буфер(тестовую строку) информацию из файла. стрБуфер = ""; чисПозиция = 0; // Перебеирать файл придеться посимвольно, так как 1С не совсеми // символами может работать коректно если они находяться в строке. пока тхтФайл.AtEndOfStream = 0 цикл // Получаем очередную позицию в файле. чисПозиция = чисПозиция + 1; // Получаем символ из данной позиции. стрСимв = тхтФайл.Read(1); // Если код символа больше 31 если кодсимв(стрСимв) > 31 тогда // Тогда добавляем его к буферу. стрБуфер = стрБуфер + стрСимв; конецесли; конеццикла; // После формирования буфера начнем искать пользователей в нем. // Признаком для пользователя будет строка '{"UserItemType","Page.' стрПоиска = "{""UserItemType"",""Page."; // Получаем позицию первого пользователя. чисПозиция = найти(стрБуфер, стрПоиска); // Проверяем если в буфере нужная нам строка если чисПозиция > 0 тогда // Если есть, вырезаем из строки ненужную информацию. стрБуфер = сред(стрБуфер, чисПозиция); // Позиция после отрезания становиться в единицу чисПозиция = 1; конецесли; // В цикле получаем информацию о пользователях БД пока чисПозиция > 0 цикл // Удаляем из буфера 'мусор' стрБуфер = сред(стрБуфер, чисПозиция + 22); // Находим признак начала информации об имени пользователя. чисСмещение = найти(стрБуфер, """,""") + 3; // Перемещаем начало буфера на начало информации об имени пользователя стрБуфер = сред(стрБуфер, чисСмещение); // Получаем имя пользователя стрИмяПользователя = лев(стрБуфер, найти(стрБуфер, """,""") - 1); // Добовляем имя к нашему списку. Ответ.ДобавитьЗначение(стрИмяПользователя); // Получаем очередную позицию информации о пользователе чисПозиция = найти(стрБуфер, стрПоиска); конеццикла; конецесли; // Возращаем полученный список значений возврат Ответ; конецфункции |
|||
15
Mikeware
12.04.12
✎
13:49
|
(13) Причем изысканой бредятиной...
наверняка 1986... |
|||
16
Санта Клаус
12.04.12
✎
13:49
|
попахивает 86-ым..
|
|||
17
vladimirpetrov11
12.04.12
✎
13:53
|
Пользователей в системе дофига, и частенько нужно заходить под кем ниб, чтобы проверить как работает программа, что не так и т.п. А каждый раз искать бумажку с паролями или искать в файле excel их это как-то поднадоело.
Всем спасибо, кто посоветовал способы решения, а не просто зашел и тупо поржал*) |
|||
18
zak555
12.04.12
✎
13:55
|
(17) > дофига
это сколько ? |
|||
19
Mikeware
12.04.12
✎
13:55
|
а ведь я угадал....
|
|||
20
Гость2
12.04.12
✎
13:57
|
(18) Пять!
|
|||
21
Mikeware
12.04.12
✎
13:59
|
(20) не "пять" , а "оба" :-)
|
|||
22
viktor_vv
12.04.12
✎
14:00
|
(17) Ты это в рабочей базе собрался под ними заходить?
А если у них прописан каталог и этот пользователь в данный момент в программе ? А если ты совершенно случайно под этим пользователем какую-нибудь фигню сделаешь в рабочей базе, кого дрючить потом будут ? Для этого есть отладочная база, где меняешь ему пароль и делай что хочешь. |
|||
23
vladimirpetrov11
12.04.12
✎
14:13
|
(18) более 200
(22) Я всё понимаю и что-то создавать, изменять и удалять под ними не собираюсь. |
|||
24
Ёпрст
12.04.12
✎
14:15
|
(23) врешь ты всё.. конторы, в которых 200 юзверей, таких не держат
|
|||
25
Ыщъ
12.04.12
✎
14:23
|
(24) Увы. Бывает.
|
|||
26
Обработка
12.04.12
✎
14:24
|
ТО что 1С разработчики в свое время в 77 придумал иммено такой механизм паролей это конечно извращение. Нормальных Ит-шников всегда это бесило. Но что сделано то сделано.
Раньше у меня тоже была проблема с этими юзерами и их паролями. Часто забывали. Или потребность проверить их доступы итп. Хотел придумать такую вещь. 1. Все юзеры заходят в 1С через свои имена но без пароля, но вот пароль 1С будет просить при начале работы системы. И это пароль виде реквизита хранится в справочнике пользователей при этом она шифруется. Это я в свое время реализовал но потом подумал что не удобно и не кошерно отказался от этой идеи хотя все было реализовано . И даже пользователь мог сам менять пароли. |
|||
27
Обработка
12.04.12
✎
14:27
|
(0) Совет.
Если надо под ним заходить то сделай себе юзера бота который будет служить для тестов. Меняешь интерфес и права потом в предприяетие делаешь аналгичную настройку и провряешь под тем юзером якобы. Другой вариант. Сбиваешь пароль тестишь . А юзеру пишешь что пароль такой-то. Третий вариант есть приблуды кторый показывает пароли юзеров. |
|||
28
Mikeware
12.04.12
✎
14:31
|
(27) У него наверняка в коде чонить типа:
если ИмяПользователя()= "Марьиванна" Тогда... |
|||
29
Обработка
12.04.12
✎
14:34
|
(28) Не будем включать телепата. Все мы прошли через это.
|
|||
30
vladimirpetrov11
13.04.12
✎
08:37
|
(9) FN огромаднейшее спасибо!!! То что нужно прямо!!!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |