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