Создание пользователя БД с заданным уникальным идентификатором

1. Chernov_Dmitriy 89 10.09.13 08:45 Сейчас в теме
Есть уникальный идентификатор. Как создать пользователя БД с этим идентификатором? УстановитьСсылкуНового - не работает.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. adamx 37 10.09.13 09:56 Сейчас в теме
(1) Chernov_Dmitriy, Если база на SQL - можно в таблице поменять с помощью SQL.
5. Chernov_Dmitriy 89 10.09.13 10:18 Сейчас в теме
(3) adamx, Нужно общее решение и для файловой базы тоже. Если быть точным, то необходимо перенести пользователя БД из одной базы в другую с таким же уидом.
2. peterxx 23 10.09.13 09:53 Сейчас в теме
Есть идея. Написать обработку с использованием метода ЗаписатьXML, в котором указать в качестве объекта какого-нибудь пользователя. После этого редактором исправить ИДД объекта в файле и применить метод ПрочитатьXML. Не знаю взлетит ли, но попробовать можно.
4. Chernov_Dmitriy 89 10.09.13 10:17 Сейчас в теме
(2) peterxx, Пользователь БД - это не ОБЪЕКТ, и соответственно как его выгрузить в xml??? он по мойму не сериализуется... исправьте меня если я не прав.
6. kanalya 109 10.09.13 10:32 Сейчас в теме
А чем Конвертация данных не устраивает?
7. Chernov_Dmitriy 89 10.09.13 10:45 Сейчас в теме
(6) kanalya, А где в конвертации данных можно настроить перенос пользователей БД???? КЛЮЧЕВОЕ СЛОВО БД (Базы данных)
9. kanalya 109 10.09.13 11:15 Сейчас в теме
(7) Средствами 1С, насколько мне известно, не получится. А зачем вообще эта морока, если пользователь БД одно-однозначно связан с пользователем ИБ, который является объектом ИБ и переносится без проблем?
10. Chernov_Dmitriy 89 10.09.13 16:03 Сейчас в теме
(9) kanalya, Ну просто нужно пользователей синхронизировать по базам - и в дальнейшем при изменение наименование пользователя не приходилось создавать новых - а искать их по уиду и менять наименование.
11. kanalya 109 10.09.13 18:02 Сейчас в теме
(10) Ну так и переносите справочник пользователей. Потом они по гуид будут обновлять реквизиты. При попытке войти пользователя с изменившимся именем, соответствующий ему пользователь не будет найден. И будет создан новый пользователь со старым именем (если типовой механизм авторизации) - вот тут надо или запретить создание нового и выдать этому сеансу какого-то спец. пользователя с ограниченными правами или как-то иначе обработать.
Или как альтернатива - добавить в справочник пользователей доп. реквизит НовоеИмяПользователя, заполняемое автоматически при изменении имени пользователя, а при переносе данных пользователя выгружать только НовоеИмяПользователя; и где-нибудь в процедуре ПриНачалеРаботыСистемы добавить проверку: Если мТекущийПользователь.Код<>мТекущийПользователь.НовоеИмяПользователя Сообщить("...")
8. peterxx 23 10.09.13 11:08 Сейчас в теме
ПолучитьПользователей (GetUsers)
Синтаксис:

ПолучитьПользователей()
Возвращаемое значение:

Тип: Массив.

Описание:

Получает массив, элементами которого являются объекты ПользовательИнформационнойБазы.

Доступность:

Сервер, толстый клиент, внешнее соединение.
Примечание:

Данный метод доступен пользователям, имеющим административные права.
12. wokituk 17 20.04.18 11:04 Сейчас в теме
Совершенно случайно нашел как создавать Пользователя ИБ с заданным УИД (движок 8.2.19.83)

Оказывается, если в одной базе засунуть пользователя в Т (ТаблицаЗначений) и потом ЗначениеВФайл(<ИмяФайла>,Т). Потом в нужной базе обратно Т=ЗначениеИзФайла(<ИмяФайла>), то в Т появится именно Пользователь ИБ, но не сохраненный, с исходным ИД. Его можно Записать(). И он появится в базе.

А в этом файле можно заменить ИД на желаемый.

Возможно, можно на прямую (не через Т, а стразу ЗначениеВФайл(<ИмяФайла>,Пользователь). Возможно, можно тупо ЗначениеВСтрокуВнутр(Пользователь). Не проверял, но скорее всего будет работать.
13. VadimTer 20.03.24 15:18 Сейчас в теме
(12) Спасибо! Сделал по вашему совету на скорую руку, прекрасно работает:

&НаСервере
Функция ВнестиИзмененияВПользователяИБНаСервере()
      
        //В реквизите формы УИДПользователяИБ из предыдущих процедур записан УИД ПользователяИБ, являющийся 
//реквизитом справочника Пользователь. Данный справочник перенесен из другой базы данных и для него нужно создать 
//ПользователяИБ с указанным УИД и связать Справочник.Пользователь и ПользовательИБ
	ПользовательИБ_Объект = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(Новый УникальныйИдентификатор(УИДПользователяИБ));
  
//Для получения строки структуры целевого ПользователяИБ, находим исходного ПользователяИБ с похожей структурой
	ПользовательИБИсходныхНастроек = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(ПользовательИсходныхНастроек.ИдентификаторПользователяИБ);
	ПользовательИБ_Строка = ЗначениеВСтрокуВнутр(ПользовательИБИсходныхНастроек); 
	
	//Поиск и замена в строке УИД
	ПользовательИБ_Строка = СтрЗаменить(ПользовательИБ_Строка,Сред(ПользовательИБ_Строка,45,36),УИДПользователяИБ_Новый); 
	
	//Поиск и замена в строке Имен 
	МассивУчастковСтроки = СтрРазделить(ПользовательИБ_Строка,","); 
	ПользовательИБ_Строка = СтрЗаменить(ПользовательИБ_Строка,СтрЗаменить(МассивУчастковСтроки[3],"""",""),"ИмяПользователя");
	ПользовательИБ_Строка = СтрЗаменить(ПользовательИБ_Строка,СтрЗаменить(МассивУчастковСтроки[5],"""",""),"ИмяПользователя");
	
	//Создание нового ПользователяИнформационнойБазы
	ПользовательИБ_НовыйОбъект = ЗначениеИзСтрокиВнутр(ПользовательИБ_Строка);
	
	УстановитьПривилегированныйРежим(Истина);
	Попытка
		ПользовательИБ_НовыйОбъект.Записать();
		СтрокаРезультата = СтрШаблон("Создан новый ПользовательИБ: %1, с УИД: %2","ИмяПользователя",УИДПользователяИБ_Новый);
		Возврат СтрокаРезультата;
	Исключение
		ВызватьИсключение "Операция закончилась неудачно!";
	КонецПопытки;

КонецФункции
Показать
andreyparmuzin; wokituk; +2 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот