• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Cfd-поля пропадают после обновления

  • Автор темы Akupaka
  • Дата начала
A

Akupaka

Всем привет! :lovecodeby:

Уже не в первый раз замечаю, что при некоторых обстоятельствах пропадают CFD-поля.
Причем, на форме значение как бы светится, а вот скриптом можно уже и не достать.
Кто-нить сталкивался с таким поведением нотеса, как боролся?

Спасибо заранее!
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Сталкивался. Создал вместо них C-поля. А в QuerySave поставил SaveToDisk = False.
 
T

turumbay

Уже не в первый раз замечаю, что при некоторых обстоятельствах пропадают CFD-поля.
Причем, на форме значение как бы светится, а вот скриптом можно уже и не достать.
А обстоятельства-то какие? Могу например предположить, что в queryOpen документа их еще нет. Если так - то оно вполне логично.
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
CFD поля присутствую только при УИ - вот и все обьстоятельства
попытка обновить фоновый док зависимый от CFD приведет к трагедии :lovecodeby:
 
T

TIA

Кто-нить сталкивался с таким поведением нотеса, как боролся?
Да. Но только со скрытыми CFD. После их отображения эффект пропадал. Глюк появился в одной из 7к. Заменяли на вычисление скриптом или COFU с SaveToDisk=False
 
A

Akupaka

А обстоятельства-то какие?
Если бы я знал какие у этого нотеса внутрях обстоятельства ))
Простой пример:
- новая форма;
- на форме CFD-поле с каким-то значением;

Експеримент:
10- открываем сохраненный документ, либо создаем новый и сохраняем, чтобы в диалоге свойств документа были видны поля;
20- идем в диалог свойств документа, смотрим наше CFD-поле, любуемся;
30- закрываем диалог, нажимаем Ф9;
40- идем в диалог свойств документа, ищем наше CFD-поле, любуемся его отсутствием;
50- теперь можно разве что сохранить документ, при повторном обновлении по Ф9 поле не вернется.

Теперь добавляем на форму кнопку А с кодом, например,
Код:
@StatusBar(@Text(@Now) + ": " + CFDField1)
Повторяем експеримент:
10-40
50- теперь можно нажать кнопку А и увидим, что в панели появится правильное сообщение, и в диалоге свойств документа CFD-поле вновь будет видно;

Теперь добавляем на форму кнопку Б с кодом, например,
Код:
Dim ws As New NotesUIWorkspace
Dim doc As NotesDocument
Set doc = ws.CurrentDocument.Document
Print Now & ": " & doc.GetItemValue("CFDField1")(0)
Повторяем експеримент:
10-40
50- теперь можно нажать кнопку Б и увидим, что в панели появится правильное сообщение, и в диалоге свойств документа CFD-поле вновь будет видно;

Теперь добавляем на форму кнопку В с кодом, например,
Код:
Dim ws As New NotesUIWorkspace
Dim doc As NotesDocument
Call ws.CurrentDocument.Refresh(False)
Set doc = ws.CurrentDocument.Document
Print Now & ": " & doc.GetItemValue("CFDField1")(0)
Повторяем експеримент:
10-40
50- теперь можно нажать кнопку В и увидим, что в панели появится сообщение, но значение CFD-поля НЕ считывается, и в диалоге свойств документа CFD-поле НЕ видно;
60- снова жмем В, результат тот же;

В принципе, можно использовать ws.CurrentDocument.Refresh(TRUE), но тогда придется следить, чтобы документ не сохранялся, этот метод удачно сохраняет документ при наличии SaveOptions = "1", если я не ошибаюсь и все варианты знаю.

Но ws.CurrentDocument.Refresh(TRUE) & SaveOptions это уже workaround. А суть вопроса, почему пропадают CFD-поля при обновлении? :lovecodeby:

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

Добавлено: ToxaRat, спасибо, ниче не понял, что ты хотел сказать :please:
Естесственно, что CFD-поля работают только на УИ.

Добавлено: TIA ,
да-да-да! Я догадывался, что где-то в 7-ке впервые поймал такой глюк, но это было так давно, что я не мог вспомнить так ли это.
На скрипт не могу перенести, я CFD-поле использую для скрытия, и скрипт тут не помощник.
зы: в примере выше поле не скрыто и глючит.
зы2: шо таке COFU?
 
N

nvyush

На скрипт не могу перенести, я CFD-поле использую для скрытия, и скрипт тут не помощник.
Кое-где использую создание скриптом полей с SaveToDisk=False именно для скрытия (CFD-аналогов на форме нет). Работает.
 
A

Akupaka

Ой, туплю. Я тоже так делал, но в каких-то случаях, не помню точно, оно глючило, отказался. Может покручу еще...

Ладно, обсуждение можно считать завершенным. Основной вывод - меня таки не глючит :KillMe:
Но, если кому-то есть чего добавить, всегда пожалуйста.
 
A

Akupaka

В принципе, можно использовать ws.CurrentDocument.Refresh(TRUE)
Говнотес в действии - uidoc.Refresh(TRUE) почему-то "забывает" обновлять формулы скрытия элементов формы, хотя uidoc.Refresh(FALSE) успешно с этим справляется.
зы: не забывайте uidoc.RefreshHideFormulas()

Что я делаю не так? ;)
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 927
608
BIT
150
в квери клозе юзаю Source.FieldGetText
полагаю, что и просто uidoc.FieldGetText даст такойже эффект
 
Мы в соцсетях:

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