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

Ruska132

Well-Known Member
21.01.2015
66
0
#1
Добрый день. Подскажите ПЖ новичку.
При создании ответного документа на форму, поле ответного заполняется автоматически. необходимо чтоб при сохранении производилась проверка: заполненое поле с UserName.
пример:
Документ1 - поле адресат (Иванов И.И.) Пользователь Сидоров создает резолюцию поле автор прописывается автоматически т.е. Иванов И.И. необходимо чтоб при сохранении документа резолюция была проверка (сравнить Иванов с Сидоров ), если лож то выводить сообщение.

если я правильно понимаю это дело необходимо организовать в событии Querysave.
подскажите ПЖ.
 

savl

Well-Known Member
Lotus team
28.10.2011
2 116
157
32
#2
проверка для чего нужна?
Сама првоерка не задача, это один из шагов.
Задача сама для чего? Чтобы автор не был получателем?
 

Ruska132

Well-Known Member
21.01.2015
66
0
#3
проверка для чего нужна?
Сама првоерка не задача, это один из шагов.
Задача сама для чего? Чтобы автор не был получателем?
суть в том что участились случаи что от имени другого создают ответные документы.
 

Kizarek86

Well-Known Member
Lotus team
20.07.2007
861
6
31
Россея матушка!)
#4
Правильно понимаете, событие делать на Querysave.
Определить текущего пользователя курите класс NotesSession (конктерно UserName),
сравнивайте с указанным значением в поле, курите класс NotesDocument (конкретно GetItemValue).
если нужно остановить сохранение используйте Continue = false
 

Ruska132

Well-Known Member
21.01.2015
66
0
#5
Правильно понимаете, событие делать на Querysave.
Определить текущего пользователя курите класс NotesSession (конктерно UserName),
сравнивайте с указанным значением в поле, курите класс NotesDocument (конкретно GetItemValue).
если нужно остановить сохранение используйте Continue = false

да, если можно то ПЖ на примере.
 

garrick

Well-Known Member
Lotus team
26.10.2009
866
68
Москва
#6
суть в том что участились случаи что от имени другого создают ответные документы.
Решение в корне не верное, не проверять надо что именно тот пользователь создал ответный документ, а сделать так, чтобы не у того пользователя не было возможности это сделать. Поля Authors/Readers, сокрытие кнопок "Создать" (или как там они у вас называются) и т.п.
 

Kizarek86

Well-Known Member
Lotus team
20.07.2007
861
6
31
Россея матушка!)
#7
Код:
 If Source.Document.ParentDatabase.Parent.UserName <> Source.Document.GetItemValue("имя поля в котором юзверь")(0) Then
Messagebox "Кто то хитрит!", 16, "не надо так"
Continue = False
End If
 
А вообще выше пишут правильные вещи, если пользователь не должен создавать документы по чужим - то блокировать нужно до создания, а не при сохранении.
 

Ruska132

Well-Known Member
21.01.2015
66
0
#8
Код:
 If Source.Document.ParentDatabase.Parent.UserName <> Source.Document.GetItemValue("имя поля в котором юзверь")(0) Then
Messagebox "Кто то хитрит!", 16, "не надо так"
Continue = False
End If
 
А вообще выше пишут правильные вещи, если пользователь не должен создавать документы по чужим - то блокировать нужно до создания, а не при сохранении.
Можно закрыть возможность создания, но есть нюансы, если замещающие сотрудники и им должна быть доступна кнопка.
 

savl

Well-Known Member
Lotus team
28.10.2011
2 116
157
32
#9
суть в том что участились случаи что от имени другого создают ответные документы.
Коллеги, в ошибка в авторе ответа, Иванов создает, а прописывается Сидоров, @Ruska132 так и есть?
Это наследование полей скорее всего, форма ответа - response, там наследование полей от родителя.
Поле, которое содержит имя автора наследуется, а должно изменяться.
Надо найти поле, сделать его вычисляемым и проставить туда формулу @userName, если оно лотусовое имя содержит.
А если ФИО из справочника сотрудников, то надо смотреть йункцию формирования ответа и менять этот момент уже там.
 

Ruska132

Well-Known Member
21.01.2015
66
0
#10
Коллеги, в ошибка в авторе ответа, Иванов создает, а прописывается Сидоров, @Ruska132 так и есть?
Это наследование полей скорее всего, форма ответа - response, там наследование полей от родителя.
Поле, которое содержит имя автора наследуется, а должно изменяться.
Надо найти поле, сделать его вычисляемым и проставить туда формулу @userName, если оно лотусовое имя содержит.
А если ФИО из справочника сотрудников, то надо смотреть йункцию формирования ответа и менять этот момент уже там.
Функция формирования ответа скрыта.
есть поле где содержатся данные автора вида (CN=////////;CN=////) вот и хотелось бы проверить в этом списке текущего пользователя.
 

alexas1

Well-Known Member
Lotus team
10.04.2014
688
238
#12
если лож то выводить сообщение.
- и дальше что?
Не сохранять? - Тогда разумно делать проверку на компетентность ДО создания респонза и никаких проблем не будет.

есть поле где содержатся данные автора вида (CN=////////;CN=////) вот и хотелось бы проверить
- если это хочется использовать "влоб" - делать проверку на postopen и сразу закрывать при геморе (с месагой) без сохранения.

Если надо что-то сохранять - проверять на querysave c соотв. действиями (нулить поля, устанавливать флаг и т.п. ...)
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 435
351
homepage.mac.com
#13
вот мне всегда "нравятся" вопросы..
я хочу что-то сделать вот так-то, при объяснения и уточнениях выползают всякие нюансы, причем "внезапно"
что казалось бы проще - описать процесс полностью (без "своего" - я хочу вот так решить) и детали реализации (кот. существенны)
из-за отсутствия выше перечисленного - 11 ответов, 2-а дня - решения так и нет