• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

проблемы с библиотекой

  • Автор темы Автор темы medin84
  • Дата начала Дата начала
M

medin84

собственно библиотеку пишу первый раз
не понимаю в чем проблема
при первом нажатии на кнопку не отвечает
 
Actions под кнопкой
Use "CSUIViewClass"

Sub Click(Source As Button)
Call ProcessViewCommand(ERRAND_SEND)
End Sub

и далее по событию
 
CSUIViewClass библиотека класса? - то перед использованием методов класса неплохо бы объект создать ;) (в смысле если rocessViewCommand это метод какого-либо класса)
а вообще тогда еще и не плохо листинг библиотеки, не всей, хотяб небольшую часть ...
 
нет это не класс
класс идет потом
Код:
Use "CSEventNotes" 'библиотека класса ErrandObj здесь

Sub ProcessViewCommand(LAction As Long)
Dim collection As NotesDocumentCollection
Dim note As NotesDocument
Dim session As New notessession

Dim csErrandObj As New ErrandObj

Dim vContinue As Integer
vContinue=False

Set collection = session.currentdatabase.unprocesseddocuments

If(LAction<>ERRAND_CREATE) Then
If (collection.count = 0) Then
Exit Sub
Else
Set note = collection.getfirstdocument()
End If
End If

If CanProcessCommand(LAction, note) Then vContinue=True

If ( vContinue ) Then
Select Case LAction
Case ERRAND_CREATE
Call csErrandObj.create

Case ERRAND_SEND
Call csErrandObj.send( note )

Case ERRAND_DECLINE
Call csErrandObj.decline( note )

Case ERRAND_CHANGE_EXECUTOR
Call csErrandObj.change_executor( note )

Case ERRAND_CHANGE_TODATE
Call csErrandObj.change_todate( note )

Case Else
Goto done
End Select
End If

If Not(vContinue) Then Goto Done

note.save True,False
Done:
If(Not(csErrandObj Is Nothing)) Then Delete csErrandObj
Dim ws As New NotesUIWorkspace
Call ws.ViewRefresh
End Sub
 
Стандартная лотусовая бага, когда используете метод session.currentdatabase.unprocesseddocuments, если документ во вьюшке не выделен галочкой - то коллекция будет пустая.
Добавьте после строчки
Set collection = session.currentdatabase.unprocesseddocuments
проверку: если collection.count = 0 тогда получаете объект NotesUIView и используете свойство CaretNoteID. Из него потом достать NotesDocument нет никаких проблем.

А вообще по хорошему эту функцию надо нормально переписывать чтобы не было всяких Goto, и она умела обрабатывать не только 1 документ, а все выделенные (если пользователь выделит больше одного)
 
... на счёт листинга погорячился - но пригодится ;)
а дебагер чего говорит? он начинает выполнять ProcessViewCommand?
 
хотя если подключать библиотеку с вьюшки то все нормально
но все равно не понятно почему с кнопки работает со второго нажатия

в дебаггере видно что все проходит строчка в строчку
 
Если дебаггер нормально проходит, то какой результат должен быть?
Сохранение документа?
 
здесь что-то непонятное сейчас работает. ;)
после всей обработки да сохранение
 
Сохранение происходит и ошибка не выдается?
Значит смотрим библиотеку CSEventNotes.
 
да сохраняется и ни каких еррор
да с библиотекой вроде все норма
ну вроде вопрос отпадает сейчас работает нормально ;)
у меня вопрос может не в тему но не большой
откуда лучше подключать библиотеку с вью или с кнопки
 
Спасибо всем за помощь и замечания!
;) будем исправляться!
А вообще по хорошему эту функцию надо нормально переписывать чтобы не было всяких Goto, и она умела обрабатывать не только 1 документ, а все выделенные (если пользователь выделит больше одного)
 
меняется только ее "область видимости"
Правда твоя, но есть добавление.
При подключении к объекту (view, form) initialize библиотеки будет выполняться в любом случае, а при подключении на кнопку, только при нажатии. И только 1 раз.
 
Я тоже с такой багой сталкивался... в клиенте 6.5.3... в других клиентах бага отсутвовала...:)
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab