A
Anonimous
Привет всем. Похожую тему найти не получилось. Ни у кого не возникала такая ситуация?
У меня в приложении документ проходит несколько этапов. Этап первый - "Согласование", здесь у документа статус "1", потом еще какие-то. Через 2 этапа начинается этап "Прием оборудования", у документа ставится статус "4", в документе ставится один признак SystemMarks = True. По этому признаку эти документы отбираются в представление. Затем их должен обрабатывать агент и сохранять.
Так вот, я ручками прогоняю документ от статуса "1", до статуса "4", затем ручками запускаю этот агент, смотрю обработку этого документа в дебаггере. И в дебаггере поле "Статус" у этого документа показывает значение "1". Смотрю свойства документа в представлении - там поле статус имеет значение "4". Смотрю обработку этого документа в дебаггере - там опять статус "1". Причем этот неверный статус документ имеет в самом начале работы агента, до этого он нигде поменяться не мог! Может где-то в свойствах какого-то элемента дизайна есть хитрый флажок, который к этому приводит?
Привожу код.
Агент
Option Public
Option Declare
Sub Initialize
Dim session As New NotesSession
Dim dfs As New DFSession
If dfs.DisableServerAgents Then Exit Sub
LOMakeRequests
End Sub
Метод LOMakeRequests
Sub LOMakeRequests
'Создает Запросы
Print "Начало обработки"
On Error Resume Next
Dim session As New NotesSession
Dim db As NotesDatabase
Set db = session.CurrentDatabase
If db Is Nothing Then Exit Sub
Dim view As NotesView
' Обращение к представлению, в которое документ отбирается по признаку SystemMarks = True
Set view = db.GetView("RequestsForEquipmentMakeRequests")
If view Is Nothing Then Exit Sub
'1. Берет все документ во вью "RequestsForEquipmentMakeRequests"
'2. По каждому документу (Заявка на оборудование) - создает Запросы
Dim collEntriesRE As NotesViewEntryCollection
Set collEntriesRE = view.AllEntries
If collEntriesRE Is Nothing Then Print "Нет документов для обработки... " : GoTo ExitSub
If collEntriesRE.Count = 0 Then Print "Нет документов для обработки... " : GoTo ExitSub
Dim docEntryRE As NotesViewEntry
Set docEntryRE = collEntriesRE.GetFirstEntry
Dim docRE As NotesDocument
Dim nProcessedDocs As Integer
nProcessedDocs = 0
While Not docEntryRE Is Nothing
' Обращение к этому документу, у которого статус "4" при просмотре его свойств в представлении, а в дебаггере значение поля Статус показано "1".
Set docRE = docEntryRE.Document
' Здесь смотрю значение поля "Статус" у docRE. И оно не соответствует его реальному значению в представлениях. И все кувырком с этого места.
' ------------------------Дальнейшая обработка документа
' Переходим к следующему entry
nProcessedDocs = nProcessedDocs + 1
NextDocEntry:
Set docEntryRE = collEntriesRE.GetNextEntry(docEntryRE)
Wend
ExitSub:
Print "Обработано документов: " & nProcessedDocs
Print "Конец обработки"
End Sub
Заранее спасибо
У меня в приложении документ проходит несколько этапов. Этап первый - "Согласование", здесь у документа статус "1", потом еще какие-то. Через 2 этапа начинается этап "Прием оборудования", у документа ставится статус "4", в документе ставится один признак SystemMarks = True. По этому признаку эти документы отбираются в представление. Затем их должен обрабатывать агент и сохранять.
Так вот, я ручками прогоняю документ от статуса "1", до статуса "4", затем ручками запускаю этот агент, смотрю обработку этого документа в дебаггере. И в дебаггере поле "Статус" у этого документа показывает значение "1". Смотрю свойства документа в представлении - там поле статус имеет значение "4". Смотрю обработку этого документа в дебаггере - там опять статус "1". Причем этот неверный статус документ имеет в самом начале работы агента, до этого он нигде поменяться не мог! Может где-то в свойствах какого-то элемента дизайна есть хитрый флажок, который к этому приводит?
Привожу код.
Агент
Option Public
Option Declare
Sub Initialize
Dim session As New NotesSession
Dim dfs As New DFSession
If dfs.DisableServerAgents Then Exit Sub
LOMakeRequests
End Sub
Метод LOMakeRequests
Sub LOMakeRequests
'Создает Запросы
Print "Начало обработки"
On Error Resume Next
Dim session As New NotesSession
Dim db As NotesDatabase
Set db = session.CurrentDatabase
If db Is Nothing Then Exit Sub
Dim view As NotesView
' Обращение к представлению, в которое документ отбирается по признаку SystemMarks = True
Set view = db.GetView("RequestsForEquipmentMakeRequests")
If view Is Nothing Then Exit Sub
'1. Берет все документ во вью "RequestsForEquipmentMakeRequests"
'2. По каждому документу (Заявка на оборудование) - создает Запросы
Dim collEntriesRE As NotesViewEntryCollection
Set collEntriesRE = view.AllEntries
If collEntriesRE Is Nothing Then Print "Нет документов для обработки... " : GoTo ExitSub
If collEntriesRE.Count = 0 Then Print "Нет документов для обработки... " : GoTo ExitSub
Dim docEntryRE As NotesViewEntry
Set docEntryRE = collEntriesRE.GetFirstEntry
Dim docRE As NotesDocument
Dim nProcessedDocs As Integer
nProcessedDocs = 0
While Not docEntryRE Is Nothing
' Обращение к этому документу, у которого статус "4" при просмотре его свойств в представлении, а в дебаггере значение поля Статус показано "1".
Set docRE = docEntryRE.Document
' Здесь смотрю значение поля "Статус" у docRE. И оно не соответствует его реальному значению в представлениях. И все кувырком с этого места.
' ------------------------Дальнейшая обработка документа
' Переходим к следующему entry
nProcessedDocs = nProcessedDocs + 1
NextDocEntry:
Set docEntryRE = collEntriesRE.GetNextEntry(docEntryRE)
Wend
ExitSub:
Print "Обработано документов: " & nProcessedDocs
Print "Конец обработки"
End Sub
Заранее спасибо