У меня несколько другой вопрос по неудоюствам редактируемой встроееной вьюшки. Есть документ, в нем таблица типа Tabbed, на одной вкладке таблицы субформа, на субформе встроенная вьюха с одним редактируемым столбцом. Все хорошо, столбец редактируется, изменения сохраняются, только вот сам документ виснет, редактировать его нельзя, на кнопки не понажимаешь, на другую вкладку таблицы не переключиться. Приходится документ закрывать. Это нормально? Кто-нибудь обходил такую проблему?
Вот что у меня во вьюхе.
Options
Option Public
Option Explicit
Declarations
Const QUERY_REQUEST = 1
Const VALIDATE_REQUEST = 2
Const SAVE_REQUEST = 3
Const NEWENTRY_REQUEST = 4
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim sCaret As String
Dim sColValue As String
Dim docParent As NotesDocument
Dim stReplace As Variant
Sub Postopen(Source As Notesuiview)
Dim ws As New NotesUIWorkspace
If Not ws.CurrentDocument Is Nothing Then Set docParent = ws.CurrentDocument.Document
End Sub
Sub Inviewedit(Source As Notesuiview, Requesttype As Integer, Colprogname As Variant, Columnvalue As Variant, Continue As Variant)
Const QUERY_REQUEST = 1
Const VALIDATE_REQUEST = 2
Const SAVE_REQUEST = 3
Const NEWENTRY_REQUEST = 4
Dim ws As New NotesUIWorkspace
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument, docOrder As NotesDocument
Dim sCaret As String
Dim sColValue As String
Set docOrder = ws.CurrentDocument.Document
Set db = session.CurrentDatabase
sCaret = Source.CaretNoteID
Set doc = db.GetDocumentByID(sCaret)
'Редактирование в представлении
Select Case Requesttype
Case VALIDATE_REQUEST
'Проверка корректного ввода Количества. Выход из модуля в случае возникновения ошибки
Dim stValue As String
stValue=ColumnValue(0)
For l=1 To Len(stValue)
If Not Lcase$(Mid$(stValue, l, 1)) Like "[0-9]" Then
Msgbox "Неверно указано количество! Строка " & i, 0+48 , "Контроль заполнения документа"
doc.ReplaceItemValue "Error", "1"
doc.Save True, True, True
Exit Sub
End If
Next
stReplace = stValue
Case SAVE_REQUEST
Dim stMTRProperties As String, stMTRNewProperties As String
For i = 0 To Ubound(Colprogname) Step 1
If Colprogname(i) ="$Quantity" Then
ColumnValue(i) = Cstr(stReplace)
stMTRProperties=doc.GetItemValue("NameMTR")(0)
stMTRNewProperties=Strtoken(stMTRProperties,"|",1) & "|" & Strtoken(stMTRProperties,"|",2) & "|" & Strtoken(stMTRProperties,"|",3) & "|" & Strtoken(stMTRProperties,"|",4) & "|" & stReplace & "|" & Strtoken(stMTRProperties,"|",6)
ColumnValue(i) = Cstr(stReplace)
doc.ReplaceItemValue "Error", ""
doc.ReplaceItemValue "QuantityMTR",ColumnValue(i)
doc.ReplaceItemValue "NameMTR",stMTRNewProperties
End If
Next
doc.Save True, True, True
Case NEWENTRY_REQUEST
End Select
End Sub