![]() |
![]() |
![]() |
|
v8. Перенести пользователей с паролями | ☑ | ||
---|---|---|---|---|
0
Rustik666
04.10.10
✎
11:37
|
Вопрос такой собственно возможно или нет.... в 7-ке можно было просто пользователя в конфигураторе скопировать и он копировался с паролем......
В 8-ке он копируется без пароля.....похоже такой фокус не пройдет, и прийдется всем говорить снова устанавливать себе пароли... Или есть вариант.... |
|||
1
IamAlexy
04.10.10
✎
11:37
|
аутентификация виндовс :)
|
|||
2
Живой Ископаемый
04.10.10
✎
11:38
|
вот не помню - может перенести между таблицами, если клиент-серверный вариант. Но не скажу наверняка.
|
|||
3
mikecool
04.10.10
✎
11:39
|
(0) неужели это проблема для человека - заново себе пароль назначить?
в винду раз в месяц(или как в политике) меняют и не ломаются же... |
|||
4
pzk2
04.10.10
✎
11:41
|
Можно и с паролями выгрузить и загрузить... например выгрузка:
Функция ВыгрузитьПользователей() Экспорт РежимыЗапуска = Новый Соответствие; РежимыЗапуска.Вставить(РежимЗапускаКлиентскогоПриложения.Авто, "Auto"); РежимыЗапуска.Вставить(РежимЗапускаКлиентскогоПриложения.ОбычноеПриложение, "OrdinaryApplication"); РежимыЗапуска.Вставить(РежимЗапускаКлиентскогоПриложения.УправляемоеПриложение, "ManagedApplication"); Результат = Новый Структура("Статус, Количество, Адрес", Ложь, 0, ""); ИмяФайла = ПолучитьИмяВременногоФайла(); Фабрика = СоздатьФабрику(); Сериализатор = Новый СериализаторXDTO(Фабрика); ТипРоль = Фабрика.Тип(ИмяПространстваИмен(), "Role"); ТипПользователь = Фабрика.Тип(ИмяПространстваИмен(), "User"); Запись = Новый ЗаписьXML; Запись.ОткрытьФайл(ИмяФайла); Запись.ЗаписатьОбъявлениеXML(); Запись.ЗаписатьНачалоЭлемента("users", ИмяПространстваИмен()); Запись.ЗаписатьСоответствиеПространстваИмен("xs", "http://www.w3.org/2001/XMLSchema"); Запись.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance"); Запись.ЗаписатьСоответствиеПространстваИмен("usr", ИмяПространстваИмен()); СписокПользователей = ПользователиИнформационнойБазы.ПолучитьПользователей(); Для каждого Пользователь Из СписокПользователей Цикл User = Фабрика.Создать(ТипПользователь); User.OSAuthentication = Пользователь.АутентификацияОС; User.StandardAuthentication = Пользователь.АутентификацияСтандартная; User.CannotChangePassword = Пользователь.ЗапрещеноИзменятьПароль; User.Name = Пользователь.Имя; Если Пользователь.ОсновнойИнтерфейс <> Неопределено Тогда User.DefaultInterface = Пользователь.ОсновнойИнтерфейс.Имя; КонецЕсли; User.ShowInList = Пользователь.ПоказыватьВСпискеВыбора; User.FullName = Пользователь.ПолноеИмя; User.OSUser = Пользователь.ПользовательОС; User.RunMode = РежимыЗапуска[Пользователь.РежимЗапуска]; User.StoredPasswordValue = Пользователь.СохраняемоеЗначениеПароля; User.UUID = Пользователь.УникальныйИдентификатор; Если Пользователь.Язык <> Неопределено Тогда User.Language = Пользователь.Язык.Имя; КонецЕсли; Для каждого Роль Из Пользователь.Роли Цикл Role = Фабрика.Создать(ТипРоль); Role.Name = Роль.Имя; User.Roles.Добавить(Role); КонецЦикла; Фабрика.ЗаписатьXML(Запись, User); Результат.Количество = Результат.Количество + 1; КонецЦикла; Запись.ЗаписатьКонецЭлемента(); Запись.Закрыть(); Данные = Новый ДвоичныеДанные(ИмяФайла); Результат.Адрес = ПоместитьВоВременноеХранилище(Данные); Результат.Статус = Истина; УдалитьФайлы(ИмяФайла); Возврат Результат; КонецФункции |
|||
5
Vitello
04.10.10
✎
11:44
|
покажите еще СоздатьФабрику();
|
|||
6
pzk2
04.10.10
✎
11:44
|
полностью обработка загрузки выгрузки юзеров с паролями на ИТС есть
|
|||
7
Vitello
04.10.10
✎
11:44
|
(5)-->(4)
|
|||
8
pzk2
04.10.10
✎
11:45
|
// Функция выполняет загрузку списка пользователей информационной базы из файла.
// Для загрузки используется схема, расположенная в макете обработки XMLСхема. // // Параметры // Адрес - Строка. Адрес во временном хранилище, по которому расположен // загружаемый файл. // ПриоритетФайла - Булево. Признак того, что нужно обновлять (Истина) данные пользователя // информационной базы данными из файла в случае совпадения имен. // ФормироватьПротокол - Булево. Признак необходимости (Истина) формирования протокола загрузки. // // Возвращаемое значение: // Структура - Структура. Результат загрузки. // Статус - Булево. Собственно результат выгрузки: Истина - удачное завершение. // ИзФайла - Число. Количество пользователей в файле с данными. // Загружено - Число. Количество загруженных пользователей (в том числе совпадения). // Совпадений - Число. Количество совпадений между информаицонной базой и файлом. // ФайлПротокола - Строка. Адрес временного хранилища, по которому расположен файл с // протоколом (формируется только в случае, если ФормироватьПротокол = Истина). Функция ЗагрузитьПользователей(Адрес, ПриоритетФайла, ФормироватьПротокол) Экспорт Результат = Новый Структура("Статус, ИзФайла, Загружено, Совпадений, ФайлПротокола", Ложь, 0, 0, 0, ""); РежимыЗапуска = Новый Соответствие; РежимыЗапуска.Вставить("Auto", РежимЗапускаКлиентскогоПриложения.Авто); РежимыЗапуска.Вставить("OrdinaryApplication", РежимЗапускаКлиентскогоПриложения.ОбычноеПриложение); РежимыЗапуска.Вставить("ManagedApplication", РежимЗапускаКлиентскогоПриложения.УправляемоеПриложение); ИмяФайла = ПолучитьИмяВременногоФайла(); Данные = ПолучитьИзВременногоХранилища(Адрес); Данные.Записать(ИмяФайла); Фабрика = СоздатьФабрику(); Сериализатор = Новый СериализаторXDTO(Фабрика); ТипРоль = Фабрика.Тип(ИмяПространстваИмен(), "Role"); ТипПользователь = Фабрика.Тип(ИмяПространстваИмен(), "User"); Чтение = Новый ЧтениеXML; Чтение.ОткрытьФайл(ИмяФайла); Чтение.Прочитать(); Чтение.ПерейтиКСодержимому(); Если ФормироватьПротокол Тогда ИмяПротокола = ПолучитьИмяВременногоФайла("log"); Протокол = Новый ЗаписьТекста(ИмяПротокола, КодировкаТекста.UTF8); ЗаписатьЭлементПротокола(Протокол, NStr("ru = 'Приоритет данных из файла:'", "ru") + " " + Строка(ПриоритетФайла)); КонецЕсли; Если НЕ(Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента И Чтение.ЛокальноеИмя = "users") Тогда ЗаписатьЭлементПротокола(Протокол, NStr("ru = 'ОШИБКА: Неверный формат файла. Отсутствует узел <users>.'", "ru")); Результат.ФайлПротокола = ЗакрытьФайлПротокола(Протокол, ИмяПротокола); Возврат Результат; КонецЕсли; Чтение.Прочитать(); Чтение.ПерейтиКСодержимому(); Пока Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента И Чтение.ЛокальноеИмя = "User" Цикл Попытка ПрочитанныйОбъект = Фабрика.ПрочитатьXML(Чтение, ТипПользователь); Результат.ИзФайла = Результат.ИзФайла + 1; ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоИмени(ПрочитанныйОбъект.Name); Если ПользовательИБ <> Неопределено Тогда Результат.Совпадений = Результат.Совпадений + 1; Если НЕ ПриоритетФайла Тогда Если ФормироватьПротокол Тогда ЗаписатьЭлементПротокола(Протокол, СтрЗаменить(NStr("ru = 'Пользователь: %1. Не изменен.'", "ru"), "%1", ПрочитанныйОбъект.Name)); КонецЕсли; Продолжить; КонецЕсли; КонецЕсли; Если ПользовательИБ = Неопределено Тогда Если ФормироватьПротокол Тогда ЗаписатьЭлементПротокола(Протокол, СтрЗаменить(NStr("ru = 'Пользователь: %1. Создан новый.'", "ru"), "%1", ПрочитанныйОбъект.Name)); КонецЕсли; ПользовательИБ = ПользователиИнформационнойБазы.СоздатьПользователя(); Иначе Если ФормироватьПротокол Тогда ЗаписатьЭлементПротокола(Протокол, СтрЗаменить(NStr("ru = 'Пользователь: %1. Обновлен данными из файла.'", "ru"), "%1", ПрочитанныйОбъект.Name)); КонецЕсли; КонецЕсли; ПользовательИБ.Имя = ПрочитанныйОбъект.Name; ПользовательИБ.ПолноеИмя = ПрочитанныйОбъект.FullName; ПользовательИБ.АутентификацияОС = ПрочитанныйОбъект.OSAuthentication; ПользовательИБ.АутентификацияСтандартная = ПрочитанныйОбъект.StandardAuthentication; ПользовательИБ.ЗапрещеноИзменятьПароль = ПрочитанныйОбъект.CannotChangePassword; ПользовательИБ.ПоказыватьВСпискеВыбора = ПрочитанныйОбъект.ShowInList; ПользовательИБ.ПользовательОС = ПрочитанныйОбъект.OSUser; ПользовательИБ.СохраняемоеЗначениеПароля = ПрочитанныйОбъект.StoredPasswordValue; ПользовательИБ.РежимЗапуска = РежимыЗапуска[ПрочитанныйОбъект.RunMode]; Если ПрочитанныйОбъект.Установлено("DefaultInterface") Тогда ИзФайла = ПрочитанныйОбъект.DefaultInterface; Если Метаданные.Интерфейсы.Найти(ИзФайла) = Неопределено Тогда Если ФормироватьПротокол Тогда ЗаписатьЭлементПротокола(Протокол, СтрЗаменить(NStr("ru = 'ОШИБКА: Интерфейс '%1' не обнаружен в информационной базе. Загрузка прервана.'", "ru"), "%1", ИзФайла)); КонецЕсли; ВызватьИсключение "Ошибка"; КонецЕсли; ПользовательИБ.ОсновнойИнтерфейс = Метаданные.Интерфейсы[ИзФайла]; КонецЕсли; Если ПрочитанныйОбъект.Установлено("Language") Тогда ИзФайла = ПрочитанныйОбъект.Language; Если Метаданные.Языки.Найти(ИзФайла) = Неопределено Тогда Если ФормироватьПротокол Тогда ЗаписатьЭлементПротокола(Протокол, СтрЗаменить(NStr("ru = 'ОШИБКА: Язык '%1' не обнаружен в информационной базе. Загрузка прервана.'", "ru"), "%1", ИзФайла)); КонецЕсли; ВызватьИсключение "Ошибка"; КонецЕсли; ПользовательИБ.Язык = Метаданные.Языки[ИзФайла]; КонецЕсли; Для каждого РольXDTO Из ПрочитанныйОбъект.Roles Цикл ИзФайла = РольXDTO.Name; Если Метаданные.Роли.Найти(ИзФайла) = Неопределено Тогда Если ФормироватьПротокол Тогда ЗаписатьЭлементПротокола(Протокол, СтрЗаменить(NStr("ru = 'ОШИБКА: Роль '%1' не обнаружена в информационной базе. Загрузка прервана.'", "ru"), "%1", ИзФайла)); КонецЕсли; ВызватьИсключение "Ошибка"; КонецЕсли; ПользовательИБ.Роли.Добавить(Метаданные.Роли[ИзФайла]); КонецЦикла; ПользовательИБ.Записать(); Результат.Загружено = Результат.Загружено + 1; Исключение Если ФормироватьПротокол Тогда Результат.ФайлПротокола = ЗакрытьФайлПротокола(Протокол, ИмяПротокола); КонецЕсли; Чтение.Закрыть(); УдалитьФайлы(ИмяФайла); Возврат Результат; КонецПопытки; КонецЦикла; Если ФормироватьПротокол Тогда Результат.ФайлПротокола = ЗакрытьФайлПротокола(Протокол, ИмяПротокола); КонецЕсли; Чтение.Закрыть(); УдалитьФайлы(ИмяФайла); Результат.Статус = Истина; Возврат Результат; КонецФункции |
|||
9
Rustik666
04.10.10
✎
13:05
|
pzk2, спасибо все получилось....
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |