Computed For Display Field

  • Автор темы Автор темы iivvnn
  • Дата начала Дата начала
I

iivvnn

Странная ситуация:
при создании документа прописываю в поле City значение. Открыл сохраненный документ ScanEZ - все норма поле есть (текст) - с значением "Москва".
На форме есть еще мультиполе lstPeople типа cmpfordsp в формуле которого @DbLookup берет значения из колонки вида, ключем для поиска является значение поля City.
При открытии документа выдает ошибку "lstPeople entry not Found in index"
убрал формулу поля - в постопен документа вывожу мессежбоксом значение поля City - виводит пустую строку!!!!! Куда смотреть?
 
Формулы вычисляются слева-направо-сверху-вниз, т.е. cfd поле должно быть после поля City. Далее, проверьте "C" и "y" — не кириллица ли случайно?
 
наверно первое значние пустышка - а её в виде нет, вот и ругается
Ладно отбросим cfd поле.
Как такое может быть: в списке полей есть текст поле, которому присвоено значение (смотрю и через ScanEZ и через свойства документа - все четко).
На форме есть соотв поле (текст) с аналогичным названием - открываю документ - отображается пусто. Ту же пустоту выдает MessageBox(uidoc.document.City(0))
Имена полей перепроверил 100 раз. Уже 3 часа бьюсь над этой мистикой!!! Хелп ми!!!
 
в постопен документа вывожу мессежбоксом значение поля City - виводит пустую строку
С полем можно вытворить массу удивительных вещей на открытии формы...
А чего кажет этот messageBox, если его двинуть в queryOpen?
 
Случайно нет на форме cfd поля с формулой @SetField или FIELD City := "" | @DeleteField | @Unavailable
 
Если все так, как рассказываешь, то самое простое и первоочередное - перегрузиться и грохнуть cache.ndk :)
 
а дебагер, как и сканЕз, тоже поле отображает нормально?

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

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

Есть масса вариантов. Например, если это самое поле на форме с аналогичным названием является вычисляемой для показа (CFD) и формула у него - пустая строка. Пока документ не открыт в интерфейсе, формула не работает и отображается хранимое значение. Как только документ открыл в интерфейсе - применилась формула поля и перезатёрла храниемое значение. Поэтому и интерфейсный метод UIdoc.document.City(0) возвращает пустоту
 
если UIdoc.document.City(0) возвращает пустоту, то и ScanEz по идеи должен вернуть пустоту, разве нет?
 
не факт, может быть вариант, если значение мультивалью и пустое только 0-е значение City(0), а заполнено, например, City(1). Такое может быть при ошибочном использовании NotesItem.AppendToTextList
 
Второй день долбусь - ничего из вышеперечисленного не подходит.
Ситуация: есть два документа - созданные по одной форме. У обеих есть и заполненное (одно и то же значение) поле City. (показывает ScanEZ и через свойства документа)
cfd поле (lstPeople) на форме берет в качестве ключа это поле City. Один документ открывается нормально, второй выдает ошибку Field lstPeople: Entry not found in index
На квериопен messagebox для первого документа выдает значение поля City для второго видает пусто.
Беру втупую через ScanEZ удаляю поле City из глючного дока и копирую это поле сюда же из первого. Та же самая хрень!!!!

формула lstPeople @DbLookup формирует список из вьюхи ключем для поиска и есть поле City
 
А через дебагер в "глючном" документе поле City пустое?
 
Заполнено?! А doc.getItemValue("City")(0) при этом возвращает пусто???
 
Заполнено?! А doc.getItemValue("City")(0) при этом возвращает пусто???
Да!!!! Я вижу поле в документе (обычное текстовое поле - не массив), вижу что там значение "Донецк", но
MessageBox(uidoc.Document.GetItemValue("City")(0)) = "" (сам в шоке)
 
Да!!!! Я вижу поле в документе (обычное текстовое поле - не массив), вижу что там значение "Донецк", но
MessageBox(uidoc.Document.GetItemValue("City")(0)) = "" (сам в шоке)

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

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

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

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
 
и не увидите, в бекэнд-документе поля 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 = "Донецк")
 
Мы в соцсетях:

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

Популярный контент