Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Уникальный идентификатор пользователя платформы 1с.

Уникальный идентификатор пользователя платформы 1с.
Я
   Повелитель
 
18.09.18 - 09:54
Столкнулся с такой проблемой.
Типовая база, скорее всего основная на БСП.

Есть пользователь, который работает в РИБ, то в одной базе, то в другой.
Пользователь был создан в каждой базе, Конфигуратор - Администрирование - Пользователи.

Уникальный идентификатор пользователя платформы в центральной базе 4773020f-a366-49e4-9bbb-2a5e661e764c

Уникальный идентификатор пользователя платформы в дочерней базе = e63521b7-1a92-4029-86e9-f82f15ab8646

Реквизит "ИдентификаторПользователяИБ", справочника "Пользователи" 4773020f-a366-49e4-9bbb-2a5e661e764c.

Так вот в одной базе входит, а во второй нет, пока не зайдешь Конфигуратор - Администрирование - Пользователи - Открыть пользователя - Записать.
При этом в пользователя в реквизит "ИдентификаторПользователяИБ" прописывается уникальный идентификатор пользователя платформы.

Как поменять Уникальный идентификатор пользователя платформы?
Как все 3 сделать с единым идентификатором?
 
 
   Повелитель
 
1 - 18.09.18 - 09:56
(0) В СП нашел только:

ПользовательИнформационнойБазы (InfoBaseUser)
УникальныйИдентификатор (UUID)
Использование:
Только чтение.
   butterbean
 
2 - 18.09.18 - 09:59
может просто в РИБ настроить так, чтобы пользователей не по УИН, а по коду, например искало
   Повелитель
 
3 - 18.09.18 - 10:03
(2) Понял, если других вариантов не будет, то буду переписывать процедуру авторизации. Но не хотелось бы типовую переписывать.
   RomanYS
 
4 - 18.09.18 - 10:10
На ИТС есть обработка переноса пользователей, проверь, может она умеет УИД переносить
   Повелитель
 
5 - 18.09.18 - 10:15
(4) Спасибо, гляну
   Повелитель
 
6 - 18.09.18 - 11:57
Переписал типовую процедуру, может кому пригодиться.
Мой код выделен комментарием.

Функция ПользовательПоИдентификаторуСуществует(УникальныйИдентификатор,
                                               СсылкаНаТекущего = Неопределено,
                                               НайденныйПользователь = Неопределено) Экспорт
    
    УстановитьПривилегированныйРежим(Истина);
    
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("СсылкаНаТекущего", СсылкаНаТекущего);
    Запрос.УстановитьПараметр("УникальныйИдентификатор", УникальныйИдентификатор);
    Запрос.Текст = 
    "ВЫБРАТЬ
    |    Пользователи.Ссылка КАК Пользователь
    |ИЗ
    |    Справочник.Пользователи КАК Пользователи
    |ГДЕ
    |    Пользователи.ИдентификаторПользователяИБ = &УникальныйИдентификатор
    |    И Пользователи.Ссылка <> &СсылкаНаТекущего
    |";
    
    Результат = Ложь;
    НайденныйПользователь = Неопределено;
    
    НачатьТранзакцию();
    Попытка
        РезультатЗапроса = Запрос.Выполнить();
        
        //Дополнительно +  

        //18.09.2018 14:31:39 А.Н.

        Если РезультатЗапроса.Пустой() Тогда
            
            НайденПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(УникальныйИдентификатор);
            
            Если НайденПользовательИБ <> Неопределено Тогда
                Запрос = Новый Запрос;
                Запрос.Текст =
                "ВЫБРАТЬ
                |    Пользователи.Ссылка КАК Пользователь,
                |    Пользователи.ИдентификаторПользователяИБ
                |ИЗ
                |    Справочник.Пользователи КАК Пользователи
                |ГДЕ
                |    Пользователи.Ссылка <> &СсылкаНаТекущего
                |    И Пользователи.Код = &Код";
                Запрос.УстановитьПараметр("Код",НайденПользовательИБ.Имя);
                Запрос.УстановитьПараметр("СсылкаНаТекущего", СсылкаНаТекущего);
                
                РезультатЗапроса2 = Запрос.Выполнить();
                
                Если НЕ РезультатЗапроса2.Пустой() Тогда
                    Выборка = РезультатЗапроса2.Выбрать();
                    Выборка.Следующий();
                    НайденныйПользователь = Выборка.Пользователь;
                    
                    //Перезапишем уникальный идентификатор в справочнике "Пользователи".

                    ТекОбъектПользователь = НайденныйПользователь.ПолучитьОбъект();
                    ТекОбъектПользователь.ИдентификаторПользователяИБ = УникальныйИдентификатор;
                    ТекОбъектПользователь.Записать();
                    
                    Результат = Истина;
                    Пользователи.НайтиНеоднозначныхПользователейИБ(, УникальныйИдентификатор);
                    
                    
                    
                КонецЕсли;
                
            КонецЕсли; 
        КонецЕсли; 
        //Дополнительно -

        
        Если НЕ РезультатЗапроса.Пустой() Тогда
            Выборка = РезультатЗапроса.Выбрать();
            Выборка.Следующий();
            НайденныйПользователь = Выборка.Пользователь;
            Результат = Истина;
            Пользователи.НайтиНеоднозначныхПользователейИБ(, УникальныйИдентификатор);
        КонецЕсли;
        
        ЗафиксироватьТранзакцию();
    Исключение
        ОтменитьТранзакцию();
        ВызватьИсключение;
    КонецПопытки;
    
    Возврат Результат;
    
КонецФункции


   RomanYS
 
7 - 18.09.18 - 12:06
(0) А что у тебя пользователи (справочник) регулярно меняются?
Не проще было изменить ИдентификаторПользователяИБ в справочнике и исключить его обновление при обмене?
   Cyberhawk
 
8 - 18.09.18 - 12:42
"Как поменять Уникальный идентификатор пользователя платформы?"// Если речь о пользователе ИБ (какой смысл называть вещи не своими именами?), то никак

"Как все 3 сделать с единым идентификатором?"// Никак, для пользователей ИБ установка своего УИДа не поддерживается. Он устанавливается только платформой неявно при записи и вмешаться в этот процесс (в отличие от ссылочных объектов БД) никак нельзя.
   Повелитель
 
9 - 18.09.18 - 12:46
(7) Тоже вариант, но я привык из центральной базы администрировать настройки пользователей.
   Повелитель
 
10 - 18.09.18 - 12:47
(8) Все верно "Пользователя платформы" = пользователе ИБ.
И по второму пункту тоже понял.
 
 Рекламное место пустует
   RomanYS
 
11 - 18.09.18 - 13:08
(9) посмотрел в УПП, в справочнике всего 3 реквизита: профиль, физлицо и этот самымй ИдентификаторПользователяИБ. Вряд ли они часто изменяются. Все администрируемые настройки в РС. В БСП конечно может быть по-другому.

И администрировать целиком из ЦБ всё равно не получится: пользователи (платформы) вроде не переносятся при обменах.
   Cyberhawk
 
12 - 18.09.18 - 13:09
(11) "пользователи (платформы) вроде не переносятся при обменах" // А это и не требуется: при записи прикладного пользователя (справочник "Пользователи") создается/обновляется пользователь ИБ
   RomanYS
 
13 - 18.09.18 - 13:12
(12) при интерактивной записи администратором? или при обмене?
   Повелитель
 
14 - 18.09.18 - 13:20
(11) Сейчас в своей конфигурации посмотрел "Управление торговым предприятием для Казахстана, редакция 2.0, разработка для Казахстана: «1С-Рейтинг» (2.0.13.10)"

Пользователи включены в обмен.

У меня есть участки где типовые модули и объекты не трогал. Есть переписанные места.
Справочник "Пользователи" у меня сильно расширен, реквизитами (около 30) и табличными частями (4 штуки).
Поэтому проще в центральной базе править, а то пользователи ездят по филиалам, каждый раз им настройки менять, за всем не уследишь.
   Cyberhawk
 
15 - 18.09.18 - 13:21
(13) В типовых на БСП вряд ли пользователи вообще в РИБе мигрируют (могут входть в состав плана обмена, но не проходят фильры правил регистрации). Да и запись справочников в режиме загрузки обычно происходит, так что в типовых вряд ли что-то само в этом плане делается.
Я-то описывал, как можно реализовать централизованное управление пользователями.
   RomanYS
 
16 - 18.09.18 - 13:25
(14) тогда понятно.
>> Пользователи включены в обмен.
Это же про справочник? Или можно в план обмена пользователей ИБ (платформы) включить?
   Повелитель
 
17 - 18.09.18 - 13:35
(16) Да про справочник. Пользователи ИБ в обмен не включены.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует