Что можно придумать?

Тема в разделе "Lotus - Программирование", создана пользователем -, 17 июн 2005.

  1. Гость

    У меня есть форма, которая формирует выборку (в личные папки) запрошенных документов (см. рис).
    Все верхние поля заполняются списком, а вот последние три...
    ЦФО заполняется в соотвествии с разрешениями сотрудника (есть такая форма учетная запись и формы разрешений).

    Код (Text):
    Kod:=@Trim(@Explode(Razr_Sotr;";"));
    @If(@IsError(Kod);"";"ВСЕ":Kod)
    ЦФУ любая.
    Сотрудник - все сотрудники, которые имеют возможность создавать бюджеты, для выбранных/ой в ЦФО служб/ы.
    В этом поле просто страшный код на формулах:

    Код (Text):
    @If(!@IsNull(SRazr_CFO);
    @Do(
    @If(@IsMember("ВСЕ";SRazr_CFO);list:=@Trim(@Explode(Razr_Sotr;";"));list:=SRazr_CFO);

    list2 := @Unique(@DbLookup("":"NoCache";"":"";"(PermissionNaz)";"ОБЩИЕ РАСХОДЫ / ДОХОДЫ";2));
    @If(@IsError(list2);"";@If(@IsMember("ОБЩИЕ РАСХОДЫ / ДОХОДЫ";list);Kod:= Kod:@Unique(@DbLookup("":"NoCache";"":"";"(PermissionNaz)";"ОБЩИЕ РАСХОДЫ / ДОХОДЫ";2));""));
    list2 := @Unique(@DbLookup("":"NoCache";"":"";"(PermissionNaz)";"КОММЕРЧЕСКАЯ СЛУЖБА ПО ОКАЗАНИЮ ФОТОУСЛУГ И ТОРГОВЛИ ФОТОТОВАРАМИ";2));
    @If(@IsError(list2);"";@If(@IsMember("КОММЕРЧЕСКАЯ СЛУЖБА ПО ОКАЗАНИЮ ФОТОУСЛУГ И ТОРГОВЛИ ФОТОТОВАРАМИ";list);Kod:= Kod:@Unique(@DbLookup("":"NoCache";"":"";"(PermissionNaz)";"КОММЕРЧЕСКАЯ СЛУЖБА ПО ОКАЗАНИЮ ФОТОУСЛУГ И ТОРГОВЛИ ФОТОТОВАРАМИ";2));""));
    list2 := @Unique(@DbLookup("":"NoCache";"":"";"(PermissionNaz)";"АДМИНИСТРАТИВНАЯ СЛУЖБА";2));

    .... и тд

    @If(@IsError(Kod);"";"ВСЕ":@Sort(@Unique(Kod)))
    );"")
    Что делать? Как можно корректно переписать этот код, чтобы в зависимости от текущего количества служб он нормально отрабатывал?
     

    Вложения:

  2. Domino6

    Domino6 Гость

    А что в кнопке "Выбрать документы"
     
  3. Гость

    Такой код:

    Код (Text):
    Sub Click(Source As Button)
    Set ws=New NotesUiWorkSpace
    Set session=New NotesSession

    Dim db As NotesDatabase
    Dim doc As NotesDocument
    Dim coll As NotesDocumentCollection
    Dim view As NotesView
    Dim dateTime As NotesDateTime
    Dim uidoc As NotesUIDocument

    Set db=session.CurrentDataBase
    Set DialogDoc = New NotesDocument (db)
    Set uidoc = ws.CurrentDocument
    Set doc = uidoc.Document

    On Error Goto Errhandle

    Set view = db.GetView("Мною исполняемые")
    Set vc = view.AllEntries
    Call vc.RemoveAllFromFolder("Движение ДС")
    'Call vc.RemoveAllFromFolder("Отчет - ДС")  

    Dim SRazr_CFO As Variant
    Dim SRazr_CFU As Variant
    Dim SRazr_FIO As Variant
    Dim SStat As Variant
    Dim SCur As Variant
    Dim FSYear, FSMonth As Variant
    Dim list_Razr_Sotr As Variant
    SRazr_CFO = doc.GetItemValue("SRazr_CFO")
    SRazr_CFU = doc.GetItemValue("SRazr_CFU")
    SRazr_FIO=doc.GetItemValue("SRazr_FIO")
    SStat = doc.GetItemValue("SStat")
    SCur = doc.GetItemValue("SCur")
    FSYear = uidoc.FieldGetText("FSYear")
    FSMonth = uidoc.FieldGetText("FSMonth")
    Razr_Sotr = doc.GetItemValue("Razr_Sotr")
    list_Razr_Sotr = Split(Razr_Sotr(0), "; ")

    sf= {(FORM = "RequestDoshAdd" | FORM = "RequestRashAdd") & (Visible!="0") }
    If uidoc.FieldGetText("SRazr_CFO") <> "ВСЕ" Then
    sf=sf+"& ("
    Forall x In SRazr_CFO
    If x >< "" Then
     sf=sf+{ Branch = "}+ x +{" | }
    End If
    End Forall
    sf=sf+{ "" ) }
    Else
    sf=sf+"& ("
    Forall x In list_Razr_Sotr
    If x >< "" Then
     sf=sf+{ Branch = "}+ x +{" | }
    End If
    End Forall
    sf=sf+{ "" ) }
    End If

    If uidoc.FieldGetText("SRazr_CFU") <> "ВСЕ" Then
    sf=sf+"& ("
    Forall x In SRazr_CFU
    If x >< "" Then
     sf=sf+{ Branch_CFU = "}+ x +{" | }
    End If
    End Forall
    sf=sf+{ "" ) }
    End If

    If uidoc.FieldGetText("SRazr_FIO") <> "ВСЕ" And uidoc.FieldGetText("SRazr_FIO") <> "" Then
    sf=sf+"& ("
    Forall x In SRazr_FIO
    If x >< "" Then
     sf=sf+{ Owner = "}+ x +{" | }
    End If
    End Forall
    sf=sf+{ "" ) }
    End If

    If uidoc.FieldGetText("SStat") <> "Все" Then
    sf=sf+"& ("
    Forall x In SStat
    If x >< "" Then
     Select Case x
     Case "Составление"       : sf=sf+{ Status = "0" | }
     Case "На согласовании у руководителя"  : sf=sf+{ Status = "1" | }
     Case "На согласовании у сотрудника ФС" : sf=sf+{ Status = "3" | }
     Case "Согласовано"     : sf=sf+{ Status = "4" | }
     Case "Не согласованно"    : sf=sf+{ Status = "5" | }
     Case "На согласовании у сотрудника"   : sf=sf+{ Status = "6" | }
     Case Else        : sf=sf+{ Status = "7" | }
     End Select
    End If
    End Forall
    sf=sf+{ "" ) }
    End If

    st = doc.GetItemValue("FSWeek")
    If st(0) <> "0" Then
    sf=sf+{ & ( FPWeek = "}+ st(0) +{" ) }
    End If

    If uidoc.FieldGetText("SCur") <> "Все" Then
    sf=sf+"& ("
    Forall x In SCur
    If x >< "" Then
     sf=sf+{ Currency = "}+ x +{" | }
    End If
    End Forall
    sf=sf+{ "" ) }
    End If

    If Not Isempty(uidoc.FieldGetText("FSYear")) Then
    sf=sf+{ & ( FPYear = "}+ FSYear +{" ) }
    End If

    If Not Isempty(uidoc.FieldGetText("FSMonth")) Then
    sf=sf+{ & ( FPMonth = "}+ FSMonth +{" ) }
    End If


    'Msgbox sf
    Set coll=db.Search(sf,dateTime,0)
    If coll.Count=0 Then
    Messagebox "Нет документов, удовлетворяющих заданным критериям",64,"Результата поиска"
    Else
    Messagebox "Найдено" + Str(coll.Count) + " документов"
    End If

    Call coll.PutAllInFolder("Движение ДС")  
    Call uidoc.Refresh 

    Exit Sub
    Errhandle:  
    If (Err = 4291) Then
    Msgbox "Личная папка <Движение ДС> не создана. Перейдите, пожалуйста, к ней, для того, чтобы создать папку."
    Exit Sub
    End If
    Messagebox "Error" & Str(Err) & ": " & Error$
    Exit Sub

    End Sub
     
Загрузка...

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