Проэктирование базы

Тема в разделе "Lotus - Программирование", создана пользователем Hedg, 27 апр 2006.

  1. Hedg

    Hedg Гость

    Обращаюсь ко Всем кто имеет опыт создания документооборота на Lotus.

    Потребовалось создать систему документооборота, но Lotus я только начал изучать. Пожалуйста расскажите как спроектировать базу.
    Документы должны циркулировать между различными подразделения, начальники подразделений и начальник фирмы должны иметь доступ к документу постоянно, на всех стадиях выполнения. Текущий бумажный документооборот приблизительно 20 документов в неделю, но фирма расширяется и эта цифра увеличивается.
    На всё это мне дали срок 1 месяц, т.е. 1 июля я должен показать что система функционирует.
    Буду рад любым советам.
    Если есть примеры, буду благодарен если поделитесь.
    Мой e-mail hedg_u4@ukr.net
     
  2. Гость

    Врятли месяц - это реальный срок, хотя смотря что и как хотят сделать в базе.
    Расскажи подробней о задаче. Какие документы, куда, как двигаются. Какие условия скрытия существуют, какие действия нужно с документами производить. Согласовывать? Создавать архивы? Использовать для чего-то?

    Думаю начинать проектировку нужно именно с этого - ознакомления с конкретной задачей. :angry:
     
  3. Domino6

    Domino6 Гость

    За 1 месяц не реально.

    Либо это будет просто база типа "Библиотека документов"

    P.S. "Даже если собрать 9 беременных женщин, за 1 месяц не родят"
     
  4. Hedg

    Hedg Гость

    Мне не нужно вводить сразу все виды документов, для начала мне нужно ввести всего 2 типа документов. Просто со временем, если конечно будет удачная реализация, все документы будут переведены с бумаги на Лотус.
    А хочется создать базу с прицелом на будущее, чтобы по 20 раз не переделывать.

    Документ на закупку чего-либо
    Создаётся сотрудником любого отдела.
    Документы направляется сначала начальнику отдела, тот его пересылает начальнику фирмы на одобрение/отклонение. Если документ одобрен, то отсылается в бухгалтерию, на выделение средств, потом он отправляется к завхозу, после того как там всё сделали, отправляется в архив.
    Начальник фирмы и начальник отдела должны видеть что документ изменяется, документ собой представляет(на бумаге) набор пунктов, где ставиться отметка если данный пункт выполнен.

    Документ должен быть виден только сотруднику который его создал, начальнику отдела, начальнику фирмы, бухгалтеру, завхозу. Некоторые поля должны быть не виды определенным людям,(на сколько я понял это решается с помощью шифрования , но был бы рад если бы кто показал на примере)
     
  5. Гость

    Моменты, которые нужно уточнить:
    1. будет ли путь согласования менятся, ветвится, нужны ли возвраты и на какие статусы, нужны ли предупреждения для забывчивых руководителей. Если путь согласования сложный (а так бывает чаще всего), то нужно создать настоечный документ по каждому типу согласования или форме.
    2. кто и на каких статусах что должен видеть. Разграничение прав можно сделать по ролям/должностям.
    3. определить какие нужны справочники. Например явно нужен справочник сотрудников/должностей, справочник отделов.
    4. какие должны быть отчеты, выборки?

    Вот тут есть кое-какие базы бесплатные - http://www.openntf.org
     
  6. Hedg

    Hedg Гость

    За ссылку спасибо.
    1. Путь согласования не будет меняться. Должен быть выставлен срок на выполнение , по истечении которого уведомляется начальник отдела.
    Что такое - "настоечный документ по каждому типу согласования или форме"

    2. Начальник Фирмы и начальник отдела должны видеть весь документ, а все остальные только те части которые качаются их.

    3.Нужен справочник отделов, сотрудников/должностей

    4. Отчёты должны содержать заголовок документа, дату выполнения и имя сотрудника который что-то там делал.
     
  7. Гость

    1. Документ, где указывается название и номер статуса, ФИО (или роли/должности) тех, кто согласует документ, условия при которых доступен этот этап согласования.
    Пример на картинке.
     

    Вложения:

  8. Гость

    Еще один вариант - сделать форму для выбора согласовательного лица.
    В эту форму отбирать из справочника людей, который имеют определенные роли/должности.
    Удобно тем, что позволяет эти формы использовать для любого количества документов.
    На картинке такой список.
     

    Вложения:

  9. Гость

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

    Вложения:

  10. Гость

    2. Это проще, чем согласование. Сначала надо посчитать много ли таких начальников на фирме. :)
    Если 2-3, то лучше всего завести роль в базе и скрывать части документа, если в Hide поля или раздела
    !@Contains(@UserRoles;"[Boss]")
    Если больше, то стоит завести поле в котором будет выясняться все роли в справочнике сотрудников для текущего юзера и опять же тем же принципом проверяться скрытие/открытие поля или раздела.

    4. Тоесть фактически нужно печатать документ?
    Это можно сделать стандартными средствами.
     
  11. Hedg

    Hedg Гость

    Большое спасибо за примеры.
    Меня ещё интересует один вопрос, как и где, хранить документы.
    И можно ли сделать ссылку на документ и рассылать её необходимым лицам?
     
  12. Гость

    Хранить документы в базе.
    Если доков будет очень много, можно создать базе-архив (на каждый год), куда перекидывать устаревшие документы.
    Ссылку пересылать можно. вот пример на LS для согласования (второй вариант).

    Код (Text):
    .... (объявление переменных) ....

    formula={Form = "Permission" & Rule="Руководитель" & PKod= "} + Cstr(uidoc.FieldGetText("RKod")) + {" & Visible!="0"}  
    Set collection = db.Search(formula, Nothing,0)
    If collection.Count = 0 Then
    Msgbox "В справочнике не найдены соответствующие Руководители !", 32, "Внимание!"
    Exit Sub
    End If
    doc.BossList=""
    Set wdoc = collection.GetFirstDocument
    While Not wdoc Is Nothing
    n=Evaluate({Field BossList:=@Unique(@Trim(BossList:'} & wdoc.PersonFullName(0) & {'));@Success},doc)
    Set wdoc = collection.GetNextDocument(wdoc)
    Wend

    If Not workspace.DialogBox( "SelectBoss", True, True, True , False, False, False, "Отправка на согласование руководителем", doc , False, True) Then Exit Sub
    doc.Status = "1"
    doc.StatusWho = doc.BossName(0)
    doc.OwOKDate =Date+Time

    'История
    n = Evaluate({Field HistoryWhen:=@Now;@Success},doc)
    n = Evaluate({Field HistoryWho:=@Name([CN];@UserName);@Success},doc)
    n = Evaluate({Field HistoryAction:="Отправлен на согласование руководителю";@Success},doc)
    n = Evaluate({Field History:=History:(@Text(HistoryWhen) + " " + HistoryWho + ": "+HistoryAction);@Success},doc)   
    'Уведомление руководителю
    Set mdoc = db.CreateDocument   
    mdoc.Form = "Memo"
    mdoc.SendTo = doc.BossNotesName(0) 
    mdoc.Subject = "Уведомление о согласовании заявки"
    Set rtitem = New NotesRichTextItem( mdoc, "Body" )
    Call rtitem.AppendText("Требуется согласование заявки в")
    Call rtitem.AddNewLine(2)  
    Call rtitem.AppendText("Ссылка на документ -> ")
    Call rtitem.AppendDocLink( doc, "документ" )   
    Call mdoc.Send(False)
    'Сохраняем и закрываем
    Call uidoc.Save
    Call uidoc.Close
     
  13. Hedg

    Hedg Гость

    Благодарю за пример.

    Как создать эту самую ссылку?
    Ещё вопрос, как размещать документы, чтобы остальные сотрудники или отделы не видели документов, которые их не касаются?
     
  14. Гость

    В примере есть линк на документ -
    Call rtitem.AppendDocLink( doc, "документ" )

    Можно сделать вид в котором первый столбец катигоризировать по ФИО сотрудников.
    С примерно такой формулой отбора:

    Код (Text):
    @Trim(OwnerNotesName:
    @If(
    Status="0";OwnerNotesName;
    Status="1";BossNotesName;
    Status="2";Boss2NotesName;
    OwnerNotesName))
    Тоесть на статусе 0 видит только создатель дока, на 1-ом статусе - босс и создатель, на 2-ом босс2 и создатель и т.д.

    Потом сделать форму со встоенным видом и в Show single categiry записать формулу отбора @UserName.

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

    Domino6 Гость

    <!--QuoteBegin-Юлия+28:04:2006, 14:20 -->
    <span class="vbquote">(Юлия @ 28:04:2006, 14:20 )</span><!--QuoteEBegin-->Тоесть на статусе 0 видит только создатель дока, на 1-ом статусе - босс и создатель, на 2-ом босс2 и создатель и т.д.

    Потом сделать форму со встоенным видом и в Show single categiry записать формулу отбора @UserName.

    Тогда в представлении будут показываться только документы тем юзерам, которые или сами создали документ или должны его сейчас согласовывать.
    [snapback]34591" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    А поля Ридер начто? Тоже самое только вычисление в поле ридер
     
  16. Hedg

    Hedg Гость

    Спасибо всем кто ответил. Вопросы с проэктированием отпали. Теперь буду потихоньку реализовывать всё что на думал.
     
  17. Hedg

    Hedg Гость

    Вопрос по сокрытию частей документа.
    Как сделать чтобы скрытые части могли быть видны нескольким ролям? Например Босу и Админу.
     
  18. Гость

    Поставить соотвествующе условие скрытия на поле (Field) или на раздел (Section). Это закладка Paragraph Hide When.
    Если роль [Admin], то формула будет выглядеть примерно так:
    !@Contains(@UserRoles;"[Admin]")

    Если раздел должен быть виден еще и юзеру с ролью [Boss], то формула скрытия будет такая:
    !@Contains(@UserRoles;"[Admin]") & !@Contains(@UserRoles;"[Boss]")
     
  19. Hedg

    Hedg Гость

    <!--QuoteBegin-Юлия+5:05:2006, 13:23 -->
    <span class="vbquote">(Юлия @ 5:05:2006, 13:23 )</span><!--QuoteEBegin-->Если раздел должен быть виден еще и юзеру с ролью [Boss], то формула скрытия будет такая:
    !@Contains(@UserRoles;"[Admin]") & !@Contains(@UserRoles;"[Boss]")
    [snapback]35047" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    Не работает. Невиден ни тому и другому
     
  20. Гость

    А какое полное название роли?
    Выведи в отдельное поле значение @UserRoles.
    Попробуй сначала сделать скрытие по отдельности, а потом совместить.

    @UserRoles - это список. Подходит не только !@Contains, но и @IsNotMember.
     
Загрузка...

Поделиться этой страницей