Да, если категоризованных колонок больше одной, ситуация иная.Есть вид с 2-мя категоризированными колонками
Если первый аргумент у GetAllDocumentByKey -- скаляр (строка например), получается как вы и сказали -- документы первой вложенной категории.
Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.
Ключевые ответы обсуждения и их оценка появятся здесь.
Участники с сильными ответами в этой теме появятся здесь.
Да, если категоризованных колонок больше одной, ситуация иная.Есть вид с 2-мя категоризированными колонками
ну здесь от восприятия зависитЦитата:
(lmike @ 2:06:2010 - 14:47) *
взять вьюшный навигатор
Простите, а что значит "взять" и чем оно отличается от "создать"?
Сие требует экспериментального подтверждения. В первом случае создаётся навигатор для всех записей представления, во втором случае ищется нужная категория и в навигатор помещаются только её записи. Для больших представлений второе скорее всего работает быстрее, а памяти кушает уж точно меньше.с допущением, что Set NVN=NV.CreateViewNav
сделается быстрее, чем set viewNavigator = view.CreateViewNavFromCategory(doc.UniversalID)
ИМХО, нужно сравнивать не время создания навигатора, а время получение результирующей коллекции документов с использованием навигатора по всему представлению или только по категории. Причём для проверки брать представление с большим количеством документов и категорий, и категорию для экспериментов использовать не первую, а где-нибудь во второй половине (или вообще для каждой категории и потом усреднить).lmike, спасибо, на самом деле, быстрее! Для моей задачи, в принципе, производительность не критична, просто стараюсь всегда делать правильно.
Может речь идёт о CaretNoteID?Что касается использования изначально пустых коллекций и их создания с помощью GetProfileDocCollection, так это не глупость, иногда это удобно. Использую, например, когда получил документ по CaretCategory - засовываю его в коллекцию, - последующий код унифицируется, т.е. я не ставлю потом проверок типа "если был выделен 1 документ, то выполняем опереции с ND, а если несколько, то с NDC", все последующие процедуры работают без этих ненужных условий - по коллекции.
Set docs = UIView.Documents
If docs.Count = 0 Then Call docs.AddDocument(db.GetDocumentByID(UIView.CaretNoteID))
... 'обработка коллекции docs
А чего не использовать notesDatabase.UnprocessedDocuments?Может речь идёт о CaretNoteID?
В описанной ситуации обычно сперва получают коллекцию выделенных в представлении документов и если она пуста, тогда обращаются к CaretNoteID. В этом случае, кмк, излишне получать пустую коллекцию с помощью GetProfileDocCollection, проще сделать так:
Эээ...VladSh
переходите на классы, не мучайте колекции :ya_lamo:
срочно бросайте куритьЭээ...
Класс - объект клиентский, in-memory (односвязный список).
В то время как коллекция - СЕРВЕРНЫЙ. По запросу клиента в уме у сервера создаётся курсор, через который осуществляет навигацию по коллекции (как в "настоящих" СУБД).
Т.е. размер коллекции НЕ ОГРАНИЧЕН памятью клиента
С таким же успехом я могу утверждать, что я самый умный. Какой такой "твой" класс? Почему вдруг он лучше NotesDocCol? Как туда попадают документы? Стандартные операции умеют возвращать документы собранные в "твой" класс?лотусиная колекция ничем не отличается от моего класса
1 не создаётся - а получает вьюшечный индексВ первом случае создаётся навигатор для всех записей представления
Лотусиный класс - это, утрируя, 3 метода:срочно бросайте курить
лотусиная колекция ничем не отличается от моего класса, мало того, используя бинарное дерево новые обьектв вносятся в колекцию УЖЕ сортированно
и еще раз чем серверная колекция отличается от клиентской?![]()
А если массив с одним элементом? После глюка с GetDocumentByKey всегда передаю массив.Если первый аргумент у GetAllDocumentsByKey -- скаляр (строка например), получается как вы и сказали -- документы первой вложенной категории.
VladSh
переходите на классы, не мучайте колекции![]()
Покажите, где я сортирую коллекции? И где о том, что я не использую классы??На обычные.На какие классы переходить? Уточните, пожалуйста, Ваш ответ, уважаемый![]()
Я нигде не сортирую коллекцию. Если нужно отсортировать(для отчета), то пихаю нужные данные в класс. В классе использую список и массив с индексами. Сортирую на этапе добавления инфы.
Вы как-то первопричину забыли, колекция нужна а именно сортированная колекция чаще всего для какого-то отчета.Лотусиный класс - это, утрируя, 3 метода:
- Запрос к серверу на СОЗДАНИЕ КОЛЕКЦИИ В УМЕ СЕРВЕРА (на самом деле - даже не в уме, а в дисковом кэше. И коллекция не самих док-тов, а, типа, NoteID-ов)
- Запрос к серверу на получение 1-го док-та
- Запрос к серверу на получение +1 док-та
Ваш класс:
- Запрос к серверу на создание коллекции
- 1000 запросов к серверу на перекачку ВСЕХ док-тов коллекции в ум к клиенту
- методы для навигации по объектам в памяти
Никакой разницы
Ты не гони, коллекция не сортируется пользователем. Вообще это свойство IsSorted класса NotesDocumentCollection устанавливается при определенном условии.Формирование же сначала лотусиной колекции да еще и сортированной приводит к тому, что вы обращаетесь к доку дважды(трижды и т.д.) - запихиваете его в колекцию, потом работаете с ним.
Т.е. классы всё те же -Простыми словами однопроходный способ всегда рулит![]()
Да )) Более того, иногда возникает ощущение, что оно живёт какой-то своей жизнью...)))сообщение Влада было о том, что этот параметр меняется вне соответствия условию, описанному в справке.
Если я правильно его понял ))