Закрыть исходный документ

swyatogor

Lotus team
24.02.2014
479
10
#1
Доброго времени суток всем..
Работодатель подкинул тут задачу, от которой я сразу впал в ступор..
Пользователю прилетает из СЭД письмо со ссылкой на документ, в котором нужно его внимание. Он переходит по ссылке в этот документ (документ открывается в клиенте Нотес в отдельной вкладке), делает свои дела.. и при закрытии документа СЭД нужно закрывать и пришедшее письмо с линком..
чёт я вот даже не знаю в какую сторону копать((.. ни кто не подскажет идею?
 

susinmn

Well-known member
16.10.2007
529
3
#2
А если письмо отправлять, как maildoc.Form = "Memo", maildoc.Send(True) и в форме Memo делать Auto Launch -First Document Link-?
 

swyatogor

Lotus team
24.02.2014
479
10
#3
вот у мну подобная идея родилась.. только я хотел в форме посылать чтонить хитрое.. хотспот какойнить
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 231
18
#4
хотспот запускающий агента из базы СЭД, и тогда агент хватает текущий док(письмо) берет из него УНИД, закрывает письмо и открывает нужный док
 

swyatogor

Lotus team
24.02.2014
479
10
#5
что то не могу придумать как сделать динамический хотспот((, т.е. чтобы текст в нем менялся((..
 

Xalet

Well-known member
08.08.2008
410
0
#7
А на открытие письма повесить код, который проверит, есть ли линк и откроет по нему нужный документ не открывая письма не подойдет?
 

swyatogor

Lotus team
24.02.2014
479
10
#8
А на открытие письма повесить код, который проверит, есть ли линк и откроет по нему нужный документ не открывая письма не подойдет?
скорее всего не пойдет.. пользователь то может открыть письмо на посмотреть.. и просто закрыть не проходя по ссылке..

DXML делаешь хотспот как метку а потом в стринге заменяешь её на нужное значение
ой ей.. как то я пробовал разобрать док и собрать заново.. не получилось(( точнее коряво собралось обратно даже без изменения дока..
а есть пример кода как это делать?
 

swyatogor

Lotus team
24.02.2014
479
10
#10
просто, если заказчику лень тыркнуть закрытие письма, а ему предложить вариант, что даже линк тыркать не надо...
Заказчику, которому лень закрыть письмо - ген дир, кроме него есть еще 300 пользователей, которым это может не понравится))) а нуно думать о всех.. плюсом нуно решать вопрос как оно будет работать в мобильной среде..
 

alexas1

Lotus team
10.04.2014
726
145
#11
плюсом нуно решать вопрос как оно будет работать в мобильной среде..
- вот тут ващще не вопрос: открываешь док в том же окне, где был показан мэйл.
Вот те и открыт док и, одновременно, закрыт мэйл.
В клиенте можно сделать также.
пользователь то может открыть письмо на посмотреть.. и просто закрыть не проходя по ссылке..
- и чо? Безальтернативное открытие дока при любом открытии мэйла (чо на чтение, чо на редакт.) Плюс пометка в этот док (если доступ позволяет), чо это письмо его (док) уже открывало, что б не дёргать в дальнейшем (пометка - запомнить ID (UNID) письма в доке). Что б юзверь мог вернуться (при желании) к мэйлу, при открытии дока вешаешь на "Кнопу возврата" (с условием скрытия - "открыли из мэйла") скрипт с ID мэйла для обратного перехода.
Вся фича изготавливается, как писал Xalet - дополнением в форму (формы) мэйла или, как писал Toxa - включением логики в агент (тут, канеш, "безальтернативного" открытия дока не получится - хотспот надо ткнуть)

PS Хотспот можно натянуть на яркую мигающую гифку и поместить её в самом верху письма, чоб юзверь не отнекивался "мы люди не местные - ничо не видели"

PPS Поскольку док может быть любым - открывать его в двойном фрейме: верхний, узкий - только "кнопа возврата", нижний - сам док.
 
Последнее редактирование модератором:

swyatogor

Lotus team
24.02.2014
479
10
#12
хватает текущий док(письмо) берет из него УНИД, закрывает письмо и открывает нужный док
А вот можете уточнить.. как агент может закрыть документ открытый где то по его УНИДу?? я что то и команд таких для УИ не нашел((
 

alexas1

Lotus team
10.04.2014
726
145
#13
как агент может закрыть документ открытый где то по его УНИДу??
получить его в UI и закрыть.
Set notesUIDocument = notesUIWorkspace.EditDocument( [editMode] , [notesDocument] , [notesDocumentReadOnly] , [documentAnchor$] , [returnNotesUIDocument] , [newInstance] )
newInstance -> False
Но: это только в клиенте (что естественно) и док должен быть открыт в отдельном окне (если в фрейме - будет открыт в новом окне и всё обломится)
 

swyatogor

Lotus team
24.02.2014
479
10
#14
Set notesUIDocument = notesUIWorkspace.EditDocument( [editMode] , [notesDocument] , [notesDocumentReadOnly] , [documentAnchor$] , [returnNotesUIDocument] , [newInstance] )
newInstance -> False
и вот это не фига не закрыть док.. вроде как открыть.. инстанс просто выбирает или новую вкладку (окно - в зависимости от настроек) или в существующем..
 

maliy

Well-known member
20.03.2007
164
2
#17
есть док, у него ответный. открыл ответный, пытаюсь с главного перевести фокус на открытый ответный и закрыть его, не выходит
Set dc = curdoc.Responses
Set doc = dc.GetFirstDocument

Set uidoc = ws.EditDocument( False, doc , True , , True, False )
Call uidoc.Close(False)
Почему не закрывает?
 

savl

Lotus team
28.10.2011
2 136
105
#18
1. пока документ откроется контекст уже меняется, вроде как
2. Зачем так делать? Открыть и закрыть... Обновить что ли хотите?
 

maliy

Well-known member
20.03.2007
164
2
#19
2. пользователь вдруг не закрыл ответ, а главный изменился, вот нужно ответ переоткрыть, синхронизируются поля с главным.
в итоге мне нужно перевести фокус на открытый ответ и закрыть этот ответ. ничего хитрого. Но и тут засада.
 

savl

Lotus team
28.10.2011
2 136
105
#20
эээ... если ответ уже открыт на экране, то этим кодом происходит следующее:
открывается новое окно с ответом, переноса фокуса нет есть два окна с одним документом, затем идет закрытие нового окна, а старое остается.
В примере кода Вы открываете первый ответ, а если открыт третий? Так что в данном случае тупиковый путь.

Где-то здесь был код JS-таймера, можно с его помощью сделать проверку изменения родительского документа из ответа и если он изменился - выбрасывать msgbox с просьбой переоткрыть документ. Коротко функция на JS нажимает кнопку на форме, в кнопке код для получения родительского документа.
Либо принудительно закрывать ответ и открывать его снова.
НО: использование JS в клиенте может привести к падению клиента, так что решение на свой страх и риск, но в текущей ситуации может сработать.