После защиты паролем через библиотеку, макрос перестал работать

Автор Konstanta, 7 февраля 2020, 10:54

0 Пользователи и 1 гость просматривают эту тему.

mikekaganski

Цитата: economist от  8 февраля 2020, 16:35
Все эти защиты - от самого себя. А когда в офисе свирепствует чума KPI или что-то подобное - нужно менять инструмент или не отдавать его на сторону.

Если персонал дорос до автоподбора паролей листов - дойдет и до прямой правки XLS/ODS-файлов. Тут нужно базу данных с правами на уровне движка СУБД и безопасностью на базе ролей.

Полностью поддерживаю.
С уважением,
Михаил Каганский

Kadet

Нашёл топ и решил его вновь поднять, хотя вопрос и не совсем в тему.

После установки парольной защиты на библиотеки макросов при попытке подключить эту библиотеку выдаёт ошибку.
Это так и должно быть, или я чего-то неправильно делаю?
Может при вызове функции ThisDatabaseDocument.BasicLibraries.LoadLibrary("MyLibrary") нужно ещё вводить параметр "Password"? Но тогда он будет доступен всем и грош цена такой защите.

rami

Цитата: Kadet от 15 августа 2020, 22:57Это так и должно быть, или я чего-то неправильно делаю?
Кажется, баг. Если проигнорировать ошибку с помощью On Error Resume Next, библиотека должна загрузиться.

У меня на LibreOffice 6.4.5.2 библиотека в этом случае грузится, но формы не грузятся как надо из-за кириллицы в библиотеке. Может в 7.0 версии сработает, но всё это хлипко и говнокодисто :o

mikekaganski

Я недавно правил некоторые проблемы, связанные с запароленными библиотеками. Что-то могло, наоборот, поломаться; или просто до чего-то руки не дошли (или даже проблема неизвестна). Нужны багрепорты с воспроизведением.
С уважением,
Михаил Каганский

Kadet

Цитата: mikekaganski от 16 августа 2020, 09:21Нужны багрепорты с воспроизведением.
Так это же для начала нужно выяснить когда же оно работало ещё, чтобы выяснить регресс. Это же сколько версий LO нужно перебагить?!

Kadet

Цитата: rami от 16 августа 2020, 08:55У меня на LibreOffice 6.4.5.2 библиотека в этом случае грузится, но формы не грузятся как надо из-за кириллицы в библиотеке.
Как мне кажется, что если обойти ошибку библиотеки таки не подгружаются. Макрос, открывающий основную форму находится в глобальной библиотеке Стандарт и запускается вместе с первичными установками БД. А вот макросы, которые занимаются первичной настройкой и форматированием этой формы и запускаются с её открытием лежит именно в той самой запароленной библиотеке. И именно их не находит система и выдаёт ошибку при загрузке формы.

Ша поюзаю 6.4.5(6). Посмотрю, что там. Но мне кажется, судя по вашей информации, копать нужно гораздо глубже.

rami

Цитата: Kadet от 16 августа 2020, 10:08Как мне кажется, что если обойти ошибку библиотеки таки не подгружаются.
Во первых, проверить загружена библиотека или нет можно методом isLibraryLoaded:
If GlobalScope.BasicLibraries.isLibraryLoaded("DBLibrary") Then msgbox("Библиотека DBLibrary загружена") Else msgbox("Библиотека DBLibrary НЕ загружена")

Во вторых, вы читали что написано в сообщении на картинке в моём предыдущем ответе (Ответ #17)? Там написано: "ОШИБКА ВХОДА!!! Ошибочный ЛОГИН или ПАРОЛЬ. (это два сообщения из библиотеки DBLibrary модуль Login макросы SetUser и LoginID) Это происходит из-за того, что все не ASCII символы заменяются на знак ?, а таких объектов (логинов, паролей, форм, таблиц и т.д.) у вас нет, потому и не находит.

mikekaganski

Цитата: Kadet от 16 августа 2020, 09:50
Цитата: mikekaganski от 16 августа 2020, 09:21Нужны багрепорты с воспроизведением.
Так это же для начала нужно выяснить когда же оно работало ещё, чтобы выяснить регресс. Это же сколько версий LO нужно перебагить?!

Разве я писал "с анализом"? достаточно просто написать "вот вам документ; если я делаю вот так, то вот тут болит".
С уважением,
Михаил Каганский

Kadet

Цитата: rami от 16 августа 2020, 11:25Ошибочный ЛОГИН или ПАРОЛЬ.
Ну, признаться, не слишком внимательно вчитывался. Вопросики заметил, а чего ошибка не вчитался.
А ошибка логина и пароля, это наверное таки мой косяк. Во встроенной БД пароль не спрашивается. Берёт от балды что-то и продолжает работать. Это у меня, на Win так, поэтому я и не стал морочиться с этим косяком, хотя он подразумевался. А у вас, если не ошибаюсь МАС, возможно что-то и по другому.

Ща выложу другой вариант БД, которую я давеча упростил под демку. Там этот косяк преодолён. Там упростил по максимуму установку. Перенёс основную библиотеку внутрь самого документа и сделал только одну библиотеку переносную StartSet, которую нужер перенести в глобальный Standard.

Kadet

Цитата: mikekaganski от 16 августа 2020, 12:27Разве я писал "с анализом"? достаточно просто написать "вот вам документ; если я делаю вот так, то вот тут болит".
Хорошо. Я запощу на багзиле сообщение.

Kadet

Однако, попробовал запароленную библиотеку в LO 6.3.6. Уже там даёт ту же ошибку. А более ранних версий у меня не сохранилось.

При попытки обойти ошибку с помощью On Error Resume Next (кстати в новом варианте эта попытка сделана), то при первой же попытке обратиться к любому макросу из запароленной библиотеки выдаёт ошибку.

mikekaganski

Цитата: Kadet от 16 августа 2020, 12:30
... другой вариант БД, которую я давеча упростил под демку. Там этот косяк преодолён. Там упростил по максимуму установку. Перенёс основную библиотеку внутрь самого документа и сделал только одну библиотеку переносную StartSet, которую нужер перенести в глобальный Standard.

Это радует. Шаг в правильном направлении!
С уважением,
Михаил Каганский

Kadet

Кстати, я в заморочке мог выложить базу с уже запороленной библиотекой MyLibrary (встроенной в сам документ). Извините, если так. Сейчас уже проверил и заменил в том посте уже на не запароленную. Проверить работу защиты можно если самим запаролить сию библиотеку.

Цитата: rami от 16 августа 2020, 11:25Во первых, проверить загружена библиотека или нет можно методом isLibraryLoaded:
Код:
Проверил. Пишет, что таки библиотека загружена, однако при первом же обращении к макросу из той библиотеки - ошибка.

Kadet

Хотя, возможно этот самый глюк из другой оперы.
Давно заметил непонятный глюк в своей БД. Иногда, по непонятным причинам, при первичной загрузке программа перестаёт находить некоторые макросы из другой библиотеки, кроме Statdard. Стоит переименовать этот макрос, допустим добавить в названии символ, и всё нормализуется. Ща потестирую. Наверно это из той оперы зараза, потому что даже при незапароленной тоже ругается на этот макрос.

Kadet

Не, таки косяк с защитой. Пишет, что библиотека подключена (мало того, она вроде и без подключения изначально подключена), но при любом обращении к любому макросу из этой библиотеки выдаёт ошибку, что "функция не определена".

Ща багзиле напишу.