Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Программно определить открыта ли нужная база для пользователя?

Программно определить открыта ли нужная база для пользователя?
Я
   Mikhail Volkov
 
15.09.20 - 13:55
Есть 2 базы: Альфа-Авто 4.1 и УПП/КА1 связанные OLE-механизмом. Когда пользователю требуется из Альфа-Авто быстро посмотреть этот же объект (чаще документ) в УПП/КА1, то проблем в этом нет. Но сейчас надо переходить на ERP/КА2, работающей на другой более высокой версии платформы (Альфа-Авто 4.1 работает не выше 8.3.10). OLE-механизм между различными версиями платформ не работает, только Com. Нашел обработку как открыть объект в другой базе по ссылке, найденный по Com-соединению: http://catalog.mista.ru/public/1042208/, вроде работает. Но база ERP/КА2 должна быть открыта для пользователя. Как программно это проверить? Чтобы выдать предупреждение, если не открыта...
   ДенисЧ
 
1 - 15.09.20 - 13:59
Если Вопрос("А у вас база открыта", РежимДиалогаВопрос.ДаНет) <> КодВозвратаДиалога.Да Тогда
 ОткрытьБазу();
КОнецЕсли;
   ASU_Diamond
 
2 - 15.09.20 - 14:04
"должна быть открыта для пользователя" - расшифруй
   Mikhail Volkov
 
3 - 15.09.20 - 14:13
(2) Не просто кем-то открыта, а тем же пользователем, который в Альфа-Авто захотел открыть объект в ERP/КА2.
   ASU_Diamond
 
4 - 15.09.20 - 14:29
(3) меня вообще смущает фраза "открыта ДЛЯ пользователя"
   dka80
 
5 - 15.09.20 - 14:32
В расширении создаешь веб-сервис, который по запросу с параметром имени текущего пользователя будет выдавать соответствующий результат
   Жан Пердежон
 
6 - 15.09.20 - 14:59
(0) открой для себя мир веб-сервисов
   Mikhail Volkov
 
7 - 15.09.20 - 15:02
(5) А активные пользователи, зашедшие а базу по Com-соединению, чем-то отличаются от обычных?
   ASU_Diamond
 
8 - 15.09.20 - 15:04
(7) если в список активных пользователей глянуть, то можно увидеть, что у них в качестве приложения указано COM-соединение
   Mikhail Volkov
 
9 - 15.09.20 - 18:13
(4) Все пользователи перенесены (и переносятся с документами) из Альфа-Авто в КА1/КА2.
Обычно для получения списка активных пользователей приводят следующую процедуру (https://helpf.pro/faq/view/149.html):
    СоединенияИнформационнойБазы = ПолучитьСоединенияИнформационнойБазы();
    Для Каждого Соединение Из СоединенияИнформационнойБазы Цикл                   
        ТЗ=ИтогСписокСоединений.Добавить();                                       
        ТЗ.Пользователь=Соединение.Пользователь.Имя;                              
        ТЗ.Приложение=ПредставлениеПриложения(Соединение.ИмяПриложения);          
        ТЗ.НачалоРаботы=Соединение.НачалоСеанса;                                  
        ТЗ.Компьютер=Соединение.ИмяКомпьютера;                                    
        ТЗ.Соединение=Соединение.НомерСоединения;                                 
    КонецЦикла;

Ее легко переделать для:
Функция БазаОткрытаПодПользователем(Пользователь)
    СоединенияИнформационнойБазы = ПолучитьСоединенияИнформационнойБазы();
    Для Каждого Соединение Из СоединенияИнформационнойБазы Цикл                   
        Если Пользователь=Соединение.Пользователь И ПредставлениеПриложения(Соединение.ИмяПриложения)="Тонкий клиент" Тогда                              
            Возврат Истина;
        КонецЕсли;
    КонецЦикла;
    Возврат Ложь;
КонецФункции

Только как переделать под Com-соединение?
   Жан Пердежон
 
10 - 15.09.20 - 19:50
(9) а что не получается?
   Mikhail Volkov
 
11 - 15.09.20 - 20:06
Есть возможность автоматом запустить базу через параметры, если у пользователя ОС-аутентификация?
   Mikhail Volkov
 
12 - 16.09.20 - 08:08
(10) Странно, в массиве ОбъектCom.ПолучитьСоединенияИнформационнойБазы() какие-то не те пользователи? Не из справочника Пользователи, не имеют реквизитов Код и Наименование. Вместо них: Имя и ПолноеИмя, их можно сменить, сделать различными в разных базах. Хотелось бы сделать, чтобы определялось по объекту Пользователь (по его GUID)?
   Mikhail Volkov
 
13 - 16.09.20 - 12:46
В ERP/КА2 в справочнике Пользователи есть GUID ИдентификаторПользователяИБ (еще ИдентификаторПользователяСервиса). Наверное это и есть GUID пользователя из ПолучитьСоединенияИнформационнойБазы()?
   Mikhail Volkov
 
14 - 16.09.20 - 15:04
Странно, Соединение.Пользователь.УникальныйИдентификатор() ошибку дает Метод объекта не обнаружен (УникальныйИдентификатор). Что пользователи из ПолучитьСоединенияИнформационнойБазы() не имеют GUID?
   Жан Пердежон
 
15 - 16.09.20 - 15:32
в СП всё есть:

СоединениеИнформационнойБазы (InfoBaseConnection)
Пользователь (User)
Использование:
Только чтение.
Описание:
Тип: ПользовательИнформационнойБазы.
   Mikhail Volkov
 
16 - 16.09.20 - 16:39
(15) Спс. Оказывается у ПользовательИнформационнойБазы в свойствах есть УникальныйИдентификатор. В итоге:
Функция БазаКАОткрытаПользователем() Экспорт
    Если ОбъектКА <> Неопределено Тогда
        ПользовательКА = НайтиЭлементСправочникаКА(ПараметрыСеанса.Пользователь, "Пользователи");
        GUIDПользователяИБ = ОбъектКА.XMLСтрока(ПользовательКА.ИдентификаторПользователяИБ);
        МассивСоединений = ОбъектКА.ПолучитьСоединенияИнформационнойБазы();
        Для Каждого Соединение Из МассивСоединений Цикл
            Если ОбъектКА.XMLСтрока(Соединение.Пользователь.УникальныйИдентификатор) = GUIDПользователяИБ
               И Найти(ПредставлениеПриложения(Соединение.ИмяПриложения), "клиент") > 0 Тогда                              
                Возврат Истина;
            КонецЕсли;
        КонецЦикла;
    КонецЕсли;
    Возврат Ложь;
КонецФункции    // БазаКАОткрытаПользователем()
   Mikhail Volkov
 
17 - 17.09.20 - 15:24
Остались от прежнего программиста фрагменты в коде: Ссылка.DataVersion - ссылка Com-объекта, иногда сам использую - проверяю заполненность поля DataVersion, то ссылка не пустая. То точно не знаю, что содержит это поле?
   Mikhail Volkov
 
18 - 17.09.20 - 17:35
А что случилось, почему не могу новую тему создать?
Сайт forum.mista.ru пока не может обработать этот запрос.
HTTP ERROR 500
После обновления страницы пишет: ОШИБКА: Вход не выполнен.
   Mikhail Volkov
 
19 - 17.09.20 - 18:21
Последняя новая тема была создана в 13:58 Добавить/удалить колонку в стандартном отчете СКД
   Mikhail Volkov
 
20 - 18.09.20 - 07:25

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