Общие поля свойтва пользователя для документов

Автор as1234, 14 апреля 2012, 23:16

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

as1234

Вообще ничего так и не могу разобраться , не тот уровень наверно )))
Подумал о том что может можно сделать общую переменную или общее поле для всех этих документов ?

JohnSUN

Знаешь, у программистов есть такой прием: если долго бодаешься с каким-то фрагментом задачи (программы), который ну никак не хочет работать как задумывалось, нужно кому-нибудь подробно рассказать, что именно задумывалось, как ты это сделал и что получается не правильно... Причем слушатель совсем не обязательно должен быть программистом. Приблизительно в 20% случаев слушатель тычет пальцем в явную ошибку, которую ты просто не заметил. В остальных 4/5 случаев вдруг сам понимаешь, где нахомутал...

Не хочешь подробно, как для совсем неграмотных, рассказать как ставится задача, что за документы создаются, как с ними будут поступать после создания, что у них общее и чем отличаются, сколько разных людей с ними работают, и т.д., и т.п.?..
А то ведь больше месяца возишься с проблемой, а она всё ещё не решена.
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

as1234

#17
Суть облегчить работу , при помощи автоматизации документов . В данном случае заполнения проектов , чтоб как говорят "ручками не забивать" . Суть в принципе такова , что есть основной файл в нем содержиться информация (Допустим код , название , и многое прочих) и нужно сделать так чтобы этаже информация появилась в нужных местах другого документа (в полях) . Я подумал этом можно сдлеать обьединив  свойства пользолвателя в общие для двух документов . Тоесть открывая шаблон с теми же свойствами задать им значения что и в основном файле . Почему именно свойства пользователя , наверно потому что у них при надобности легче всего редактировать значение и они есть в каждом документе  . Незнаю понятно или нет  :-[

Открываем документ , в нем задана информация , из него с помощью макроса запускаем шаблон нужного нам проекта , и нужно так чтобы поля заполнились информацией именно для этого проекта

JohnSUN

О, проясняется дело... А давай еще чуток подробнее, а?
Цитата: as1234 от 17 мая 2012, 19:02Суть облегчить работу , при помощи автоматизации документов
Это типа эпиграфа?  ;D Вступительная часть, для разгону  :)
Цитата: as1234 от 17 мая 2012, 19:02В данном случае заполнения проектов , чтоб как говорят "ручками не забивать" .
Что за проекты? Это пачка документов или цепочка? В смысле, вбиваем куда-то данные и получаем фиксированный набор документов, всегда один и тот же? Или создаем основной документ (договор, что ли?), в нем заполняем набор полей... Приходит время создания очередного документа в проекте - дергаем шаблон, создается новый документ (например, смета), макрос спрашивает "На основании какого договора?", указываем документ-основание, макрос всасывает имеющиеся поля и их значения, отыскивает в текущем (новом) документе такие же поля и по имени заполняет их родительскими значениями... Если находит еще какие-то поля, для которых нет аналогичных в документе-основании, пристает с вопросами "Введите то-то..." пока не заполнит их все. Документ готов, сохраняется. Следующий шаблон запросит документ-основание - укажем или договор или смету, макрос по той же схеме обработает поля очередного документа...
Цитата: as1234 от 17 мая 2012, 19:02Суть в принципе такова , что есть основной файл в нем содержиться информация (Допустим код , название , и многое прочих) и нужно сделать так чтобы этаже информация появилась в нужных местах другого документа (в полях) . Я подумал этом можно сделать объединив  свойства пользователя в общие для двух документов.
Но объединять оба документа в один просто не хочется? Или почему не понравился вариант, когда все-все по проекту собрано в одном файле?
Цитата: as1234 от 17 мая 2012, 19:02Почему именно свойства пользователя , наверно потому что у них при надобности легче всего редактировать значение и они есть в каждом документе.
Ну, это не единственные элементы, которые есть в каждом документе  ;)
Цитата: as1234 от 17 мая 2012, 19:02Незнаю понятно или нет  :-[
Открываем документ , в нем задана информация , из него с помощью макроса запускаем шаблон нужного нам проекта , и нужно так чтобы поля заполнились информацией именно для этого проекта
Бр-р-р... Только-только показалось, что понятно... И тут же опять - упс!.. Проект - это что?
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

as1234

"Вступительная часть, для разгону " а то  ;D


Точнее это части проекта (П.с -сорри  :'( )  , пояснительная записка , спецификация, смета, это и чертежи с рамками в которых тоже присутствуют поля . Первый документ всегда один и тот же . "в нем заполняем набор полей" нужной информацией и от туда впринципе будет браться информация для запускаемого шаблона .

Цитата: JohnSUN от 17 мая 2012, 20:13Приходит время создания очередного документа в проекте - дергаем шаблон, создается новый документ (например, смета), макрос спрашивает "На основании какого договора?", указываем документ-основание, макрос всасывает имеющиеся поля и их значения, отыскивает в текущем (новом) документе такие же поля и по имени заполняет их родительскими значениями... Если находит еще какие-то поля, для которых нет аналогичных в документе-основании, пристает с вопросами "Введите то-то..." пока не заполнит их все. Документ готов, сохраняется. Следующий шаблон запросит документ-основание - укажем или договор или смету, макрос по той же схеме обработает поля очередного документа...

Вот это то что нужно !!!Но для каждой части будет свой шаблон , скажем для сметы свой для пояснительной записки свой .  "всасывает поля и их значения " по сути должно  происходить из первого (основного документа , где все эти поля забиты )
Задача пока поставлена чтоб все части проекта заполнялись по отдельности , потому что в проект не всегда входят те или инные его части )) а там уже из обработанных частей , можно слепить в один

Воооот  :-[

JohnSUN

Всё чудесатее и чудесатее!
То есть, головной документ проекта хранит все нужные данные... Давай ему имя какое-то дадим, а? Ну чтобы в дальнейшем разговоре этим погонялом пользоваться. "Макет"? "Печка"? "Словарь"?

В общем, задача сводится к созданию пакета шаблонов, каждый из которых представляет собой один (или несколько однотипных) документ в проекте.
Тут вопрос о информации в Словаре. Если что-то изменят в словаре (ну, ачепятку поздно заметили или еще что-то в этом роде), то изменения должны разползтись по всем дочерним документам... А если какой-то недалёкий сотрудник поправит такое поле в дочернем документе? Прибить гада?
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

as1234

пусть будет "словарь" =)

Цитата: JohnSUN от 17 мая 2012, 21:44Всё чудесатее и чудесатее!
с этим не поспоришь конечно  ;D

Изменения (ачепятка)по сути же будут только при создании новых документов , разве нет ? А те которые будут уже до этого созданы (неважно правильно или нет ) уже не должны быть затронуты . Поле будет поправленно уже в готовом документе , поэтому я думаю это не архи страшно , потому как его можно пересоздать , так как в самом шаблоне они врятле что смогут поменять , либо сверх "везучий" сотрудник )))

JohnSUN

Отлично!
То есть мы приходим к выводу, что в в готовом документе нам ПОЛЯ не нужны. Нужно в заранее определенные места шаблона вписать значения. Поле - не единственный способ это сделать.

Цитата: as1234 от 17 мая 2012, 23:09Изменения (ачепятка)по сути же будут только при создании новых документов , разве нет ?
Мы говорим об опечатке в Словаре? При заполнении полей Словаря какой-то из элементов записывается с ошибкой, затем создается несколько документов с этими данными... В какой-то момент ошибку замечают. Что должно произойти дальше? Наша песня хороша - начинай сначала?
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

as1234

Приходим , если поле это не единственный способ =)

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

JohnSUN

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

as1234

Цитата: JohnSUN от 17 мая 2012, 22:20Наша песня хороша - начинай сначала?
получаеться так , иного быстрого способа исправить не вижу .
Цитата: JohnSUN от 17 мая 2012, 22:20Нужно в заранее определенные места шаблона вписать значения. Поле - не единственный способ это сделат
Приходим , если поле это не единственный способ =) вот только как это все делаеться без полей ?

JohnSUN

Да погоди ты расстраиваться!

Если бы документы, рожденные из шаблонов в рамках проекта были фиксированными... Ну, в смысле, текст один и тот же. Типа "Уважаем<Пол_Клиента> <Имя_Клиента> <Отчество_Клиента>! С <Эмоция> сообщаем Вам, что в ближайшее время <Состояние_проекта>. Но Вы должны перечислить нам <Сумма_очередного_взноса> до <Дата_очередного_взноса>. С уважением <ФИО_Руководителя_проекта>".
И в зависимости от содержимого каких-то там полей пачками штампуются письма:
"Уважаемый Василий Пупкин! С глубоким прискорбием сообщаем Вам, что в ближайшее время ничего не будет сделано. Но Вы должны перечислить нам 250 руб. до 31.05.2012. С уважением начальник отдела снабжения Петров И.К.".
"Уважаемая Анна Геннадиевна! С радостью сообщаем Вам, что в ближайшее время Ваш заказ будет выполнен. Но Вы должны перечислить нам 15000 руб до 01.02.2012. С уважением финансовый директор Крохоборов Е.Д.".

Я имею в виду, что такие писульки генерируются только для того, чтобы распечатать, подписать, отправить и забыть. Их даже хранить не обязательно, поскольку можно пересоздать в любой момент точно в таком же виде.

Но ты упомянул чертежи, пояснительные записки... Для таких документов из шаблонов создается только болванка, остальное содержимое вносится руками. При этом ты хочешь облегчить задачу пользователям и взвалить обязанности по внесению некоторых значений документа на компьютер... Точнее - на себя, поскольку без твоих стараний писишка ничего не сделает...
И вот тут я, похоже, тебя огорчу... Реализовать такую штуку можно. Это довольно трудоёмкая задача, хотя и решаемая. Но в рамках одного только офисного пакета такая система может работать только для небольшой группы людей, два-три человека, каждый из которых делает только свой кусок работы, свой набор документов и не лезет в файлы соседа. Если рабочая группа больше, то придется вводить системы хранения, управления версиями, разделения полномочий... Иначе порядка в ней никогда не будет.
Ты просмотри на досуге статьи в Википедии. Начни, например, с "Система автоматизации документооборота", а дальше по ссылкам пройдись по "Система управления документами", "Система управления содержимым" и т.д.
Вот теперь можешь расстраиваться... Хотя тоже не обязательно. Мы же пока обсуждаем, а не лепим решение с бухты-барахты! Глядишь и придумаем чего-то умного...
Цитата: as1234 от 17 мая 2012, 23:59вот только как это все делаеться без полей ?
Ну, кроме полей можно использовать тэги в тексте (как в моем примере типового письма), которые подменяются на нужный текст обычным поиском/заменой. Можно вспомнить про механизм Закладок (Bookmark) - вставка текста в закладки у Питоньяка подробно расписана, просто берешь готовый листинг 5.40: Insert text at a bookmark и пользуешься. Там всего-то две строчки кода.
Есть еще такая фишка, как связь по DDE. В принципе, это что-то среднее между полями, о которых ты говорил с самого начала, и закладками. В Справочнике все нужные куски помечаются закладками, а в подчиненном шаблоне в нужных местах вставляются поля DDE, которые отображают эти данные. В чем отличие от полей, о которых ты говорил с самого начала? Связь DDE можно разорвать в любой момент и поле заменится на обычный текст, документ больше не будет привязан к Словарю. Такой документ даже можно отправлять клиенту, он не увидит всей внутренней кухни, как это было бы в случае полей пользователя...
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

as1234

#27
Цитата: JohnSUN от 18 мая 2012, 09:41Есть еще такая фишка, как связь по DDE. В принципе, это что-то среднее между полями, о которых ты говорил с самого начала, и закладками. В Справочнике все нужные куски помечаются закладками, а в подчиненном шаблоне в нужных местах вставляются поля DDE, которые отображают эти данные. В чем отличие от полей, о которых ты говорил с самого начала? Связь DDE можно разорвать в любой момент и поле заменится на обычный текст, документ больше не будет привязан к Словарю

C этого места можно поподробней ? Я видел что можно создать поле DEE , но как им пользоватьс понятия не имею и информации про него КРАЙНЕ мало =)
Справочнике?Эмм в словаре всмысле?

worktowork

#28
По-моему хочет соединить базу данных с электронной таблицей , draw и writer . Затем красиво оформленный вывод на печать. В принципе то , что as1234 возможно.Для начала в Draw или на бумаге надо написать (начертить) схему что с чем будет связано , какой поиск будет производиться , будет ли математический расчёт - должно быть максимально подробно описано с чем будете работать и дальнейшие действия.
OC Altlinux WMdesktop+Libreoffice 3.6.5.2

as1234

#29
Кое-что отыскал  >:D

Sub GetDocumentProperties
  Dim oProps
  Dim oDocProps
  Dim s$
  Dim i As Integer
  Dim prop
  oDocProps = ThisComponent.getDocumentProperties()
  s = s & "Author = " & oDocProps.Author & CHR$(10) & _
      "AutoLoadSecs = " & oDocProps.AutoloadSecs & CHR$(10) & _
      "AutoLoadURL = " & oDocProps.AutoloadURL & CHR$(10) & _
      "CreationDate = " & DateSTructToString(oDocProps.CreationDate) & _
      CHR$(10) & _
      "Default Target = " & oDocProps.DefaultTarget & CHR$(10) & _
      "Description = " & oDocProps.Description & CHR$(10) & _
      "EditingCycles = " & oDocProps.EditingCycles & CHR$(10) & _
      "EditingDuration = " & oDocProps.EditingDuration & CHR$(10) & _
      "Generator = " & oDocProps.Generator & CHR$(10) & _
      "Language = (" & oDocProps.Language.Country & ", " & _
      oDocProps.Language.Language & ", " & _
      oDocProps.Language.Variant & ")" & CHR$(10) & _
      "ModificationDate = " & _
      DateSTructToString(oDocProps.ModificationDate) & CHR$(10) & _
      "ModifiedBy = " & oDocProps.ModifiedBy & CHR$(10) & _
      "PrintDate = " & DateSTructToString(oDocProps.PrintDate) & _
      CHR$(10) & _
      "PrintedBy = " & oDocProps.PrintedBy & CHR$(10) & _
      "Subject = " & oDocProps.Subject & CHR$(10) & _
      "TemplateDate = " & _
      DateSTructToString(oDocProps.TemplateDate) & CHR$(10) & _
      "TemplateName" & oDocProps.TemplateName & CHR$(10) & _
      "TemplateURL" & oDocProps.TemplateURL & CHR$(10) & _
      "Title = " & oDocProps.Title & CHR$(10) & _
      ""
  oProps = oDocProps.UserDefinedProperties
  s = s & "Info 1 = " & oProps.[Info 1] & CHR$(10) & _
          "Info 2 = " & oProps.[Info 2] & CHR$(10) & _
          "Info 3 = " & oProps.[Info 3] & CHR$(10) & _
          "Info 4 = " & oProps.[Info 4]
  MsgBox s
  If LBound(oDocProps.Keywords) <= UBound(oDocProps.Keywords) Then
    MsgBox Join(oDocProps.Keywords, CHR$(10)),,"Keywords"
  End If
  s = ""
  Dim oStats : oStats = oDocProps.DocumentStatistics
  For i = LBound(oStats) To UBound(oStats)
    s = s & oStats(i).Name & " = " & oStats(i).Value & CHR$(10)
  Next
  MsgBox s
End Sub

Function DateSTructToString(ostruct) As String
  DateSTructToString() = ostruct.Month & "/" & _
     ostruct.Day & "/" & ostruct.Year & " at " & _
     ostruct.Hours & ":" & ostruct.Minutes & ":" & _
     ostruct.Seconds & "." & ostruct.HundredthSeconds
End Function


К макросу прилагалась записка - Вы должны получить свойства документа, как показано в макросе выше в обеих документах, а затем присвоить значения от одного к другому


Пробую , но выскакивают ошибки , помогите разобраться , толи это вообще что нужно ? =)))