Хорошие ответы

Тема в разделе "Lotus - FAQ", создана пользователем hosm, 10 июн 2010.

  1. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    Привет всем!
    Периодически смотрю форум и вижу ваши хорошие, развернутые ответы на ртфмные вопросы.
    Решила наиболее общие полезности отобрать в тему, чтоб можно было иногда сослаться, а не писать самому "долго и нудно", ибо часто это просто влом... Пока тема будет жить тут.
    Ввиду некоторой глючности форумных цитат, пока буду стараться их не использовать...

    Список обсуждаемых вопросов:
    [post="174090"]Что означают разные значения IsNewDoc и IsNewNote[/post]
    [post="174092"]Поля в лотусе: поля на форме (fields) и поля в документе (items), тип поля[/post]
    [post="174096"]Получение значений поля с помощью GetItemValue (Lotusscript)[/post]
    Совместное использование NotesUIDocument и NotesDocument
    [post="184493"]Cannot create automation object.[/post]

    P.S. Много полезного можно найти по ссылкам темы "Ликбез" для великих вещей
     
  2. VladSh

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

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    Что означают разные значения IsNewDoc и IsNewNote

    > IsNewNote = True
    > IsNewDoc = False

    Нормальное поведение, если документ создаётся в бэкэнде (notesDatabase.CreateDocument), а затем открывается в UI (notesUIDocument.EditDocument), это как раз и приводит к указанному сочетанию:
    doc.IsNewNote означает, что doc не сохранён в БД
    uidoc.IsNewDoc означает, что документ открыт, а не создан посредством UI.

    Оба эти параметра = True только когда документ создаётся в UI, т.е. через Compose (notesUIWorkspace.ComposeDocument или @Command([Compose]; ...)

    (Сообщение nvy)

    Примечание: при создании документа с помощью Compose IsNewDoc бывает равно False после переоткрытия документа (например надо было обновить изменения RT-поля).
     
  3. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    Поля в лотусе: поля на форме (fields) и поля в документе (items), тип поля
    Нужно понимать, что к чему в Лотусе. Есть документ, в нём хранится информация. Есть форма, по ней документы создаются и отображаются. Не все поля, имеющиеся на форме, сохраняются в документе. И наоборот, не все поля, сохранённые в документе, отображаются на форме. Если после сохранения документа удалить поле из формы, в документе поле останется. Если добавить поле на форму, в документах оно не появится, пока их не откроют в данной форме и не пересохранят. В представлении отображаются только поля, сохранённые в документе, запросить/объединить данные из других документов Лотус не позволяет (про профили пока умолчу).
    ([post="173948"]Сообщение[/post] nvy )
     
  4. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    Получение значений поля с помощью GetItemValue (Lotusscript)
    Есть текстовое поле FieldName с опцией Allow Multiple Values, в нем заданы несколько значений.

    doc.GetItemValue("FieldName")(0) - ПЕРВОЕ значение
    doc.GetItemValue("FieldName")(1) - ВТОРОЕ значение
    ...
    doc.GetItemValue("FieldName")(N) - N-ное значение

    соответственно GetItemValue без индекса возвращает массив, и ну никак не первое значение
    [post="153876"]сообщение [/post]Morpheus

    Код (Text):
    dim s as String
    dim v as Variant
    s=doc.GetItemValue("FieldName")(0)
    v=doc.GetItemValue("FieldName")
    в v будут все значения в виде массива
    в s - только первое

    Примечание:
    Если поле без опций Allow Multiple Values, то при получении значения поля в строку используем синтаксис получения первого значения, не забываем про индекс (0)
     
  5. ToxaRat

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

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.047
    Симпатии:
    18
    или же вот так ;)
    Код (LotusScript):
    s=implode(doc.GetItemValue("FieldName"))
    ;)
    если для перебора то еще вот так
    Код (LotusScript):
    forall in1 in doc.GetItemValue("FieldName")
    print in1
    end forall
     
  6. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    При попытке создания объекта Excel.Application возникает ошибка Cannot create automation object.

    В общем запускаете из командной строки dcomcnfg. Там смотрите в свойствах DСOM приложения Excel и в Удостоверении ставите не Запускающий пользователь, а Текущий пользователь.
    [post="184478"]Сообщение[/post] NetWood
     
Загрузка...

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