Имя: Пароль:
1C
1С v8
Уникальный идентификатор пользователя платформы 1с.
0 Повелитель
 
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)
Использование:
Только чтение.
2 butterbean
 
18.09.18
09:59
может просто в РИБ настроить так, чтобы пользователей не по УИН, а по коду, например искало
3 Повелитель
 
18.09.18
10:03
(2) Понял, если других вариантов не будет, то буду переписывать процедуру авторизации. Но не хотелось бы типовую переписывать.
4 RomanYS
 
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.Выбрать();
                    Выборка.Следующий();
                    НайденныйПользователь = Выборка.Пользователь;
                    
                    //Перезапишем уникальный идентификатор в справочнике "Пользователи".
                    ТекОбъектПользователь = НайденныйПользователь.ПолучитьОбъект();
                    ТекОбъектПользователь.ИдентификаторПользователяИБ = УникальныйИдентификатор;
                    ТекОбъектПользователь.Записать();
                    
                    Результат = Истина;
                    Пользователи.НайтиНеоднозначныхПользователейИБ(, УникальныйИдентификатор);
                    
                    
                    
                КонецЕсли;
                
            КонецЕсли;
        КонецЕсли;
        //Дополнительно -
        
        Если НЕ РезультатЗапроса.Пустой() Тогда
            Выборка = РезультатЗапроса.Выбрать();
            Выборка.Следующий();
            НайденныйПользователь = Выборка.Пользователь;
            Результат = Истина;
            Пользователи.НайтиНеоднозначныхПользователейИБ(, УникальныйИдентификатор);
        КонецЕсли;
        
        ЗафиксироватьТранзакцию();
    Исключение
        ОтменитьТранзакцию();
        ВызватьИсключение;
    КонецПопытки;
    
    Возврат Результат;
    
КонецФункции

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

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

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

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