• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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

medin84

собственно библиотеку пишу первый раз
не понимаю в чем проблема
при первом нажатии на кнопку не отвечает
 
M

medin84

Actions под кнопкой
Use "CSUIViewClass"

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

и далее по событию
 
A

Archi2001

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

medin84

нет это не класс
класс идет потом
Код:
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
 
K

K-Fire

Стандартная лотусовая бага, когда используете метод session.currentdatabase.unprocesseddocuments, если документ во вьюшке не выделен галочкой - то коллекция будет пустая.
Добавьте после строчки
Set collection = session.currentdatabase.unprocesseddocuments
проверку: если collection.count = 0 тогда получаете объект NotesUIView и используете свойство CaretNoteID. Из него потом достать NotesDocument нет никаких проблем.

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

Archi2001

... на счёт листинга погорячился - но пригодится ;)
а дебагер чего говорит? он начинает выполнять ProcessViewCommand?
 
M

medin84

хотя если подключать библиотеку с вьюшки то все нормально
но все равно не понятно почему с кнопки работает со второго нажатия

в дебаггере видно что все проходит строчка в строчку
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Если дебаггер нормально проходит, то какой результат должен быть?
Сохранение документа?
 
M

medin84

здесь что-то непонятное сейчас работает. ;)
после всей обработки да сохранение
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Сохранение происходит и ошибка не выдается?
Значит смотрим библиотеку CSEventNotes.
 
M

medin84

да сохраняется и ни каких еррор
да с библиотекой вроде все норма
ну вроде вопрос отпадает сейчас работает нормально ;)
у меня вопрос может не в тему но не большой
откуда лучше подключать библиотеку с вью или с кнопки
 
M

medin84

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

Omh

меняется только ее "область видимости"
Правда твоя, но есть добавление.
При подключении к объекту (view, form) initialize библиотеки будет выполняться в любом случае, а при подключении на кнопку, только при нажатии. И только 1 раз.
 
S

Sandr

Я тоже с такой багой сталкивался... в клиенте 6.5.3... в других клиентах бага отсутвовала...:)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!