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

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

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

Не срабатывает On Error

  • Автор темы Автор темы alb
  • Дата начала Дата начала
A

alb

в агенте есть примерно такой код

...
On Error Goto er
....
.....
.....
er:
Msgbox "vid_save_initialize: Cтрока № "&Cstr(Erl())& ". Ошибка "& Err() & ": " & Error(),, "Ошибка"


всегда это работала когда происходила ошибка, удобно очень для отладки знать где и что произошло

вот теперь почемуто не срабатывает, при ошибке переход не происходить
просто пишет стандартно произошло ошибка на агенте и описание ошибки

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

разрабатывалось все на домино 7 клиент 7

а там где не срабатывает все 6,5 они отказываются поставить 7 по своим причинам
 
Не знаю,может это то же самое,но я пишу так ;)

errh:
Msgbox Error & | in line | & Erl(), 64, |Lotus Notes (| & Lsi_info(2) & |)|
 
Murtas
пишет в консоли сервера
агент запускается с веб формы

kilcher
как писать особо не важно вобще не происходить переход на обработчик ошибок
хотя более чем на 10 серверах нормально работает среди которых есть версии 6,5

приходится вставлять месажбоксы через каждую строку пока найдешь где произошло ошибка
 
Если это веб форма, принтить ошибку тоже не получается?
Код:
Sub Initialize
On Error Goto ErrHandle

ErrHandle:		 'For all errors
Print "Error" & Str(Err) & ": " & Error$ & " at line " & Erl()
Resume Away
Away:
End Sub

Хотя может быть у вас агент шедуллерный...
А если переход по On Error Goto не происходит на метку значит ошибки наверное и нет ;)
 
Gor
в том и дело ошибка есть, одна переменнная использовалась без проверки на пустого значения.
ошибку нашли понатыкав мессажбоксами
а перхода никак нет
это навреное глюк какойто
 
alb

попробуй в этом агенте оставить только только строчку с ошибкой ... что получится?

возможные подозрения:

1. название метки.
2. еще раз в коде встречается "On Error" после верхнего объявления
3. найден новый глюк ;) - только напиши как воспроизвести
 
запуск агента из агента, например, приведет к отсутствию "вывода" ошибки (ежели память не врет) на консоль...
ОнЕррор работать будет!
выводите в лог
 
хотелось бы код увидеть.. ни разу не сталкивался с такой ситуацией..
 
Murtas
1. с названием порядок, код тот же что и на всез остальных серверах где на точно такую же ошибку реакция соответствующая
2. он единственный только в начале. обработчик вы конце.
3. похоже нато, но пока чем вызвано не известно

[codebox]Sub Initialize
On Error Goto er
Set ses=New NotesSession
Set doc=ses.DocumentContext
Set db=ses.CurrentDatabase
Msgbox "111"
Select Case doc.vid(0)
Case "1": Call otpusk()
Case "2": Call prevozrast()
Case "3": Call vzysk()
Case "4": Call nagrada()
Case "5": Call attestatcia()
Case "6": Call vysluga()
End Select

Print "Отчет готов, перейдите в соответсвующий раздел"

If 1<>1 Then
er:

Msgbox "vid_save_initialize: Cтрока № "&Cstr(Erl())& ". Ошибка "& Err() & ": " & Error(),, "Ошибка"
End If
End Sub[/codebox]
код одного из процедур
[codebox]Sub prevozrast
On Error Goto er
Dim sotr As NotesDocument
Dim doc As NotesDocument
Dim tmpdoc As NotesDocument
Dim colsot As NotesDocumentCollection
Dim stazh_col As NotesDocumentCollection
Dim sotview As NotesView
Dim stazh_view As NotesView
Dim dt As NotesDateTime
Dim m, i As Integer
Dim poz As Integer
Dim buf As String
Dim tmp As String

Set sotview=db.GetView("emplageLim")
Set colsot=sotview.GetAllDocumentsByKey("Достигшие предельного возраста",True)
Set sotr=colsot.GetFirstDocument

fn="Kadry_prvozrast.xls"
fn= vygruz_formy(fn)
If fn="0" Then
Msgbox "Не удалось найти или выгрузить исходный файл отчета"+Chr(10)_
+"Если дальше будет выходить это сообщенине обратитесь администратору"
End If

Set xl = CreateObject("Excel.Application")
Call xl.Workbooks.Open(fn) ' на том сервере не был установлен офис, потому и здесь ошибка выскакивало.

Set xlsh = xl.ActiveWorkbook.ActiveSheet
xl.DisplayAlerts = False

Set stazh_view=db.GetView("emplStazh")
xlsh.cells(1,1).Value="Список сотрудников достигших и достигающих предельного возраста пребывания"+ _
+" на службе в "+Cstr(1+Year(Today))+" году по Агентству и территориальным органам на "+Cstr(Today)
buf=""
poz=3
i=1
While Not sotr Is Nothing
If buf <> sotr.emplOrganization(0) Then
buf=sotr.emplOrganization(0)
xl.Range("A"&Cstr(poz)&":G"&Cstr(poz)).Select
xl.Selection.HorizontalAlignment = -4108
xl.Selection.MergeCells = True
xl.Selection.Font.Bold = True
xl.Selection.Font.Size=14
xlsh.cells(poz,1).Value=buf
poz=poz+1
i=1
End If
xlsh.cells(poz,1).Value=i
tmp=sotr.emplRank(0)+ " " + sotr.emplLastName(0)+" "
If sotr.emplFirstName(0)<>"" Then tmp=tmp+Left(sotr.emplFirstName(0),1)+"."
If sotr.emplMiddleName(0)<>"" Then tmp=tmp+Left(sotr.emplMiddleName(0),1)+"."
tmp=tmp+" - "+sotr.emplPostList(0)+" "+sotr.emplSubunit(0)
xlsh.cells(poz,2).Value=tmp
xlsh.cells(poz,3).Value=sotr.emplBirthday(0)
xlsh.cells(poz,4).Value=sotr.dataprodlen(0)


Set tmpdoc=stazh_view.GetDocumentByKey(sotr.UID(0),True)
If Not tmpdoc Is Nothing Then
xlsh.cells(poz,7).Value=tmpdoc.seniorityLongService(0)
End If
i=i+1
poz=poz+1
Set sotr=colsot.GetNextDocument(sotr)
Wend
xl.Range("A"&Cstr(poz+1)).Select
xl.ActiveWorkbook.save
xl.ActiveWorkbook.close
xl.quit
'*********крепление
Set doc=db.CreateDocument
Call doc.Save( True, True )
Dim notesItem As NotesItem
Dim rtitem As NotesRichTextItem
Dim object As NotesEmbeddedObject

Set notesItem = doc.ReplaceItemValue("Form", "Сформированный отчет доп")
Set notesItem = doc.ReplaceItemValue("reportName", "Шектеулі жасқа жеткендер / Достигшие предельного возраста")

Set notesItem = doc.ReplaceItemValue("reportDate", Format( Now , "dd/mm/yyyy h:mm:ss") )
Set notesItem = doc.ReplaceItemValue("reportPath", Strrightback(fn,"\" ))

Set rtitem = New NotesRichTextItem( doc, "Body" )
Set object = rtitem.EmbedObject ( EMBED_ATTACHMENT, "", fn )

Call doc.Save( True, True )
'конец крепление
Kill fn
If 1<>1 Then
er:
If Isobject(xl.ActiveWorkbook) Then
xl.ActiveWorkbook.close
End If
If Isobject(xl) Then
xl.quit
End If
If Dir$(fn)<>"" Then Kill fn
Msgbox "vid_save_prevozrast: Cтрока № "&Cstr(Erl())& ". Ошибка "& Err() & ": " & Error(),, "Ошибка"
End If
End Sub[/codebox]
 
1.
класс , такого исчо не видел, пример индийского кода...
коспользуйтесь Exit Sub

2.
If 1<>1 Then
er:
If Isobject(xl.ActiveWorkbook) Then
xl.ActiveWorkbook.close
End If
If Isobject(xl) Then
xl.quit
End If
If Dir$(fn)<>"" Then Kill fn
Msgbox "vid_save_prevozrast: Cтрока № "&Cstr(Erl())& ". Ошибка "& Err() & ": " & Error(),, "Ошибка"
End If
Возможно в самом блоке после метки происходит ошибка, например неправильно идёт проверка
If Isobject(xl.ActiveWorkbook) Then должна быть после If Isobject(xl) Then, а то получаетсья xl Вы не проверили, а к его свойствам уже обращаетесь

попробуйте вывести мессадж сразу после метки перехода(для проверки)
да и ещё, 3 строки:
If Isobject(xl) Then
xl.quit
End If
можно заменить 1й строкой
If Isobject(xl) Then xl.quit
 
alb слушай Morpheusa

... избегай таких конструкций, и старайся разделять операции очистки/удаления объектов/переменных от самой ошибки

вот пример как следовало бы делать ...

Код:
Sub vid_save_prevozrast()

On error goto ErrorHandler

' Your code goes here :)...	

ExitProcedure:

' Close/remove your Excel object

Exit Sub

ErrorHandler:
Msgbox "vid_save_prevozrast: Cтрока № "&Cstr(Erl())& ". Ошибка "& Err() & ": " & Error(),, "Ошибка"

Resume ExitProcedure

End Sub
 
всем спасибо учтем ваши советы

Возможно в самом блоке после метки происходит ошибка, например неправильно идёт проверка
If Isobject(xl.ActiveWorkbook) Then должна быть после If Isobject(xl) Then, а то получаетсья xl Вы не проверили, а к его свойствам уже обращаетесь
а ведь ты прав. ошибка как раз из за того что xl пустой
 
Мы в соцсетях:

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