количество дубликатов Notesitem

  • Автор темы amigolinx
  • Дата начала
A

amigolinx

Народ, замаялся уже искать ;), подскажите, куда копать, чтобы программно определить количество дубликатов поля и, соответственно, получить к ним по отдельности доступ.
Проблемка, собственно, вот в чем. Есть большое ртф-поле, содержимое которого разбивается на несколько одноименных дубликатов. В клиенте в свойствах дока эти дубликаты видны рядышком и отдельно с кодом 0, 1... и т.д., а вот при попытке их выцепить чем-то типа doc.myField(0) или перебрать в Forall ниче не получается. И в дебаггере у этого итема вельюс отображается не как контейнер, а как единичное значение. Где тут собака порылась?
 
O

Omh

А зачем тебе эти кусочки?
По идее
Код:
Dim Item As NotesItem
Set Item = Doc.GetFirstItem("ITEM_NAME")
вернёт тебе склееный айтем.
 
A

amigolinx

Ну да, так и есть, но мне именно кусочки надо. Изврат в том, что мне нужно менять их порядок следования принудительно. Напр., сохранил я этот ртф, он разбился как ему там положено, а потом бывает так, что изначальный нормальный порядок следования этих дубликатов чето глюкаво меняется и если б я мог до них добраться по отдельности, я б им показал, как им надо строится ;), да вот никак не удается...
 
O

Omh

[off]У кого-то много свободного времени ;)[/off]
 
A

amigolinx

Ага, отбрехиваться не буду, че греха таить... Даже настолько много, что вот не причину глюков исчу, а с симптомами воюю. Но, согласись, прикольно было бы чтоб такую фишку замутить, мало ли где приспичит :)
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
Dim Item As NotesItem
Set Item = Doc.GetFirstItem("ITEM_NAME") ' взяли первый
call item.Remove ' удалили

при необходимости повторить с начала :)
 
T

TIA

@DocFields возвращает список имён полей, где дупы - отдельные элементы.

Прочитать все дупы можно удаляя очередной.
Код:
Dim Item As NotesItem
Do
Set Item = Doc.GetFirstItem("ITEM_NAME")
... Item.Values
Item.Remove
Loop While Doc.HasItem(ItemName)
Есть ещё неприятность. В НЕ SUMMARY может храниться около 64кб данных. Но размер каждого элемента массива получаемого через Values будет не более 32кб.

Omh
Мне тоже, кажется, что когда-то NotesItem.Values возвращал склеенные значения, но сейчас это не так (читай в 6,7 и 8й версии).
 
A

amigolinx

Ага, пробовал я вариант с удалением - хелп его тоже предлагает :), но все равно ниче не получается - считывает весь итем целиком, а после remove вырубает его из дока на корню со всеми остальными с тем же названием.
 
N

nvyush

Ага, пробовал я вариант с удалением - хелп его тоже предлагает :), но все равно ниче не получается - считывает весь итем целиком, а после remove вырубает его из дока на корню со всеми остальными с тем же названием.

Может DXL - экспорт поможет?
 
A

amigolinx

Может DXL - экспорт поможет?
Во-во, именно в его сторону сейчас и смотрю-верчу, кажись что-то вырисовывается. Пока наблюдается такая закономерность - каждый 5-ый <par def='1'> в нужном поле - это очередной дубликат. Тестирую дальше...
 
K

K-Fire

А почему такая проблема вообще возникает? За счет чего куски РТФа меняются местами? Признаться я ни разу на такую проблему не натыкался вообще.
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
А почему такая проблема вообще возникает? За счет чего куски РТФа меняются местами? Признаться я ни разу на такую проблему не натыкался вообще.
одноименные аттачи, баги самого РТФ поля, неправильное форматирование, не использование параграфа при создании абзаца....

причин много, обычно когда всё по правильному такого нету ;)
 
A

amigolinx

А почему такая проблема вообще возникает? За счет чего куски РТФа меняются местами? Признаться я ни разу на такую проблему не натыкался вообще.
И я вот тоже представить даже не мог себе что такое может быть. Скорей всего это из-за архитектуры базы. Она ну очччень старая, судя по ее дизайну делалась она еще задолго до даже до 5-ки. И я так подозреваю что это происходит из-за того что к ней прикручен редактор html реализованный на самописных диляльках (с конвертацией, прочисткой мусорных тегов и все такое). И вот там просто рассадник возможных глюков, как понимаешь. Сейчас все переделывается почти с нуля на платформе 8.5 (тут уже настал тот момент когда проще по новой сделать, чем исправить), а старые проблемки лезут из всех щелей - одна вроде решится, на ее место еще три появляются. Вот эта конкретно - она так, в принципе, единичного плана и с ней можно и руками бороться. Это у меня на данный момент реально времени некуда девать, так я чтоб не захиреть, нахожу себе всякие извраты, чтоб пока на "кошках тренироваться" ;).
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!