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

Главная категория => Макросы => Тема начата: bigor от 11 октября 2016, 19:36

Название: Очистить список "Предыдущие документы"
Отправлено: bigor от 11 октября 2016, 19:36
Доброго времени суток.
Подскажите как в LibreOffice макросом можно очистить список "Предыдущие документы"
или как вариант в каком файле храниться этот список.
Название: Re: Очистить список "Предыдущие документы"
Отправлено: rami от 11 октября 2016, 21:50
Хотите очистить его раз и навсегда?
Название: Re: Очистить список "Предыдущие документы"
Отправлено: bigor от 11 октября 2016, 23:33
Если есть возможность, то лучше бы просто при выполнении макроса очищался. Но в крайнем случае раз и навсегда :)
А может еще какой вариант предложите. В общем заметил, что если в этом списке есть файлы с сетевых дисков, а эти диски отключены, то открытие офисом документа  с локального диска очень медленное. Если же список почистить, то работает нормально.
Название: Re: Очистить список "Предыдущие документы"
Отправлено: mikekaganski от 12 октября 2016, 07:06

Для управления списком недавних документов:
меню Tools -> Options -> LibreOffice -> Advanced -> Open Expert Configuration -> перейдите к разделу org.openoffice.Office.Common -> History

В меню File -> Recent Documents последним в списке идёт Clear List - можно просто очистить в ручную в момент необходимости (без макросов и изменения настроек); проверено на 5.2.1.2
Название: Re: Очистить список "Предыдущие документы"
Отправлено: rami от 12 октября 2016, 07:16
Проще зайти в "Параметры— LibreOffice—Расширенные возможности" —> Экспертные настройки, в окошко поиска забить /org.openoffice.Office.Common/History и выставить PickListSize равным нулю.
Название: Re: Очистить список "Предыдущие документы"
Отправлено: bigor от 12 октября 2016, 08:51
Хотелось бы это сделать из макроса. Машин много в том числе и удаленных
Название: Re: Очистить список "Предыдущие документы"
Отправлено: economist от 12 октября 2016, 09:05
А что же это за LAN-сеть такая, когда сетевые диски часто отваливаются?
Может пора пробежаться по офису, да переобжать всё, с термоусадкой? Заодно с девчатами познакомитесь, лазая у них под столом с феном и разглядывая прилепленные к столу жвачки :-)).
У себя в офисе кол-во пропаданий шар уменьшилось в 4 раза после подобного "субботника".     

А если проблемы с удаленными/VPN/RDP - такой симптом даже тревожный: нет ничего хуже запоротого при сохранении важного файла. Вообще... - лечить симптом вместо болячки - это так по-нашему.
А представленных решений, имхо, достаточно.
Название: Re: Очистить список "Предыдущие документы"
Отправлено: bigor от 12 октября 2016, 09:27
Диски сами не отваливаются, они специально отключаются в некоторых случаях самим пользователем. Будем считать что это политика безопасности, на которую повлиять нельзя. Поэтому остается только лечить симптом :)
Название: Re: Очистить список "Предыдущие документы"
Отправлено: bigor от 12 октября 2016, 12:31
Кстати в LO 5.2.1.2 проблему пофиксили ( так что зря я намусорил в https://bugs.documentfoundation.org/show_bug.cgi?id=100895 :( )  Но мою проблему это не решает, т.к. в ближайшей перспективе обновление на всех рабочих местах не пройдет
Название: Re: Очистить список "Предыдущие документы"
Отправлено: JohnSUN от 12 октября 2016, 12:38
Тогда тебе остаётся только расковырять код вот этой древней утилиты (http://extensions.openoffice.org/en/project/history-manager) и действительно получить макрос, который это сделает
Название: Re: Очистить список "Предыдущие документы"
Отправлено: rami от 12 октября 2016, 12:45
Сами пользователи не могут обнулить настройку?
Название: Re: Очистить список "Предыдущие документы"
Отправлено: JohnSUN от 12 октября 2016, 13:11
Ну да, вместо макроса написать циркулярное письмо с инструкцией...
С другой стороны, это ведь ПОЛЗАТЕЛИ! Те, которые не рождённые летать. Хоть один, но найдётся такой - "А я всё сделал как ты написал, а оно теперь не работает..."
Название: Re: Очистить список "Предыдущие документы"
Отправлено: mikekaganski от 12 октября 2016, 13:29
Проблема в том, что макросом это сделать довольно трудно.
В LibreOffice сейчас этот список хранится в $user/registrymodifications.xcu
Нужно распарсить XML и удалить элементы:
<item oor:path="/org.openoffice.Office.Histories/Histories/org.openoffice.Office.Histories:HistoryInfo['PickList']/OrderList">,
<item oor:path="/org.openoffice.Office.Histories/Histories/org.openoffice.Office.Histories:HistoryInfo['PickList']/ItemList">

В принципе, пойдёт банальное удаление строк регэксом "^<item oor:path="/org[.]openoffice[.]Office[.]Histories/Histories/org[.]openoffice[.]Office[.]Histories:HistoryInfo\['PickList'\].+$".

Раньше в некоторых версиях использовался файл Histories.xcu (который можно было вообще удалить, там кроме истории мало что было). На него и был рассчитан плагин History Manager (History Master), но сейчас это не работает.

В настоящий момент доступа к встоенному функционалу через Uno нет. См. https://bugs.documentfoundation.org/show_bug.cgi?id=95788
Название: Re: Очистить список "Предыдущие документы"
Отправлено: bigor от 12 октября 2016, 14:07
mikekaganski Спасибо, попробую поработать с registrymodifications.xcu

JohnSUN Спасибо, History Manager мне тоже попадался на глаза, но смущало, что во времена его написания предыдущие документы хранились в Histories.xcu, и сейчас его код вряд ли поможет.

Всем спасибо за участие.
Название: Re: Очистить список "Предыдущие документы"
Отправлено: economist от 12 октября 2016, 20:40
Bigor - отключенный сетевой диск сохраняется в реестре, его отключение не добавит безопасности. Также путь к сетевому диску и шарам виден в MRI-списках и даже в файлах внутри приложений. По своему опыту проверок - наличие отключенного сетевого диска не увеличивает и не уменьшает число вопросов к персоналу ни на йоту. А вот сервер я бы на вашем месте "тушил", ради безопасности.
Название: Re: Очистить список "Предыдущие документы"
Отправлено: sokol92 от 8 ноября 2021, 17:51
Из "спортивного интереса" (пока указанный выше баг не исправлен) можно попробовать следующую последовательность действий:

1. Запомнить текущее значение параметра PickListSize (см. ответ Михаила #12) и обнулить его через сервис ConfigurationUpdateAccess (https://api.libreoffice.org/docs/idl/ref/servicecom_1_1sun_1_1star_1_1configuration_1_1ConfigurationUpdateAccess.html) (можно использовать функцию GetRegistryKeyContent из библиотеки приложения Tools).
2. Используя интерфейс AccessibleContext "зайти" в дочернее меню Файл/Недавние документы/. В этот момент список недавно открытых документов должен стать пустым.
3. Восстановить значение параметра PickListSize через интерфейс ConfigurationUpdateAccess.