|   |   | 
| 
 | 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 огромаднейшее спасибо!!! То что нужно прямо!!!     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |