Форум сайта python.su
Здравствуйте! Есть образец заявления на отпуск, к нему прилагаются не очень опытные сотрудники которые не могут заполнить заявление без ошибок ( забыли поменять дату, фамилию и т.п.) , так же есть проблемы с форматированием документа. Нужна какая то форма в которая просит ввести нужные данные , и которую заполняет сотрудник, нажимает создать, создаётся правильно оформленное заявление, с правильно подобранным форматированием в зависимости от длинны текста. Есть ли где то уроки по созданию подобных форм?
Офлайн
sof07Я бы сказал по другому. Есть сотрудники занятые полезным делом и которые в гробу видали вашу бесполезную бумажку “заявление на отпуск”, которую при правильно поставленном делопроизводстве вы можете получить имея только дату начала отпуска, проставленную пользователем.
Есть образец заявления на отпуск, к нему прилагаются не очень опытные сотрудники
Офлайн
Есть ещё LibreOffice Writer, в котором макросы можно делать не только на диалекте Basic'а, но и на Python, и на JavaScript.
Да и Microsoft Word обладает возможностью создавать не просто макросы, а макросы с формами ввода. Но проблема таких макросов в том, что их потом негде больше использовать и подключить к ним существующие программы тоже нереально. То есть Visual Basic в Word'е просто изолирован от мира других программ.
Согласен с doza_and по поводу создания pdf-файла - это самый главный формат сейчас для документов. Он не привязан к каким-то определённым системам типа Windows и программам типа Microsoft Word. Да и в вебе сейчас для просмотра pdf можно использовать облачные сервисы. На Яндекс-диск, облако Mail.ru или Google Drive кладёшь его и его можно читать прямо в браузере, скачивать.
Тут просто встаёт вопрос: зачем тебе вообще бумажки в организации, если всё можно хранить в виде pdf-файлов, подписанных электронной подписью?
Возвращаясь к реалиям, тут нужно генерировать документ по шаблону на основе введённых данных. Ну для начала нужно просто ввести данные как-то и сохранить их. Дальше эти данные уже используются для формирования документа. Представим, что таких человек 1000, они ввели свои данные и данные лежат в csv-файле. Что дальше? Не будешь же руками обрабатывать каждого? Нужно этот файл передать в программу, которая возьмёт каждую запись из файла и превратит её в документ, готовый для печати. Можно их использовать и для формирования .doc, и для формирования .pdf, и для формирования .xls. Можно их использовать разнопланово.
Отредактировано py.user.next (Апрель 18, 2019 00:22:06)
Офлайн
doza_andДа я сам видал в гробу эту бесполезную бумажку, хочу облегчить труд себе и своим коллегам которым мозг имеет руководство. За наводку спасибо!
Офлайн
py.user.nextУ нас все чуть по другому, по этому и требования такие, доступ к интернету отсутствует, заявления подаются в письменном виде с кучами подписей вышестоящих должностных лиц. Заявления печатаются собственноручно по образцу , образец некоторые умудряются испоганить, в некоторых случаях меняется должностное лицо, допустим в шапке начальник, или временно исполняющий обязанности начальника, соответственно из за этого догумент сползает вниз, его нужно дополнительно форматировать и подгонять
Есть ещё LibreOffice Writer, в котором макросы можно делать не только на диалекте Basic'а, но и на Python, и на JavaScript.Да и Microsoft Word обладает возможностью создавать не просто макросы, а макросы с формами ввода. Но проблема таких макросов в том, что их потом негде больше использовать и подключить к ним существующие программы тоже нереально. То есть Visual Basic в Word'е просто изолирован от мира других программ.Согласен с doza_and по поводу создания pdf-файла - это самый главный формат сейчас для документов. Он не привязан к каким-то определённым системам типа Windows и программам типа Microsoft Word. Да и в вебе сейчас для просмотра pdf можно использовать облачные сервисы. На Яндекс-диск, облако Mail.ru или Google Drive кладёшь его и его можно читать прямо в браузере, скачивать.Тут просто встаёт вопрос: зачем тебе вообще бумажки в организации, если всё можно хранить в виде pdf-файлов, подписанных электронной подписью? Возвращаясь к реалиям, тут нужно генерировать документ по шаблону на основе введённых данных. Ну для начала нужно просто ввести данные как-то и сохранить их. Дальше эти данные уже используются для формирования документа. Представим, что таких человек 1000, они ввели свои данные и данные лежат в csv-файле. Что дальше? Не будешь же руками обрабатывать каждого? Нужно этот файл передать в программу, которая возьмёт каждую запись из файла и превратит её в документ, готовый для печати. Можно их использовать и для формирования .doc, и для формирования .pdf, и для формирования .xls. Можно их использовать разнопланово.
Офлайн
py.user.nextУ нас все чуть по другому, по этому и требования такие, доступ к интернету отсутствует, заявления подаются в письменном виде с кучами подписей вышестоящих должностных лиц. Заявления печатаются собственноручно по образцу , образец некоторые умудряются испоганить, в некоторых случаях меняется должностное лицо, допустим в шапке начальник, или временно исполняющий обязанности начальника, соответственно из за этого догумент сползает вниз, его нужно дополнительно форматировать и подгонять
Есть ещё LibreOffice Writer, в котором макросы можно делать не только на диалекте Basic'а, но и на Python, и на JavaScript.Да и Microsoft Word обладает возможностью создавать не просто макросы, а макросы с формами ввода. Но проблема таких макросов в том, что их потом негде больше использовать и подключить к ним существующие программы тоже нереально. То есть Visual Basic в Word'е просто изолирован от мира других программ.Согласен с doza_and по поводу создания pdf-файла - это самый главный формат сейчас для документов. Он не привязан к каким-то определённым системам типа Windows и программам типа Microsoft Word. Да и в вебе сейчас для просмотра pdf можно использовать облачные сервисы. На Яндекс-диск, облако Mail.ru или Google Drive кладёшь его и его можно читать прямо в браузере, скачивать.Тут просто встаёт вопрос: зачем тебе вообще бумажки в организации, если всё можно хранить в виде pdf-файлов, подписанных электронной подписью? Возвращаясь к реалиям, тут нужно генерировать документ по шаблону на основе введённых данных. Ну для начала нужно просто ввести данные как-то и сохранить их. Дальше эти данные уже используются для формирования документа. Представим, что таких человек 1000, они ввели свои данные и данные лежат в csv-файле. Что дальше? Не будешь же руками обрабатывать каждого? Нужно этот файл передать в программу, которая возьмёт каждую запись из файла и превратит её в документ, готовый для печати. Можно их использовать и для формирования .doc, и для формирования .pdf, и для формирования .xls. Можно их использовать разнопланово.
doza_and
doza_andА можно в качестве образца файл пдф, что бы посмотреть как все это работает?
Офлайн
Не как продукт, а как иллюстрация
import yaml import datetime import subprocess as sp import sys name = "Карпов" beg = datetime.datetime.now().date() olen = 4 if not type(olen) is int: print("olen must be int") sys.exit(-1) if not olen<=0: print("olen must be positive") sys.exit(-1) db_str = """ name: отдел снабжения leader : fio : Ленин Владимир Ильич position : начальник департамента pers: - fioI : Иванов Иван Иванович fio : Иванова Ивана Ивановича position : ведущий инженер - fioI : Петров Петр Петрович fio : Петрова Петра Петровича position : инженер --- name: отдел потребления leader : fio : Медведев В. В. position : начальник департамента pers: - fioI : Карасев Аркадий Аркадьевич fio : Карасева Аркадия Аркадьевича position : ведущий инженер - fioI : Карпов Борис Борисович fio : Карпова Бориса Борисовича position : инженер """ db = list(yaml.load_all(db_str)) found = False for dep in db: for pers in dep["pers"]: if pers["fioI"].startswith(name): found = True break if not found: print("name not found") sys.exit(-1) now = str(datetime.datetime.now().date()) t0 = str(beg) t1 = str(beg + datetime.timedelta(days=olen)) npos = dep["leader"]["position"] nachalnik = dep["leader"]["fio"] fio = pers["fio"] fioI = pers["fioI"] pos = pers["position"] text = fr""" \documentclass[12pt,a4paper]{{article}} \usepackage{{cmap}} \usepackage[T2C]{{fontenc}} \usepackage[utf8]{{inputenc}} \usepackage[english,russian]{{babel}} \usepackage{{a4wide}} \begin{{document}} \hfill \begin{{minipage}}[t]{{0.4\textwidth}} {npos} ООО <<Рассвет>> {nachalnik} от {pos} {fio} \end{{minipage}} \vspace{{2.5cm}} \begin{{center}} \Large Заявление \end{{center}} Прошу предоставить мне ежегодный оплачиваемый отпуск продолжительностью {olen} календарных дней в период с {t0} по {t1} г. \vspace{{1cm}} \hfill \hbox to 0.3\textwidth {{\hrulefill {fioI} }} \hfill {now} \end{{document}}""" with open("a.tex","w",encoding="utf-8") as f: f.write(text) sp.run("pdflatex a.tex")
Прикреплённый файлы:
a.pdf (21,7 KБ)
Офлайн