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

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

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

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

Проверка на заполнение поля

  • Автор темы reg5
  • Дата начала
R

reg5

Как сделать, чтобы при сохранении выдавало сообщение о том, что поле не заполнено при таких условиях:
- роль равна Admin
- поле пустое.

На поле Test в Input Enabled @IsMember( "[Admin]"; @UserRoles )
Input Validation @If (@IsMember( "[Admin]"; @UserRoles ) & Test="");@Failure("Поле не заполнено! "); @Success
 
R

reg5

Omh
А что так работать не будет? только на скрипте?!
 
S

susinmn

Input Validation

@If(@IsMember("[ADMIN]";@UpperCase(@UserRoles)) & Test="");@Return(@Failure("Поле не заполнено!"));"");
@Success
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
215
failure имеет свои неудобства...
как бы сделал я:
-поле (КВК) для накопления фэйлов (notValid - наример)
-в валидациях - возвращать суксец, но в поле дописывать имя ошибочного поля
Код:
@If(@Trim(@ThisValue)=""; - сюды мона эвалюэйт прикрутить, к-н формулы задаваемой в общем поле
@SetField("notValid";@Trim(@Unique(notValid:@ThisName)));
@SetField("notValid";@Trim(@Unique(@Replace(notValid;@ThisName;""))));
); REM{этого можно не делать, нотуса сама обнулит поле};
@Success
-в событии QuerySave
Код:
	Continue=False
On Error Goto ErrorHandler	
Call Source.Refresh()
Call Source.RefreshHideFormulas()	
Dim v As Variant
Dim doc As NotesDocument
Set doc=Source.Document
v=doc.GetItemValue({notValid})
If Isarray(v) Then
Dim s As String
Forall m In v
If m<>"" Then s=s+Chr(10)+Replace(Source.FieldGetText(m+"_title"),":","") 'описалово поля в CFD
End Forall
If s<>"" Then
Dim title As String
title=doc.ParentDatabase.Title
Msgbox Source.FieldGetText({notValid_header}) & s, 48, title
Source.GotoField(v(0))
Exit Sub
End If
End If
Continue=True
ExitFunction:
Exit Sub
ErrorHandler:
Resume ExitFunction

ну и прикрутилбы подсветку, на хиден полях (красеньким) для ошибочных позиций
 
R

reg5

susinmn
спасибо.
А еще теперь надо
Код:
@If(@IsMember("[ADMIN]";@UpperCase(@UserRoles)) & Test="");@Return(@Failure("Поле не заполнено!"));"");
@Success
на Lotus Script мне надо по такому же принципу запретить сохранять без заполненного поля Rich Text
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
215
см выше
getunformatedtext

для собак есть ограничение:
Caution Rich text fields are not part of a document until saved. If you want @Abstract to work on additions and changes to the current document, you must first save and then recalculate the document. @Abstract cannot convert rich text to text in a view column.
для LS - не помню
 

VladSh

начинающий
Lotus Team
11.12.2009
1 785
157
BIT
68
Таким образом мы проверим только наличие текста; наличие картинок, файлов или другого контента - вряд ли ))

reg5
На QuerySave делаем:
Код:
Const RTFEMPTYLENGTH = 361

Call NotesUIDocument.Refresh(True)

content$ = NotesRichTextItem.GetUnformattedText()
If FullTrim(content$) = "" And NotesRichTextItem.ValueLength <= RTFEMPTYLENGTH Then
'Поле пустое
End If
P.S. Лучше написать одну функцию по проверке RT-итемов на пустоту и юзать её повсеместно :KillMe:

EDITED:
104 - пустой RT, без формул скрытия
362 - минимальный размер самой маленькой картинки (1x1 пиксел, ч/б)
1148 - минимальный размер аттача (пустой txt-файл)
RTFEMPTYLENGTH принимается равным 361.
 
N

nvyush

Таким образом мы проверим только наличие текста; наличие картинок, файлов или другого контента - вряд ли ))

reg5
На QuerySave делаем:
Код:
Const RTFEMPTYLENGTH = 361

Call NotesUIDocument.Refresh(True)

content$ = NotesRichTextItem.GetUnformattedText()
If FullTrim(content$) = "" And NotesRichTextItem.ValueLength <= RTFEMPTYLENGTH Then
'Поле пустое
End If
P.S. Лучше написать одну функцию по проверке RT-итемов на пустоту и юзать её повсеместно :KillMe:

EDITED:
104 - пустой RT, без формул скрытия
362 - минимальный размер самой маленькой картинки (1x1 пиксел, ч/б)
1148 - минимальный размер аттача (пустой txt-файл)
RTFEMPTYLENGTH принимается равным 361.
Пробовал действовать таким образом — много граблей и не универсально, в частности для RTLight полей будут другие значения.
Если речь не идёт о непосредственно вставленных картинках, можно проверять с помощью NotesRichTextNavigator. Картинки — только черех DXL.

P.S. Точных цифр, полученных в экспериментах, не помню, но размер RT-поля с маленькой картинкой был меньше, чем пустого RTLight, к тому же при очистке поля размер был другим, чем пустого. На форуме это уже обсуждалось: link removed
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
215
DXL - это уже после сохранения (сомнительно - что налету возможно)
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
215
Omh
ты уже делал или предполагаешь?
 
O

Omh

Делал когда-то
Ща перепроверю

Перепроверил: all works.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
215
ну хорошо - коли так :(
 
R

reg5

спасибо, за помощь

Еще возник вопрос.
Есть поле Дата, необходимо его скрывать, если:
- user1 - текущий пользователь
- user2 - текущий пользователь
Эти пользователи могут быть одним лицом
Делаю так:
user1 !=@UserName | user2 !=@UserName
Поле скрыто всегда если user1 и user2 одно и тоже лицо
Как правильно скрыть поле?
 
Мы в соцсетях:

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