Computed For Display Field

iivvnn

Active Member
07.09.2011
37
0
32
#1
Странная ситуация:
при создании документа прописываю в поле City значение. Открыл сохраненный документ ScanEZ - все норма поле есть (текст) - с значением "Москва".
На форме есть еще мультиполе lstPeople типа cmpfordsp в формуле которого @DbLookup берет значения из колонки вида, ключем для поиска является значение поля City.
При открытии документа выдает ошибку "lstPeople entry not Found in index"
убрал формулу поля - в постопен документа вывожу мессежбоксом значение поля City - виводит пустую строку!!!!! Куда смотреть?
 

iivvnn

Active Member
07.09.2011
37
0
32
#4
наверно первое значние пустышка - а её в виде нет, вот и ругается
Ладно отбросим cfd поле.
Как такое может быть: в списке полей есть текст поле, которому присвоено значение (смотрю и через ScanEZ и через свойства документа - все четко).
На форме есть соотв поле (текст) с аналогичным названием - открываю документ - отображается пусто. Ту же пустоту выдает MessageBox(uidoc.document.City(0))
Имена полей перепроверил 100 раз. Уже 3 часа бьюсь над этой мистикой!!! Хелп ми!!!
 
#5
в постопен документа вывожу мессежбоксом значение поля City - виводит пустую строку
С полем можно вытворить массу удивительных вещей на открытии формы...
А чего кажет этот messageBox, если его двинуть в queryOpen?
 

doka

Well-Known Member
18.02.2010
118
0
Владимир
#7
Если все так, как рассказываешь, то самое простое и первоочередное - перегрузиться и грохнуть cache.ndk :)
 

doka

Well-Known Member
18.02.2010
118
0
Владимир
#9
а дебагер, как и сканЕз, тоже поле отображает нормально?

.....
set perem = doc.getitemvalue("City")(0)
msgbox "Название города - " + perem

perem тоже пустая?
 

TIA

:-)
Lotus team
15.05.2009
790
1
#10
>Как такое может быть: в списке полей есть текст поле, которому присвоено значение (смотрю и через ScanEZ и через свойства документа - все четко).
>На форме есть соотв поле (текст) с аналогичным названием - открываю документ - отображается пусто. Ту же пустоту выдает MessageBox(uidoc.document.City(0))

Есть масса вариантов. Например, если это самое поле на форме с аналогичным названием является вычисляемой для показа (CFD) и формула у него - пустая строка. Пока документ не открыт в интерфейсе, формула не работает и отображается хранимое значение. Как только документ открыл в интерфейсе - применилась формула поля и перезатёрла храниемое значение. Поэтому и интерфейсный метод UIdoc.document.City(0) возвращает пустоту
 

doka

Well-Known Member
18.02.2010
118
0
Владимир
#11
если UIdoc.document.City(0) возвращает пустоту, то и ScanEz по идеи должен вернуть пустоту, разве нет?
 

hosm

* so what *
18.05.2009
2 442
9
42
Kiev, Ukraine
#12
не факт, может быть вариант, если значение мультивалью и пустое только 0-е значение City(0), а заполнено, например, City(1). Такое может быть при ошибочном использовании NotesItem.AppendToTextList
 

iivvnn

Active Member
07.09.2011
37
0
32
#13
Второй день долбусь - ничего из вышеперечисленного не подходит.
Ситуация: есть два документа - созданные по одной форме. У обеих есть и заполненное (одно и то же значение) поле City. (показывает ScanEZ и через свойства документа)
cfd поле (lstPeople) на форме берет в качестве ключа это поле City. Один документ открывается нормально, второй выдает ошибку Field lstPeople: Entry not found in index
На квериопен messagebox для первого документа выдает значение поля City для второго видает пусто.
Беру втупую через ScanEZ удаляю поле City из глючного дока и копирую это поле сюда же из первого. Та же самая хрень!!!!

формула lstPeople @DbLookup формирует список из вьюхи ключем для поиска и есть поле City
 

iivvnn

Active Member
07.09.2011
37
0
32
#17
Заполнено?! А doc.getItemValue("City")(0) при этом возвращает пусто???
Да!!!! Я вижу поле в документе (обычное текстовое поле - не массив), вижу что там значение "Донецк", но
MessageBox(uidoc.Document.GetItemValue("City")(0)) = "" (сам в шоке)
 

RAJ

Well-Known Member
17.01.2007
440
0
38
Украина, Днепр
#18
Да!!!! Я вижу поле в документе (обычное текстовое поле - не массив), вижу что там значение "Донецк", но
MessageBox(uidoc.Document.GetItemValue("City")(0)) = "" (сам в шоке)
и не увидите, в бекэнд-документе поля Computed for Display не будет.

получайте через uidoc.FieldGetText("City")
 

doka

Well-Known Member
18.02.2010
118
0
Владимир
#19
;)

НУ а если так, то что выводит?

Dim per, per1 as variant
Set uidoc = ws.Currentdocument
Set doc = uidoc.Document

per = uidoc.Fieldgettext("City")
MsgBox per

per1 = doc.Getitemvalue("City")
MsgBox(Join(per1))

Добавлено: >и не увидите, в бекэнд-документе поля Computed for Display не будет.

Так City же Editable
 

iivvnn

Active Member
07.09.2011
37
0
32
#20
и не увидите, в бекэнд-документе поля Computed for Display не будет.

получайте через uidoc.FieldGetText("City")
Отойдем от cfd поля (lstPeople).
Поле City это не cfd поле! Это обичное computed поле (текст), значение которого вносится во время создания документа:
Добавлю последовательность действий:
set doc = new notedocument (db)
doc.City = "Донецк"
Потом я открываю doc через dialogbox (на квериопен формы по которой открываю doc повесил messabox(Source.Document.City(0)))
сообщение показывает "Донецк" - все путем.
Вношу пару значений в форму диалога (парметер пердавать поля в док) - Ок
В дебаггере видно по прежнему что doc.City = "Донецк"
call doc.Save(true, false)
Открываю этот сохранившийся док во вьюхе - опять срабатывает квериопен - хера - пусто!!! (хотя через scanEZ вижу City = "Донецк")