Ls Не Видит Айтемы В Документе

Тема в разделе "Lotus - Программирование", создана пользователем HelenHelen, 24 дек 2014.

  1. HelenHelen

    HelenHelen Well-Known Member

    Регистрация:
    31 авг 2011
    Сообщения:
    75
    Симпатии:
    0
    Всем доброго времени суток!

    Есть проблема.В базе есть документ с большим количеством айтемов (больше 256...). По нему работает две функции, они обращаются к айтему по имени. Код функций практически одинаков, одна сравнивает значения в айтеме по принципу равно, а другая - меньше или равно с некоторым значением (до места, где начинается разница, код не доходит :D ). При работе первой функции все ок - в документе в items от 0 до 255 и многоточие, getFirstItem отрабатывает. Во втором случае в документе у меня дебаггер показывает 24 (!!!) айтема и все, а getFirstItem, соответственно, обламывается, переменная item после присвоения пуста... В свойствах документа все айтемы тоже есть, визуально в форме есть, в других местах (как первая функции) все обращения работают... Я могу, конечно, выложить код, но по-моему, в данном случае это не сильно прояснит дело.

    В чем проблема? Ноль идей... Подскажите, пожалуйста! Заранее большое спасибо!
     
  2. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    Allow more fields in database - в свойствах БД установить
     
  3. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    А если в 1м случае работает - мож, проблема в коде? например, во временный документ отбираются только айтемы определенного типа? Например, только даты.

    Добавлено: Еще варианты - меняется контекст и проверяется другой документ с меньшим количеством полей, поля зашифрованы и нет ключа или поля в секции и нет доступа.
     
  4. HelenHelen

    HelenHelen Well-Known Member

    Регистрация:
    31 авг 2011
    Сообщения:
    75
    Симпатии:
    0
    Код одинаковый практически, в том-то и дело:

    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Работает</div></div><div class="sp-body"><div class="sp-content">
    Код (LotusScript):
    Function conditionEqual (routeDoc As NotesDocument,doc As NotesDocument) As String
    Dim item As NotesItem

    conditionEqual = "0"

    Set item = doc.Getfirstitem(routeDoc.condActFieldToCheck(0))

    Print "conditionEqual " + item.name

    ForAll vl In item.Values
    If CStr(vl) = CStr(routeDoc.condActValueToCheckFor(0)) Then
    conditionEqual = "1"
    Exit Function
    End If
    End ForAll

    End Function
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Не работает</div></div><div class="sp-body"><div class="sp-content">
    Код (LotusScript):
    Function conditionGreaterOrEqual (routeDoc As NotesDocument,doc As NotesDocument) As String
    Dim item As NotesItem

    conditionGreaterOrEqual = "0"

    Print "Поле " + routeDoc.condActFieldToCheck(0)

    Set item = doc.Getfirstitem(routeDoc.condActFieldToCheck(0))

    Print "conditionGreaterOrEqual" + item.name

    ForAll vl In item.Values
    If CDbl(vl) >= CDbl(routeDoc.condActValueToCheckFor(0)) Then
    conditionGreaterOrEqual = "1"
    Exit Function
    End If
    End ForAll

    End Function
    Док передается как параметр, поэтому подмену сложно представить. Более того, я по юниду дока снова получала документ из базы, как раз на случай, что он почему-то переопределился - все то же самое. Отбора айтемов тоже никакого нет, это просто то, что видно в документе, когда он загружается в переменную. К тому же там разного типа айтемы присутствуют...
     
  5. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.052
    Симпатии:
    146
    HelenHelen
    Где-то я уже это видел... Де жа вю...
    В документе точно есть поле, которое содержится тут: routeDoc.condActFieldToCheck(0)
    Что это за поле? Какое у него имя?
    Между этими функциями ничего не происходит? Может быть идет подмена документа с одного на другой.
    Отдельно в кнопке пробовали? Последовательный вызов этих функций.
    P.S. В магию я верю, но не в чудеса.
     
  6. HelenHelen

    HelenHelen Well-Known Member

    Регистрация:
    31 авг 2011
    Сообщения:
    75
    Симпатии:
    0
    routeDoc - документ с настройками, в этом поле указано имя айтема из дока, с которым нужно работать (имя MKK_decision), оно есть в документе.
    Они и так последовательно работают.
    Что касается подмены, то это 100% не происходит, потому что в базе у всех документов по этой форме столько полей, а то, что документ нужной формы, тоже не вызывает сомнений, потому что в других формах нет тех айтемов, что показываются в документе (те 24)...
     
  7. Мыш

    Мыш Lotus team
    Lotus team

    Регистрация:
    12 фев 2008
    Сообщения:
    1.020
    Симпатии:
    8
    Проблемы с памятью? Перебираете большую коллекцию - а объекты удаляете?
     
  8. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.052
    Симпатии:
    146
    HelenHelen
    Если это на конкретном документе:
    Возможно это битый документ.
    Возможно в нем стоит saveOptions = "1".
    Возможно достаточно будет пересохранить документ.
    Если на всех: пока загадка...
     
  9. Constantin A Chervonenko

    Constantin A Chervonenko Well-Known Member

    Регистрация:
    30 май 2006
    Сообщения:
    1.288
    Симпатии:
    0
    чОрт.. Дома у меня LN сейчас нету - в док-цию заглянуть.

    Что-то меня во втором примере преобразование смущает: CStr определено для всех типов данных и всех значений, а CDbl??

    PS: а где обработка ошибок?
     
Загрузка...
Похожие Темы - Не Видит Айтемы
  1. paxac
    Ответов:
    0
    Просмотров:
    48
  2. HAIRY
    Ответов:
    2
    Просмотров:
    97
  3. Devil
    Ответов:
    4
    Просмотров:
    345
  4. MOHAX
    Ответов:
    0
    Просмотров:
    491
  5. Cleric-Lviv
    Ответов:
    1
    Просмотров:
    476

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