Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

22 Октябрь 2021, 12:06 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Здесь можно поблагодарить участников форума Улыбка
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: « 1 2 3 »   Вниз
  Печать  
Автор Тема: После обработки документа во Writer из макроса нельзя закрыть приложение  (Прочитано 1139 раз)
0 Пользователей и 1 Гость смотрят эту тему.
sokol92
Форумчанин
***
Offline Offline

Пол: Мужской
Сообщений: 574


WWW
« Ответ #15: 13 Октябрь 2021, 16:56 »

Позже посмотрю.
Автору темы - когда копируете подобный текст, не забывайте, пожалуйста, о кодировке текста!
« Последнее редактирование: 13 Октябрь 2021, 17:00 от sokol92 » Записан

Владимир.
karzan
Участник
**
Offline Offline

Сообщений: 13


« Ответ #16: 13 Октябрь 2021, 16:57 »

Спасибо всем за оперативные ответы. Протестировать в системе смогу только завтра. С результатами вернусь.
Записан
karzan
Участник
**
Offline Offline

Сообщений: 13


« Ответ #17: 13 Октябрь 2021, 17:23 »

А когда документ на месте, всё работает как надо. И ЛО закрывается. Конечно, при раскомментированной строке, указанной в ответе 11.
А на какой версии LO тестировали?

Помимо terminate есть методы закрытия приложения?
« Последнее редактирование: 13 Октябрь 2021, 17:35 от karzan » Записан
mikekaganski
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 2 341


« Ответ #18: 13 Октябрь 2021, 17:46 »

А на какой версии LO тестировали?
7.2.2.2.

Помимо terminate есть методы закрытия приложения?
terminate - это метод интерфейса XDesktop, предназначенный для закрытия приложения. Какие методы закрытия приложения должны быть помимо метода для закрытия приложения?
Записан

С уважением,
Михаил Каганский
sokol92
Форумчанин
***
Offline Offline

Пол: Мужской
Сообщений: 574


WWW
« Ответ #19: 13 Октябрь 2021, 18:50 »

если кому-то хочется потестировать
Внес свои 3 копейки - отмечены "??" в комментарии.
Ошибки не наблюдаются. Пробовал, в том числе, и на "чистой" (сразу после инсталляции) версии.

Version: 7.2.1.2 (x64) / LibreOffice Community
Build ID: 87b77fad49947c1441b67c559c339af8f3517e22
CPU threads: 6; OS: Windows 10.0 Build 19042; UI render: default; VCL: win
Locale: ru-RU (ru_RU); UI: en-US
Calc: threaded

* test2.zip (1.22 Кб - загружено 6 раз.)
Записан

Владимир.
karzan
Участник
**
Offline Offline

Сообщений: 13


« Ответ #20: 13 Октябрь 2021, 21:09 »

terminate - это метод интерфейса XDesktop, предназначенный для закрытия приложения. Какие методы закрытия приложения должны быть помимо метода для закрытия приложения?
Я имел в виду вариант реализации, через DispatchHelper например:
Dim oFrame As Object
Dim oDispath As Object
   oFrame     = ThisComponent.CurrentController.Frame
   oDispath   = createUnoService("com.sun.star.frame.DispatchHelper")
   oDispath.executeDispatch(oFrame, ".uno:CloseFrame", "", 0, Array())

helper to dispatch the URLs ".uno:CloseDoc"/".uno:CloseWin"/".uno:CloseFrame" to close a frame/document or the whole application implicitly in case it was the last frame
Записан
sokol92
Форумчанин
***
Offline Offline

Пол: Мужской
Сообщений: 574


WWW
« Ответ #21: 13 Октябрь 2021, 21:57 »

Общение с Диспетчером показано только в случаях, когда нет соответствующих UNO методов (интерфейсов).
В разделе 11 книги A.Питоньяка OOME_4_0.odt про это написано подробно.
« Последнее редактирование: 13 Октябрь 2021, 22:04 от sokol92 » Записан

Владимир.
karzan
Участник
**
Offline Offline

Сообщений: 13


« Ответ #22: 13 Октябрь 2021, 22:19 »

terminate - это метод интерфейса XDesktop, предназначенный для закрытия приложения.
Кстати говоря, в документации явно указано, что метод пытается закрыть приложение. Вариант безусловного закрытия не предоставляет Грустный
Записан
mikekaganski
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 2 341


« Ответ #23: 14 Октябрь 2021, 00:34 »

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

Конечно. Если есть что-то, что мешает закрыть, оно и не должно закрывать.

Это что-то может быть несохранёнными данными (и тогда это ошибка программиста - либо не сохранил, либо не очистил флаг изменений); это может быть другая активная сессия - скажем, Java/Python-код, выполняющий работу через UNO - и это тоже должно быть обработано программистом. Или даже явно написанный код, перехватывающий запросы на закрытие, проверяющий пользовательское условие, и принимающий решение ... и т.п.

В любом случае, действительно, метода "принудительно закрыть программу, несмотря на забытые необходимые действия" не предоставляется. Этот метод в любом случае был бы по разрушительности эквивалентен kill.
Записан

С уважением,
Михаил Каганский
karzan
Участник
**
Offline Offline

Сообщений: 13


« Ответ #24: 14 Октябрь 2021, 16:01 »

Я с обратной связью.
Проблема не ушла. Так же зависает ЛО при первом запуске и не дает закрыть приложение.
Вопрос видимо в том, что скрипт отрабатывает внутри банковского софта.
При запуске отдельно скрипта в Винде ошибок не возникает, закрывается без проблем.
Записан
kompilainenn
Мастер
*****
Online Online

Сообщений: 3 358



« Ответ #25: 14 Октябрь 2021, 16:10 »

скрипт отрабатывает внутри банковского софта
Вам не кажется, что здесь в таком случае это вопрос не по адресу?
Записан

Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут
mikekaganski
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 2 341


« Ответ #26: 14 Октябрь 2021, 16:23 »

Ну всё равно интересно. И всё же есть вопрос - на каком месте он зависает. Если это виснет банковский софт, или некорректный скрипт (как в ответе 12) - это, конечно, не по адресу. А если виснет ЛО - надо разбираться, что за условия к этому ведут... и может быть, баг писать.
Записан

С уважением,
Михаил Каганский
sokol92
Форумчанин
***
Offline Offline

Пол: Мужской
Сообщений: 574


WWW
« Ответ #27: 14 Октябрь 2021, 17:26 »

Вы проверяли вариант скрипта из #19?
Записан

Владимир.
karzan
Участник
**
Offline Offline

Сообщений: 13


« Ответ #28: 14 Октябрь 2021, 20:01 »

Вы проверяли вариант скрипта из #19?
Не впрямую. В конец генерации скрипта каждого файла был добавлен terminate.
Записан
karzan
Участник
**
Offline Offline

Сообщений: 13


« Ответ #29: 14 Октябрь 2021, 20:19 »

И всё же есть вопрос - на каком месте он зависает
Скрипт отрабатывает корректно и внутри банксофта. Файл формируется и содержит все необходимые данные. Но при первом открытии в ЛО приложение невозможно закрыть нормальным образом.
После работы скриптов В памяти остаются фоновые процессы Либры (у меня тоже висят и это мне не мешает). И даже просто запустив ЛО 7.1.3 его уже нельзя нормально закрыть. Есть и такой опыт.
Я к сожалению ограничен в версии ЛО 6.4.4 и не могу лично повторить данный эффект. Приходится работать "вслепую"...
Записан
Страниц: « 1 2 3 »   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!