|
Программно определить открыта ли нужная база для пользователя? | ☑ | ||
---|---|---|---|---|
0
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
|
Если Вопрос("А у вас база открыта", РежимДиалогаВопрос.ДаНет) <> КодВозвратаДиалога.Да Тогда
ОткрытьБазу(); КОнецЕсли; |
|||
2
ASU_Diamond
15.09.20
✎
14:04
|
"должна быть открыта для пользователя" - расшифруй
|
|||
3
Mikhail Volkov
15.09.20
✎
14:13
|
(2) Не просто кем-то открыта, а тем же пользователем, который в Альфа-Авто захотел открыть объект в ERP/КА2.
|
|||
4
ASU_Diamond
15.09.20
✎
14:29
|
(3) меня вообще смущает фраза "открыта ДЛЯ пользователя"
|
|||
5
dka80
15.09.20
✎
14:32
|
В расширении создаешь веб-сервис, который по запросу с параметром имени текущего пользователя будет выдавать соответствующий результат
|
|||
6
Жан Пердежон
15.09.20
✎
14:59
|
(0) открой для себя мир веб-сервисов
|
|||
7
Mikhail Volkov
15.09.20
✎
15:02
|
(5) А активные пользователи, зашедшие а базу по Com-соединению, чем-то отличаются от обычных?
|
|||
8
ASU_Diamond
15.09.20
✎
15:04
|
(7) если в список активных пользователей глянуть, то можно увидеть, что у них в качестве приложения указано COM-соединение
|
|||
9
Mikhail Volkov
15.09.20
✎
18:13
|
(4) Все пользователи перенесены (и переносятся с документами) из Альфа-Авто в КА1/КА2.
Обычно для получения списка активных пользователей приводят следующую процедуру (https://helpf.pro/faq/view/149.html): СоединенияИнформационнойБазы = ПолучитьСоединенияИнформационнойБазы(); Для Каждого Соединение Из СоединенияИнформационнойБазы Цикл ТЗ=ИтогСписокСоединений.Добавить(); ТЗ.Пользователь=Соединение.Пользователь.Имя; ТЗ.Приложение=ПредставлениеПриложения(Соединение.ИмяПриложения); ТЗ.НачалоРаботы=Соединение.НачалоСеанса; ТЗ.Компьютер=Соединение.ИмяКомпьютера; ТЗ.Соединение=Соединение.НомерСоединения; КонецЦикла; Ее легко переделать для: Функция БазаОткрытаПодПользователем(Пользователь) СоединенияИнформационнойБазы = ПолучитьСоединенияИнформационнойБазы(); Для Каждого Соединение Из СоединенияИнформационнойБазы Цикл Если Пользователь=Соединение.Пользователь И ПредставлениеПриложения(Соединение.ИмяПриложения)="Тонкий клиент" Тогда Возврат Истина; КонецЕсли; КонецЦикла; Возврат Ложь; КонецФункции Только как переделать под Com-соединение? |
|||
10
Жан Пердежон
15.09.20
✎
19:50
|
(9) а что не получается?
|
|||
11
Mikhail Volkov
15.09.20
✎
20:06
|
Есть возможность автоматом запустить базу через параметры, если у пользователя ОС-аутентификация?
|
|||
12
Mikhail Volkov
16.09.20
✎
08:08
|
(10) Странно, в массиве ОбъектCom.ПолучитьСоединенияИнформационнойБазы() какие-то не те пользователи? Не из справочника Пользователи, не имеют реквизитов Код и Наименование. Вместо них: Имя и ПолноеИмя, их можно сменить, сделать различными в разных базах. Хотелось бы сделать, чтобы определялось по объекту Пользователь (по его GUID)?
|
|||
13
Mikhail Volkov
16.09.20
✎
12:46
|
В ERP/КА2 в справочнике Пользователи есть GUID ИдентификаторПользователяИБ (еще ИдентификаторПользователяСервиса). Наверное это и есть GUID пользователя из ПолучитьСоединенияИнформационнойБазы()?
|
|||
14
Mikhail Volkov
16.09.20
✎
15:04
|
Странно, Соединение.Пользователь.УникальныйИдентификатор() ошибку дает Метод объекта не обнаружен (УникальныйИдентификатор). Что пользователи из ПолучитьСоединенияИнформационнойБазы() не имеют GUID?
|
|||
15
Жан Пердежон
16.09.20
✎
15:32
|
в СП всё есть:
СоединениеИнформационнойБазы (InfoBaseConnection) Пользователь (User) Использование: Только чтение. Описание: Тип: ПользовательИнформационнойБазы. |
|||
16
Mikhail Volkov
16.09.20
✎
16:39
|
(15) Спс. Оказывается у ПользовательИнформационнойБазы в свойствах есть УникальныйИдентификатор. В итоге:
Функция БазаКАОткрытаПользователем() Экспорт Если ОбъектКА <> Неопределено Тогда ПользовательКА = НайтиЭлементСправочникаКА(ПараметрыСеанса.Пользователь, "Пользователи"); GUIDПользователяИБ = ОбъектКА.XMLСтрока(ПользовательКА.ИдентификаторПользователяИБ); МассивСоединений = ОбъектКА.ПолучитьСоединенияИнформационнойБазы(); Для Каждого Соединение Из МассивСоединений Цикл Если ОбъектКА.XMLСтрока(Соединение.Пользователь.УникальныйИдентификатор) = GUIDПользователяИБ И Найти(ПредставлениеПриложения(Соединение.ИмяПриложения), "клиент") > 0 Тогда Возврат Истина; КонецЕсли; КонецЦикла; КонецЕсли; Возврат Ложь; КонецФункции // БазаКАОткрытаПользователем() |
|||
17
Mikhail Volkov
17.09.20
✎
15:24
|
Остались от прежнего программиста фрагменты в коде: Ссылка.DataVersion - ссылка Com-объекта, иногда сам использую - проверяю заполненность поля DataVersion, то ссылка не пустая. То точно не знаю, что содержит это поле?
|
|||
18
Mikhail Volkov
17.09.20
✎
17:35
|
А что случилось, почему не могу новую тему создать?
Сайт forum.mista.ru пока не может обработать этот запрос. HTTP ERROR 500 После обновления страницы пишет: ОШИБКА: Вход не выполнен. |
|||
19
Mikhail Volkov
17.09.20
✎
18:21
|
Последняя новая тема была создана в 13:58 Добавить/удалить колонку в стандартном отчете СКД
|
|||
20
Mikhail Volkov
18.09.20
✎
07:25
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |