G
Guest
Вопрос по построению алгоритма.
Есть у меня документ, который должен пройти некоторые этапы согласования.
При переходе на следующий этап программа ищет в базе сотрудников по роли (уже заполненный справочник) и предоставляет пользователю список.
Из этого списка отобранных фамилий пользователь делает выбор сотрудника, который будет согласовывать документ на следующем этапе.
Пример схемы:
сотрудник->руководитель отдела->руководитель службы т.д.
Сложность в том, что на втором этапе согласовательный ряд может меняться в зависимости от некоторых условий.
Пока у меня реализован такой общий алгоритм:
1. На втором этапе переменная Soglasov принимает одно из трех значений
2. Иначе в зависимости от этапа и значения Soglasov формируется формула поиска сотрудника
3. Поиск сотрудников по выбранной форме
4. Предоставление пользователю выбора из найденных сотрудников
5. В зависимости от этапа устанавливаются значения ДатыЭтап, ИмениЭтап и НотесИмениЭтап, а также документ переводится в новый статус
6. Изменяется история документа
7. Высылается сообщение выбранному сотруднику
7. Документ сохраняется и закрывается
При 10 этапах и 3-х ветках согласования на 2 и 5 шаге алгоритма код сильно раздувается.
Пример 2 шага:
Пример 5-го шага:
И так по каждому из 10 этапов...
Вот ищу способы оптимизировать. Может быть, у кого есть предложения.
Может быть, кто-нибудь делал согласование на Lotus Notes совсем по-другому и мой подход в корне неверный...?
Была бы признательна за любую интересную идею.
Есть у меня документ, который должен пройти некоторые этапы согласования.
При переходе на следующий этап программа ищет в базе сотрудников по роли (уже заполненный справочник) и предоставляет пользователю список.
Из этого списка отобранных фамилий пользователь делает выбор сотрудника, который будет согласовывать документ на следующем этапе.
Пример схемы:
сотрудник->руководитель отдела->руководитель службы т.д.
Сложность в том, что на втором этапе согласовательный ряд может меняться в зависимости от некоторых условий.
Пока у меня реализован такой общий алгоритм:
1. На втором этапе переменная Soglasov принимает одно из трех значений
2. Иначе в зависимости от этапа и значения Soglasov формируется формула поиска сотрудника
3. Поиск сотрудников по выбранной форме
4. Предоставление пользователю выбора из найденных сотрудников
5. В зависимости от этапа устанавливаются значения ДатыЭтап, ИмениЭтап и НотесИмениЭтап, а также документ переводится в новый статус
6. Изменяется история документа
7. Высылается сообщение выбранному сотруднику
7. Документ сохраняется и закрывается
При 10 этапах и 3-х ветках согласования на 2 и 5 шаге алгоритма код сильно раздувается.
Пример 2 шага:
Код:
Case "6": Print "6"
' Если Soglasov="Не соответствует", то ФЭС
If doc.Soglasov(0) = "Не соответствует" Then
formula={Form = "Permission" & Visible!="0" & Rule="Сотрудник ФЭС"}
End If
' Если Soglasov="Руководителю", то Инсп.
If doc.Soglasov(0) = "Рукводителю" Then
formula={Form = "Permission" & Visible!="0" & Rule="Инспектор"}
End If
' Если Soglasov="Сотруднику" , то Инсп.
If doc.Soglasov(0) = "Сотруднику" Then
formula={Form = "Permission" & Visible!="0" & Rule="Инспектор"}
End If
Пример 5-го шага:
Код:
Case "6": Print "6"
doc.B3OKDate = doc.SogDate_Ok
doc.Boss3Name_Ok = doc.SogName_Ok
doc.Boss3NameNotes_Ok = doc.SogNotesName_Ok
If doc.Soglasov(0) = "Не соответствует" Then doc.Status = "4"
If doc.Soglasov(0) = "Руководителю" Then doc.Status = "8"
If doc.Soglasov(0) = "Сотруднику" Then doc.Status = "8"
И так по каждому из 10 этапов...
Вот ищу способы оптимизировать. Может быть, у кого есть предложения.
Может быть, кто-нибудь делал согласование на Lotus Notes совсем по-другому и мой подход в корне неверный...?
Была бы признательна за любую интересную идею.