# Эта функция создает новый документ в режиме скрытого отображения, выводит его заголовок в окне сообщения и затем закрывает его
import uno # импортируем модуль uno для работы с UNO API
from com.sun.star.beans import PropertyValue # импортируем класс PropertyValue для передачи аргументов при загрузке документов

CTX = uno.getComponentContext() # получаем контекст компонентов UNO
SM = CTX.getServiceManager() # получаем менеджер сервисов UNO


def create_instance(name, with_context=False): # определяем функцию для создания экземпляра сервиса по имени
    if with_context: 
        instance = SM.createInstanceWithContext(name, CTX) # создаем экземпляр с контекстом
    else: 
        instance = SM.createInstance(name) # создаем экземпляр без контекста
    return instance 

def msgbox(message, title='AlterOffice', buttons=1, type_msg=0): # определяем функцию для отображения сообщения в окне
    toolkit = create_instance('com.sun.star.awt.Toolkit') # создаем экземпляр инструментария AWT
    msgbox = toolkit.createMessageBox(Desktop.getFrames()[0].getContainerWindow(), type_msg, buttons, title, message) # создаем окно сообщения с заданными параметрами
    return msgbox.execute() # возвращаем результат нажатия кнопки в окне

def new_doc_args(): # определяем функцию для создания нового документа с аргументами
    desktop = create_instance('com.sun.star.frame.Desktop', True) # создаем экземпляр рабочего стола с контекстом
    path = 'private:factory/swriter' # задаем путь к шаблону текстового документа
    args = (PropertyValue(Name='Hidden', Value=True),) # задаем аргументы для загрузки документа (скрытый режим)
    doc = desktop.loadComponentFromURL(path, '_default', 0, args) # загружаем документ по пути с аргументами
    msgbox(doc.Title) # отображаем название документа в окне сообщения
    doc.close(True) # закрываем документ без сохранения
    return
    
Desktop = create_instance('com.sun.star.frame.Desktop', True) # создаем экземпляр рабочего стола с контекстом