Тема: Контроль сроков исполнения документа
Данный кусок кода показывает, как можно устанавливать сроки исполнения для различных типов документов с учетом, что сроки могут быть указаны в календарных или рабочих днях.
В каждом номенклатурном деле (в моём случае отдельня база номенклатура) есть текстовые поля:
стандартно:SrokIspol срочно:SrokIspol_sr Оперативно: SrokIspol_oper
Так же в определенном настроечном документе есть множественное текстовое поле calendar - в нем список праздников и выходных, формат день.месяц.год (пример 26.04.2014).
Сам лотус скрипт:
' - СРОКИ ИСПОЛНЕНИЯ!
Dim dateTime As New NotesDateTime( "" )
Call dateTime.SetNow
Dim values(2) As Variant
If Cstr(DelDoc.SrokIspol(0)) <>"" Then
days= DelDoc.SrokIspol(0) ' тянем срок исполнения с номенклатуры
daytext$ = " дней"
values(0) = "Стандартный срок исполнения - " +days + daytext$
End If
If Cstr(DelDoc.SrokIspol_sr(0)) <>"" Then
days= DelDoc.SrokIspol_sr(0) ' тянем срок исполнения с номенклатуры
daytext$ = " дней"
If days="1" Then daytext$ = " день"
If (days="2") Or (days="3") Or (days="4") Then daytext$ = " дня"
values(1) = "Срочно - " +days + daytext$
End If
If Cstr(DelDoc.SrokIspol_oper(0)) <>"" Then
days= DelDoc.SrokIspol_oper(0) ' тянем срок исполнения с номенклатуры
daytext$ = " дней"
If days="1" Then daytext$ = " день"
If (days="2") Or (days="3") Or (days="4") Then daytext$ = " дня"
values(2) = "Оперативно - " +days + daytext$
Else
' values(2) = ""
End If
If (values(0)<>"") Or (values(1)<>"") Or (values(2)<>"") Then
newvalues=Fulltrim (values)
response = uiworkspace.Prompt (PROMPT_OKCANCELLIST,"Укажите срок исполнения", "Сроки!", newvalues(0), newvalues)
If Isempty (response) Then Exit Sub
If Instr(response,"Стандартный")<>0 Then days= DelDoc.SrokIspol(0)
If Instr(response,"Срочно")<>0 Then days= DelDoc.SrokIspol_sr(0)
If Instr(response,"Оперативно")<>0 Then days= DelDoc.SrokIspol_oper(0)
If Instr(days,"рабочих")<>0 Then
CurDoc.ДАТА_РЕЗОЛЮЦИИ_ = Cdat(dateTime.DateOnly)
days = Trim(Strleft(days, "рабочих"))
Dim IndexDoc As NotesDocument ' документ с текущими индексами ГСС
Set IndexDoc=SetsDataBase.getDocumentByUnID("3E4DB46--------------0034ADAF")
calendar= IndexDoc.calendar
Dim rabday As Integer
rabday=0
While rabday=<Cint(days)
Call dateTime.AdjustDay(1)
If Arraygetindex(calendar,dateTime.DateOnly) Then ' если в массиве праздников
Else
rabday = rabday+1
End If
Wend
days = dateTime.DateOnly ' общая дата исполнения с учетом праздников
CurDoc.СРОК_ИСПОЛНЕНИЯ_= days
CurDoc.СРОК_ИСПОЛНЕНИЯ_2 = days
Else ' нет слова "рабочих"
CurDoc.ДАТА_РЕЗОЛЮЦИИ_ = Cdat(dateTime.DateOnly)
Call dateTime.AdjustDay(days) ' добавили дни
days = dateTime.DateOnly ' общая дата исполнения
CurDoc.СРОК_ИСПОЛНЕНИЯ_= days
CurDoc.СРОК_ИСПОЛНЕНИЯ_2 = days
End If