Computed For Display Field

Тема в разделе "Lotus - Программирование", создана пользователем iivvnn, 22 май 2012.

  1. iivvnn

    iivvnn Active Member

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

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Формулы вычисляются слева-направо-сверху-вниз, т.е. cfd поле должно быть после поля City. Далее, проверьте "C" и "y" — не кириллица ли случайно?
     
  3. ToxaRat

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

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.047
    Симпатии:
    18
    наверно первое значние пустышка - а её в виде нет, вот и ругается
     
  4. iivvnn

    iivvnn Active Member

    Регистрация:
    7 сен 2011
    Сообщения:
    37
    Симпатии:
    0
    Ладно отбросим cfd поле.
    Как такое может быть: в списке полей есть текст поле, которому присвоено значение (смотрю и через ScanEZ и через свойства документа - все четко).
    На форме есть соотв поле (текст) с аналогичным названием - открываю документ - отображается пусто. Ту же пустоту выдает MessageBox(uidoc.document.City(0))
    Имена полей перепроверил 100 раз. Уже 3 часа бьюсь над этой мистикой!!! Хелп ми!!!
     
  5. turumbay

    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    С полем можно вытворить массу удивительных вещей на открытии формы...
    А чего кажет этот messageBox, если его двинуть в queryOpen?
     
  6. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Случайно нет на форме cfd поля с формулой @SetField или FIELD City := "" | @DeleteField | @Unavailable
     
  7. doka

    doka Well-Known Member

    Регистрация:
    18 фев 2010
    Сообщения:
    118
    Симпатии:
    0
    Если все так, как рассказываешь, то самое простое и первоочередное - перегрузиться и грохнуть cache.ndk :)
     
  8. iivvnn

    iivvnn Active Member

    Регистрация:
    7 сен 2011
    Сообщения:
    37
    Симпатии:
    0
    В таких странных ситуациях я в первую очередь так и делаю
     
  9. doka

    doka Well-Known Member

    Регистрация:
    18 фев 2010
    Сообщения:
    118
    Симпатии:
    0
    а дебагер, как и сканЕз, тоже поле отображает нормально?

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

    perem тоже пустая?
     
  10. TIA

    TIA :-)
    Lotus team

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

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

    doka Well-Known Member

    Регистрация:
    18 фев 2010
    Сообщения:
    118
    Симпатии:
    0
    если UIdoc.document.City(0) возвращает пустоту, то и ScanEz по идеи должен вернуть пустоту, разве нет?
     
  12. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    не факт, может быть вариант, если значение мультивалью и пустое только 0-е значение City(0), а заполнено, например, City(1). Такое может быть при ошибочном использовании NotesItem.AppendToTextList
     
  13. iivvnn

    iivvnn Active Member

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

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

    doka Well-Known Member

    Регистрация:
    18 фев 2010
    Сообщения:
    118
    Симпатии:
    0
    А через дебагер в "глючном" документе поле City пустое?
     
  15. iivvnn

    iivvnn Active Member

    Регистрация:
    7 сен 2011
    Сообщения:
    37
    Симпатии:
    0
    Заполненное!!!
    Забыл сказать что и первый и глючнутый документ создаются одним и тем же куском кода
     
  16. doka

    doka Well-Known Member

    Регистрация:
    18 фев 2010
    Сообщения:
    118
    Симпатии:
    0
    Заполнено?! А doc.getItemValue("City")(0) при этом возвращает пусто???
     
  17. iivvnn

    iivvnn Active Member

    Регистрация:
    7 сен 2011
    Сообщения:
    37
    Симпатии:
    0
    Да!!!! Я вижу поле в документе (обычное текстовое поле - не массив), вижу что там значение "Донецк", но
    MessageBox(uidoc.Document.GetItemValue("City")(0)) = "" (сам в шоке)
     
  18. RAJ

    RAJ Well-Known Member

    Регистрация:
    17 янв 2007
    Сообщения:
    440
    Симпатии:
    0
    и не увидите, в бекэнд-документе поля Computed for Display не будет.

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

    doka Well-Known Member

    Регистрация:
    18 фев 2010
    Сообщения:
    118
    Симпатии:
    0
    ;)

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

    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
     
  20. iivvnn

    iivvnn Active Member

    Регистрация:
    7 сен 2011
    Сообщения:
    37
    Симпатии:
    0
    Отойдем от 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 = "Донецк")
     
Загрузка...
Похожие Темы - Computed For Display
  1. garrick
    Ответов:
    29
    Просмотров:
    1.842
  2. lionk
    Ответов:
    1
    Просмотров:
    1.164
  3. doka
    Ответов:
    0
    Просмотров:
    1.041
  4. Gor
    Ответов:
    4
    Просмотров:
    2.680
  5. Medevic
    Ответов:
    5
    Просмотров:
    3.401

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