Россыпь мелких вопросов

  • Автор темы Vagor.ini
  • Дата начала

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 983
611
BIT
453
seoman2
собсно это все из проекта о кот. я говорил
советую прочесть и весь топик (бегло)

Добавлено:
Добрый день, есть ли в Lotusscript аналог Javaвского - Object1.equals(Object2)?
если речь идет о штатной работе этого оператора
то есть;)
называется Is
If obj1 Is obj2 Then...
 

savl

Lotus Team
28.10.2011
2 624
314
BIT
515
Serduko
Вроде как этот, но я не пользовался. Нужны тесты.
The Is operator, for comparing the values of object reference variables to see if they are equal.
Class ClassA
'...
End Class

Dim X As New ClassA
Dim Y As ClassA

Set Y = X
Print X Is Y
' Output: True
 

seoman2

Green Team
17.02.2010
507
1
BIT
72
Есть агент, пишет файл в папку.
Локально - работает.
Если запускать по расписанию - выдал ошибку записи.

Подписал его сервером, уровень безопасности дал -2.
Ошибки больше нет, но файл в папке не создается.
В чем может быть причина?
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 983
611
BIT
453
seoman2 подписать нужно тем кто имеет опред права на сервере (см. серверный док)
сервер м.б. запущен от учетки кот. не имеет права доступа в папку, в кот. кладется файл, да и ваще - отвечайте так, чтобы было понятно кому и на что ответили
 

seoman2

Green Team
17.02.2010
507
1
BIT
72
>> lmike:подписать нужно тем кто имеет опред права на сервере (см. серверный док)
сервер м.б. запущен от учетки кот. не имеет права доступа в папку, в кот. кладется файл

У меня Full Access administrators, собой подписал сейчас.
На папку дал полный доступ "всем".
Не помогло.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 983
611
BIT
453
На папку дал полный доступ "всем".
пишет куда?
SYSTEM - это особый акк, если мы грим про виндятку, а именно под этим аккком пущается домина под виндяткой (если не меняли)
 

rinsk

Lotus Team
12.11.2009
1 155
126
BIT
38
>> lmike:подписать нужно тем кто имеет опред права на сервере (см. серверный док)
сервер м.б. запущен от учетки кот. не имеет права доступа в папку, в кот. кладется файл

У меня Full Access administrators, собой подписал сейчас.
На папку дал полный доступ "всем".
Не помогло.
Сорри - имхо вопрос для Windows форума... подсказка - Все - это на самом деле не ВСЕ. Как и админ - не фулл админ..
 

seoman2

Green Team
17.02.2010
507
1
BIT
72
Дал юзеру SYSTEM полный доступ на папочку.
Вот еще вопрос - если запущен агент на сервере, то факт его запуска и работы виден в серверной консоли и файле серверного лога?
 

savl

Lotus Team
28.10.2011
2 624
314
BIT
515
seoman2
если в агенте есть Print
2. В консоли, если она включена и
3. Всегда, если выполняется на сервере Log.nsf
4. Свой вариант.
 

seoman2

Green Team
17.02.2010
507
1
BIT
72
А как сделать, чтобы серверный агент выводил все ошибки при своей работе?
Поставил принты, агент работает, а вот ошибки о выгрузке дока на винт - нету.
 

savl

Lotus Team
28.10.2011
2 624
314
BIT
515
Нужен обработчик ошибок, на lotusScript самый простой:
Для сервера Print, для клиента msgBox
Код:
Sub Initialize
On Error GoTo handler
Const FuncName = {Agent <имя агента>}

'<Код агента>

Exit Sub
handler:
Print FuncName & "Error: " & Err &", в строке " & Erl & { Text:} & Error$
Exit Sub
End Sub
Этот вариант отработает до первой ошибки и вывалится.
Если необходимо продолжать работу, то надо чуть иначе делать.
К примеру: агент делает цикл перебора документов и что-то делает с документом, логирует ошибку и продолжает обработку:
Код:
Sub Initialize
On Error GoTo handler
Const FuncName = {Agent <имя агента>}
Dim ErrStr As String

'<Код агента>
Set doc = dc.getfirstdocument()
while not doc is nothing
'<Код агента>
nxt:
set doc = dc.getnextdocument(doc)
wend
'<Код агента>
'<Код агента>
Exit Sub
handler:
ErrStr = FuncName & "Error: " & Err &", в строке " & Erl & { Text:} & Error$
if not doc is nothing then ErrStr = ErrStr & { in doc: } & doc.universalID ' узнаем в каком
print ErrStr 
if not doc is nothing then resume nxt ' Возврат в цикл
Exit Sub
End Sub
И вообще, lmike выкладывал свою либу для записи ошибок link removed
Если хочешь - попробуй разобраться в ней, у нас своя реализация.
 

seoman2

Green Team
17.02.2010
507
1
BIT
72
savl, добавил Ваш код.
В логе сервака ошибок нет. Агент отрабатывает, на каждый док сделал принт.
Если не у агента ошибка, то где копать?
 

savl

Lotus Team
28.10.2011
2 624
314
BIT
515
seoman2
А какую ошибку ищем?
Поставте в начале агента Print "старт", в конце Print "Финиш"
Если там Xml методы используются, то там надо из объекта класса вернуть ошибку. В хелпе, кажись есть как это сделать.
Если даже после этого нет ошибок и есть обе надписи, то ошибка в логике. Проверяйте код.
 

seoman2

Green Team
17.02.2010
507
1
BIT
72
savl, агент по расписанию на серваке пытается записать с
Call strm.WriteText(текст какой то)
Print старт/сртоп агента в логах есть.

Этот же агент, если запустить на клиенте создает файл.
На серваке в файловой системе дан всем полный доступ на папку.


Еще вопрос.
Кнопочка скриптом вносит текущую дату (dateTime.DateOnly) в поле "дата_резции", и в поле "срок_исп" на ,к примеру, 10 дней больше.
У "срок_исп" как сделать для юзеров input validation, чтобы "дата_резции" < "срок_исп" ?
От скрипта перестает работать
@If(дата_резции>срок_исп; @Prompt([YesNo]; "АХТУНГ!"; "трололо");@True)
 

savl

Lotus Team
28.10.2011
2 624
314
BIT
515
dateTime.DateOnly - Возвращает строку...
надо через Cdat(dateTime.DateOnly) в поле DT

Насчет агента: попробуй в темп писать, агент подписать серваком, ну и цифру 3 поставить.
 

seoman2

Green Team
17.02.2010
507
1
BIT
72
>> ну и цифру 3 поставить
О чем речь?

dateTime.DateOnly - спасибО! Получилось.
 

savl

Lotus Team
28.10.2011
2 624
314
BIT
515
у агента закладка Security там надо разрешения выставить 3. с полным набором прав выполнять.
 

seoman2

Green Team
17.02.2010
507
1
BIT
72
Как сделать правильно проверку на инпутвалидацион, чтобы дата резолюции всегда была ранее срока исполнения на альфа командах:
@If(дата_резции>срок_исп; @Prompt([YesNo]; "АХТУНГ!"; "трололо");@True)
Чтобы можно было не заполнять поле "срок_исп"
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 983
611
BIT
453
для начала нужно понимать, что валидация происходит в "событии" для поля, где есть понятия @ThisName и @ThisValue
нужно учитывать, что порой валидаторы взаимозавязаны, а на собыках это приведет к дублированию кода и непредсказуемости поведения (при обновлении)
Т.о. сами условия можно вынести в общее поле (т.е. валидатор тупо пишет выполнено условие или нет и название поля, в мультивалюйное поле), кот. проверять на QuerySave, на LS и указывать список "плохих полей
поле кот. содержит инфу об "ошибках" должно иметь флаг - не сохранять на диск (но и CFD его сделать низя - ибо доступ из скрипта будет осложнён)
 
Мы в соцсетях:

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