// заполним список пользователей 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); а=СтрЗаменить(а,"""",""); // уберем кавычки списПользователи.Установить(а,а); КонецЦикла; списПользователи.ТекущаяСтрока(1); // Список Пользователей заполнен
Выборка = ПользователиИнформационнойБазы.ПолучитьПользователей(); Для Каждого ЭлементМассива Из Выборка Цикл ИмяПользователя = ЭлементМассива.Имя; ПолноеИмяПользователя = ЭлементМассива.ПолноеИмя; ЕстьПароль = ЭлементМассива.ПарольУстановлен; Роли = ЭлементМассива.Роли; Для Каждого Роль Из Роли Цикл ИмяРоли = Роль.Имя; КонецЦикла; КонецЦикла;
// Функция возвращает список зарегистрированных для выбранной // базы пользователей. Если пользователи не определены, список // будет пуст. // функция сзПолучитьПользователей(стрПутьКБазе) // Создаем список значений для возврата Ответ = создатьобъект("СписокЗначений"); // Формируем полное имя файла, в котором 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); // Добовляем имя к нашему списку. Ответ.ДобавитьЗначение(стрИмяПользователя); // Получаем очередную позицию информации о пользователе чисПозиция = найти(стрБуфер, стрПоиска); конеццикла; конецесли; // Возращаем полученный список значений содержащий в себе список пользователей базы возврат Ответ; конецфункции