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

  • Автор темы Автор темы swyatogor
  • Дата начала Дата начала
2. пользователь вдруг не закрыл ответ, а главный изменился, вот нужно ответ переоткрыть, синхронизируются поля с главным.
в итоге мне нужно перевести фокус на открытый ответ и закрыть этот ответ. ничего хитрого. Но и тут засада.
всё закроет, однозначно, но респонз должен быть уже сохранён!!!

и, кста, нет ли у этого дока ещё респонзов (тогда искомый - не обязательно первый)
и нотус его (просто "первый") откроет и сразу закроет
 
Последнее редактирование:
ws.EditDocument( False, doc , True , , True, False )
newinstace=False . по логике док не должен еще раз открываться.
а если открыт третий?
циклом перебираю все ответы
есть главный - сохранен. ответ сохранен. открыл ответ. открыл главный - внес изменения и кнопку нажал чтоб поля синхронизировались и ддоки ответные закрылись а не закрывает. Или EditDocument опять "фича" лотуса?
 
JS- таймер может и хорошо. Но как Вы сами сказали возможно - "падение клиента" - уже не радует. Хотелось бы рабочее стабильное решение. Неужели это не под силам Лотусу.?!
 
Set uidoc = ws.EditDocument( False, doc , True , , True, False )
Call uidoc.Close(False)
JS- таймер может и хорошо. Но как Вы сами сказали возможно - "падение клиента" - уже не радует. Хотелось бы рабочее стабильное решение. Неужели это не под силам Лотусу.?!
не Лотусу (это фирма/брэнд) а платформе LDN - ей под силу многое (вы же знаете), давайте не будем тролить ;)
 
Задача - проще некуда:
2 документа - главный, ответный. Открыл ответ, открыл главный, нажал кнопку - изменились поля главного, и по этой кнопке хочу закрыть открытый ответ, как сделать, подскажите рабочий стабильный вариант. я не думаю, что это нетривиальная задача для платформы.
 
@maliy теперь теория, если респонс открывать кодом из родителя - можно зафиксировать uidoc и закрывать его при изменении родителя
др. словами к-л объект должен знать uidoc респонса
 
В том то и проблема как узнать uidoc респонса. в итоге никак(неудобно заставлять пользователя открывать ответный документ кнопкой, а не просто как обычно/логично/правильно - два раза щелкнуть по документу и открыть его) -> задача не решаемая.
 
Задача - проще некуда:
2 документа - главный, ответный. Открыл ответ, открыл главный, нажал кнопку - изменились поля главного, и по этой кнопке хочу закрыть открытый ответ, как сделать, подскажите рабочий стабильный вариант. я не думаю, что это нетривиальная задача для платформы.
? или
 
два раза щелкнуть по документу и открыть его)
и что-то останавливает от открытия главного сразу (на PO закрываем респонс, открываем главный, открываем, из него, респонс)
 
? или
Не, подходит.
на PO закрываем респонс
как? если мне нужен uidoc респонса чтоб закрыть, а из главного я не смогу получиться его(если не кодом открыт респонс).
 
Не, подходит.

как? если мне нужен uidoc респонса чтоб закрыть, а из главного я не смогу получиться его(если не кодом открыт респонс).
открываем респонс, узнаем главный, закрываем респонс, открываем главный, открываем респонс из главного
 
Последнее редактирование:
а из главного я не смогу получиться его(если не кодом открыт респонс).
как это??
curdoc.Responses - коллекция ВСЕХ сохранённых респонсов этого парента. Вот взять и все их позакрывать (не глядя на то, что были они открыты ранее или нет)
Открытые просто закроются, а не открытые "моргнут" (откроются и сразу ракроются)
 
Код:
Set dc = curdoc.Responses
    Set doc = dc.GetFirstDocument
    While Not doc Is Nothing

        Set uidoc = ws.EditDocument( False, doc , True ,  , True, False )
        doc.hid = curdoc.hid
         Call uidoc.Close(False)
        Set nextdoc = dc.GetNextDocument (doc )
        Set doc=nextdoc
        Set nextdoc=Nothing
    Wend
Не отрабатывает. Если открыт респонс
 
Последнее редактирование модератором:
код рабочий
но! закроет ток респонзы первого уровня. может у тебя респ, кот не закрывается, response to response ? тогда он в коллекцию не попадёт.
чтоб взять все респонзы их надо брать рекурсивно, от первого уровня респонзов (на форуме есть пример, как. поищи)
или, на открытии каждого респонза писать его юнид в буфер (user profile or MQ) и им пользоваться для закрытия из парента (или откуда хошь)
при закрытии респонза юнид из буфера удалить, канеш (на queryclose респонза или из кода парента)
 
  • Нравится
Реакции: Мыш
есть док, у него ответный. открыл ответный, пытаюсь с главного перевести фокус на открытый ответный...
Зачем переводить фокус, если фокус автоматически устанавливается на открываемый документ?
 
ну имелось ввиду фокус перевожу функцией Set uidoc = ws.EditDocument( False, doc , True , , True, False )
 
Задача - проще некуда:
2 документа - главный, ответный. Открыл ответ, открыл главный, нажал кнопку - изменились поля главного, и по этой кнопке хочу закрыть открытый ответ
Вот так бы сразу и начали - с постановки задачи, а не с вопроса о переводе фокуса.

При открытии главного из ответного на Initialize главного получаем UI-документ ответного, объект которого держим в Globals формы; жмём кнопку в главном, обновляющую главный и на ней же закрываем UI-документ ответного.

Но лучше бы такого не делать, т.к. так будут трудности при открытии главного из видов или других документов, надо будет дополнительные проверки писать, и не факт, что всё потом получится. "Необходимость" такого функционала говорит о неправильно спроектированном приложении либо о попытке на Lotus'е реализовать что-то для него не характерное (у меня когда-то была такая ошибка - заказы-работы-сметы-платежи...).
 
т.к. так будут трудности при открытии главного из видов или других документов, надо будет дополнительные проверки писать, и не факт, что всё потом получится.
судя по ответам @maliy именно так и происходит
Lotus'е реализовать что-то для него не характерное
учитывая хэпаги, теперь, нужна оговорка ;) - в "классическом" интерфейсе
 
Мы в соцсетях:

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