скрыть Embeddedview с ответными документами

Тема в разделе "Lotus - Программирование", создана пользователем Klido, 23 ноя 2009.

  1. Klido

    Klido Гость

    Обычное дело - внедренная вьюха, показывающая ответы к данному документу (ктагоризация по униду, шоу сингл категория).
    Что-то с утра в понедельник :rolleyes: не пойму как скрыть её, если нет ни единого ответа. Для простого случая через @DbColumn работает нормально скрытие, но тут-то во вьюхе будут ответы и на другие документы и формула вроде
    @If(@Elements(@Dbcolumn("":NoCashe;"":"";"EmbeddedViewName";1))=0;"0";"1")
    не отработает корректно...
    Можно ли скрыть и куда копнуть?
     
  2. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Там должен быть @DbLookup по той же SingleCategory, по который ты ограничиваешь embedded view.
    В данный момент времени у тебя возвратится 0 только если вообще ни одного документа из эмбеднутых не существует.

    Ну и кагбэ не NoCashe, а NoCaсhe

    И вообще тут можно не делать @If
    А просто в HideFormula написать
    Код (Text):
    @Elements(@DbLookup(...)) = 0
    И текущую базу в @DbColumn/@DbLookup лучше отдавать не через "":"", а просто через ""
    Подробности туд.
     
  3. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.047
    Симпатии:
    18
    а где проверка на ошибку?
     
  4. Klido

    Klido Гость

    ага, спсб, как-то не подумал, что так проще :rolleyes: правда там ещё текст хотелось бы скрывать, одновременно с вьюхой, но это мелочи...
    тем не менее упрощенная формула прямо на вьюхе
    Код (Text):
    @Elements(@DbColumn("":NoCaсhe;"";"EmbeddedViewName";1))=0
    не дает результата - вьюха видна всегда, даже в новом документе...
    SingleCategory, понятно, в первом столбце (скрытом). Пробовал и по 2-му лукапить - тот же эффект, т.е. не хочет работать...
    Что ещё может быть?

    Добавлено:
    о, вот это сегодня меня плющит :) наверняка из-за этого не идёт...
     
  5. turumbay

    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    дык вам же ответили - юзайте не dbcolumn, а dblookup
     
  6. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    :rolleyes:
    @DbLookup и не забудь [FailSilent]
     
  7. Klido

    Klido Гость

    спсб всем - немного отвлекли от темы, но...

    формула сокрытия внедренной вьюхи (показывает ответы текущего документа)
    Код (Text):
    @Elements(@DbLookup("":NoCaсhe;"";"EmbeddedViewName";@Text(@DocumentUniqueID);2;[FailSilent]))=0
    обновление индекса вьюхи - автоматическое

    работает через раз :newconfus: для контроля вывел в вычислемое поле формы значение этой формулы...

    создаём документ - вьюха скрыта, @elements показывает 0
    создаём респонс, сохраняем его, документ, закрываем, открываем руками - вьюха скрыта, @elements показывает 0 (респонсы явно видны при просмотре вьюхи или снятия сокрытия с внедренной)

    пересохраняем документ несколько раз, добавляем ответы и пр. - в какой-то момент ррраз и вьюха видна, @elements показывает правильное значение кол-ва респонсов...

    удаляем респонсы - вьюха скрыта, @elements показывают старое значение, иногда элементы=0, а вьюха с респонсами показана...

    менял обновление индекса на auto, aftеr first use - работает сразу после переоткрытия базы - вьюха показывается, а элементы могут быть 0
    пробовал ReCache, явно убивал и перестраивал индекс вьюхи - нестабильно по-прежнему... это 8.5.1...

    порекомендовали забить и обсчитывать скриптом респонсы на открытии документа и вписывать в поле, а уже по полю скрывать вьюху... не знаю пока хорошо ли, но ведь интересует и интерфейсный refresh при добавлении 1-го респонса - чтоб вьюха показалась, а придется ещё код вешать на обновление документа...

    может ещё какой ньюанс есть с сокрытием внедренной вьюхи со скрытой категоризацией по @DocumentUniqueID?
     
  8. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Для начала NoCaсhe - в ковычки по синтаксису.
    Может в этом дело? :nomat:
     
  9. Klido

    Klido Гость

    Omh
    гм... не помогает...
     
  10. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Вообще странно, у меня точно такая же конструкция работает нормально.
    Я поставил ReCache, правда я нахдясь в форме не добавляю/удаляю респонсы.

    Но в других базах есть такая функиональность, что респонсы удаляются/добавляются при открытом доке.
    Там сделано, что это возможно только про uidoc.EditMode = True и после каждого добавления/удаления стоит uidoc.Refresh.
    Работает стабильно.

    Теоретически, я бы сам не делал ограничение на uidoc.EditMode, а сделал бы кнопку доступную всегда + uidoc.RefreshHideFormulas
     
  11. Klido

    Klido Гость

    у меня хотспот доступен только в режиме редактирования и после создания респонса, конечно, рефреш есть... но работать вот не желает, хотя остальное всё перестраивается, в т.ч. и ещё одна внедренная вьюха видимость меняет по другим флагам....
     
  12. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    А попробовать еще с вьюху рефрешить после создания респонса?
    Нечто подобное:
    Код (Text):
    'refresh embedded view
    Call evview.Refresh()
    Call w.ViewRefresh
    Call uidoc.RefreshHideFormulas
    Правда, если вьюха тяжелая - тормоза ;)
     
  13. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.047
    Симпатии:
    18
    OKEN
    Call w.ViewRefresh
    этого + автоматик в индексе вида чаще всего достаточно
     
  14. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    ToxaRat
    Тут я спросить не буду. В большинстве случаев так и делаем.
    Но в одном тяжелом случае с вьюхой, обновляемой "Auto, after first use" и пересчетом кнопок помогла именно подобная конструкция. (Хз, мож просто глючил ViewRefresh - давно проверяли. Сейчас заново с Automatic тестить влом)
     
  15. Klido

    Klido Гость

    неделя эпизодической борьбы с отображением скрытой вьюхи не принесла 100%-го результата..
    на данный момент ситуация такая - в контексте поста 7:

    внедренная вьюха по сингл-категории родителя скрыта формулой
    Код (Text):
    @Elements(@DbLookup("":"ReCaсhe";"";"EmbeddedViewName";@Text(@DocumentUniqueID);2;[FailSilent]))=0
    при новом доке вьюха скрыта - всё ОК

    в режиме редактирования хотспот выполняет код
    'всякие действия
    Код (Text):
    Call ws.CurrentDocument.Save()
    Call ws.currentdocument.Close(True)
    Delete ND
    Set ND = ns.currentdatabase.GetDocumentByID(noteID)
    'вызов агента по созданию респонсов
    If agent.Run(ND.NoteID) = 0 Then
    'всякое-разное
    Call ND.Sign()
    Call ND.save(True,False)
    Call ws.Editdocument(True, ND)
    'применяем в разных комбинациях и последовательности обновления какие есть, т.к. переоткрытие не спасет...
    Call ws.ViewRefresh
    Call ws.CurrentDocument.RefreshHideFormulas
    Call ws.CurrentDocument.Refresh
    'и даже
    Call ws.ReloadWindow
    End If
    в агенте на всякий пожарный ещё и явно бэквью рефрешу перед выходом
    Код (Text):
    Set nv=s.Currentdatabase.Getview("EmbeddedViewName")
    Call nv.Refresh()
    в итоге имеем 1 или более респонсов (сразу видны во вьюхе, если её не скрывать), но формула сокрытия не отрабатывает и вьюха не видна...

    пересохранения, переоткрытия в какой-то момент дают эффект, но зависимость не ощущается...
    чаще всего вьюха показывается даже после перовой операции сохранения, если полностью перезапустить клиента и войти под другим пользователем...
    какой-то дикий кэш? или опять я каких-нибудь кавычек не поставил куда надо?? :) сокрытие вьюхи не даёт мне покоя ;) как же заставить отрабатывать нормально...
     
  16. K-Fire

    K-Fire Гость

    ДБлукап этот в поле запихните и посмотрите что в каком случае получается. После отладки этой части уже можно идти дальше.

    Можно вместо ReCache попробовать NoCache кстати.
     
  17. Klido

    Klido Гость

    так было сначала, результат тот же

    выше в топике есть эта инфа - в поле чаще всего 0, но в какой-то момент положительное значение (не обязательно совпадает с кол-ом респонсов...) и тогда срабатывает как раз формула сокрытия...

    в том и дело, что не выходит :please: стал бы я тут постить, если б не уткнулся в непонятки....
     
  18. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Может по правам что-нить?
    Респонсы с Ридер полями генерятся?
    Должно всё работать...

    Может у тебя локальная реплика, а генеришь серверным агентом?

    Там у тебя, конечно, жестковато написано: сохранение, закрытие, запуск на документе агента, подпись, сохранение, открытие.
    Нельзя это дело как-то упростить?
     
  19. Klido

    Klido Гость

    а админ со всеми правами и пр. ладно бы под остальными не работало...

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

    не, ну это я бы заметил, да и реплик нет вообще - один экземпляр на сервере...

    начал-то с простого, добавилось остальное по факту борьбы....

    сохранение - если не сохранить, спрашивает стандартно сохранять или нет...
    закрытие - там по ходу работа с ртф и аттачами, иначе не обновить их...
    запуск агента - потому как закрываем...
    подпись - вотому как ругается на неподписанность аттачей - см. топик про это неподалёку...
    сохранение - тоже чтоб не переспрашивало в процессе...
    открытие - ну надо же его показать :please:

    упростить хотелось бы, но пока не получается даже так..

    Делов-то всего - в доке с аттачем заменить аттач новой версией, а старый сохранить в респонсе и показать во внедренной вьюхе, которая скрыта, если респонсов нет....
     
  20. VladSh

    VladSh начинающий
    Lotus team

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    На правах идеи.

    1. Лучше всего вычисляемое поле с формулой вверху формы + рефрэш дока при изменениях - должно корректно скрывать/отображать.
    Но это если действия из дока производятся, а не из вьюхи. Из вьюхи при рэфрэше 8.5.1 клиент крашится, как и раньше - я проверял; похоже исправлять это не собираются.

    2. Можно попробовать внедрённую вьюху засунуть в секцию и скрывать по формуле секцию.
    По крайней мере её можно программно свернуть! и вьюха будет не видна.
    Цвет текста секции и "треугольничек" подобрать под цвет фона формы чтобы их не было видно - я так OLE-объекты скрывал.

    Если не заработает, то переоткрывать док - я так под 6.x.x делал, т.к. тогда ничего с этим не вышло...
     
Загрузка...

Поделиться этой страницей