Список Прикрепленных Файлов На Форме

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

  1. iosif88

    iosif88 Well-Known Member

    Регистрация:
    14 окт 2009
    Сообщения:
    97
    Симпатии:
    0
    Может быть есть у кого рецепт или идея как сделать такое:

    К форме могут прикрепляться различные файлы (их число заранее неизвестно).
    Желательно представить эти attachment-ы в виде списка для того чтобы пользователю было удобно с ними работать (открыть или сохранить необходимый ему файл из списка, прикрепить новый attachment и.т.д)
    Все это должно работать в десктопном клиенте Notes.

    Вот примерный вид как это могло бы выглядеть (скрины взяты с web-сайта, понятно что на Lotuse вид может быть другой, суть в том чтобы было в виде списка)

    [​IMG]

    [​IMG]

    Есть у кого идеи как это можно сделать в Lotus ?
     
  2. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    Многие делают вложения одтельно от обрабатываемого документа. Часто даже в отдельной БД.
    Если вложения будут отдельными документами в той же БД, то встроенный вид - как хочешь, так и представляй.
    Если в другой БД, придется играться с отображением и работой со списком вложений через поля, формировать удобочитаемый вид и т.п.
    Если есть возможность глянуть как работает Босс-Референт, то можно увидеть наглядно как это реализовано, но там весьма сложная реализация (если мало опыта) ввиду сложного функционала.
     
  3. iosif88

    iosif88 Well-Known Member

    Регистрация:
    14 окт 2009
    Сообщения:
    97
    Симпатии:
    0
    К сожалению вложения это обычные файлы (в основном MS Word файлы, возможно и небольшие архивы zip )
     
  4. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    В QueryOpen документа пробегайтесь по notesRichTextItem.EmbeddedObjects и формируйте список в поле списка. Можно также выводить в диалоге.
    Для списка удобно использовать моноширинный шрифт.
     
  5. iosif88

    iosif88 Well-Known Member

    Регистрация:
    14 окт 2009
    Сообщения:
    97
    Симпатии:
    0
    nvy,
    спасибо за совет.
    Остается самый главный вопрос как сделать этот список динамическим?
    Т.е. задача чисто интерфейсная.
    При добавлении нового файла в списке должно появляется новая строка.
    Пользователь может выделять нужную ему строку и нажав на кнопку "открыть" приаттаченный файл(выделенная строка) должен открываться.

    Обычный ListBox для этого не подходит, так как не позволяет выделять строку в режиме чтения
     
  6. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    qwerty
    у доджо есть возможность рисования таблички. возможно, через икспейджи это можно заюзать на клиенте? И еще - если для винды - где-то юзали через эмбеддед едитор форму, на которой стандартный ListView control.
     
  7. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    >Остается самый главный вопрос как сделать этот список динамическим?
    Что насчёт NotesUIWorkspace.Prompt с type = PROMPT_OKCANCELLIST (4) или PROMPT_OKCANCELLISTMULT (7)
     
  8. Cleric-Lviv

    Cleric-Lviv Lotus team
    Lotus team

    Регистрация:
    3 янв 2008
    Сообщения:
    605
    Симпатии:
    0
    qwerty я б на вашем месте послушал Akupaka. етот вариант очен прост в реализации и отвечает вашим требованиям на 100%. но если ваши юзера работают через веб тогда уж слушайте OKEN и пробуйте через xPages
     
  9. Constantin A Chervonenko

    Constantin A Chervonenko Well-Known Member

    Регистрация:
    30 май 2006
    Сообщения:
    1.288
    Симпатии:
    0
    Видел в одной СЭД такую реализацию: в форму внедряется MS Control вместо "родного".
    Функционал - именно тот, что тебе требуется, НО:
    1.Этот COM (реализующий контрол) есть НЕ НА ВСЕХ клиентах (зависит от установленного MS-софта)
    2.Глюки с именами файлов в национальной кодировке и др.редкими символами (типа кавычек)
     
  10. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    > При добавлении нового файла в списке должно появляется новая строка.
    Что мешает обновить список после добавления вложения?

    > Пользователь может выделять нужную ему строку и нажав на кнопку "открыть" приаттаченный файл(выделенная строка) должен открываться.
    > Обычный ListBox для этого не подходит, так как не позволяет выделять строку в режиме чтения
    Можно открывать не сам документ, а "на лету" создавать его двойника (без вложений, разумеется) и открывать его в режиме редактирования.

    Но, кмк, лучше всё-таки через внедрённое представление.
     
  11. iosif88

    iosif88 Well-Known Member

    Регистрация:
    14 окт 2009
    Сообщения:
    97
    Симпатии:
    0
    Решил так и делать, но столкнулся с такой проблемой.

    Предположим пользователь открыл главный документ (заявка).
    Начал прикреплять файлы - т.е. создаются дочерние доки с вложениями.

    Возникают две проблемы.

    1)Что делать если пользователь решил не сохранять главный документ (т.е. по сути вложения файлов отменяются) - дочерние доки с вложениями ведь уже сохранены.

    2)Предположим что пользователь прикрепил уже несколько файлов но не сохранил (продолжает добавлять файлы), другой пользователь открывший этот док на просмотр будет видеть во внедренном представлении дочерние доки-вложения не сохраненного документа (проблема по сути вытекает из первой)


    Если же создавать дочерние документы-вложения только на сохранение главного документа, то снова возникает та же проблема а как показывать редактирующему пользователю прикрепляемые им в данный момент файлы.
     
  12. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Не давать добавлять вложения без сохранения главного документа.
    Или при сохранении вложения сохранять главный документ.
     
  13. VladSh

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

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    Вроде можно было на HTML табличку забабахать, в которой отображать ссылки на доки вложенные в этот же документ. Или нет?
     
  14. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    VladSh
    можно, но надо при изменении переоткрывать в лотусе документ, емнип
     
  15. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    Как мне кажется, лучше тут без родственной связи обойтись. Привязку делать по ключу, например, по униду документа к которому создаются вложения. Представление отображающее вложения соответственно отображать с фильтром по ключу.
    Правда, если нужно отображать где-то в других видах подчиненность, то придется симмулировать родственную связь через т.з. "Default $REF"
    В общем, свои плюсы и минусы. Возможно мой опыт не совпадает с общепринятым. Но чем меньше родственных связей, тем лучше :gigi:

    Придется играть с перегрузкой документа, кто знает, будет ли это удобней. Плюс оно постоянно норовит криво отображаться... Я этот способ ставлю в конец очереди.

    1. Можно отмечать вложения как временные. При сохранении главного документа - убирать флаг в документах вложений. Если не сохранили, то либо улавливать данный момент и удалять документы вложений, либо каким-то шедульным агентом удалять время от времени, например, ночью, когда все спят =)

    Проще всего, как писал Medevic, не давать до сохранения главного документа впервые, добавлять вложения.

    2. Аналогично, отметка отображающая документ вложений всем пользователям или только автору. Тут придется играть с фильтрацией данных в представлении или ограничивать доступ на чтение этих "несохраненных" документов вложений только узкому кругу лиц - автору, админам (роль!), серверу.

    Хотя, если честно, то второй проблемы я не вижу. Пользователь одновременно работает либо с главным документом, либо с документом вложения. Т.е. если он нажал кнопку создать вложение, указал файл, нажал сохранить вложение (или как там у тебя реализован порядок), т.е. как только он согласился, что именно этот файл он добавляет в текущий момент, то вложение сразу становятся доступны другим пользователям, без необходимости сохранять главный документ при добавлении вложения.
    Но, правила игры следует озвучить заранее! Пользователи должны быть уведомлены, что система работает именно так, как ты реализуешь, что вложения могут быть добавлены во время просмотра и т.п. Либо, должны быть оговорены и реализованы ограничения, например, пока документ на стадии добавления вложений, другие пользователи его не видят.
     
  16. VladSh

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

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    "Перегрузкой", - в смысле "переоткрытием"? Так с этим проблем уж давно нет, тем более сейчас, когда пользователи даже заметить не успевают, что док "дёрнулся". Серьёзная проблема при переоткрытии одна - если надо открыть сложную форму с таблицами, секциями, в том же состоянии, в котором она была до закрытия..
    Мне наоборот именно этот вариант нравится. т.к. не надо городить огород на пустом месте. Причём, если проект когда-то будет под web, то код для отображения, считай, есть.
     
  17. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    Да это огород и есть, в отличии от встроенного вида. Это костыли для красивого отображения ссылок на документы, если документы находятся в другой БД (если рассматривать конкретно данный случай применения).
    А с переоткрытием как таковым проблем нет, есть проблемы с корректной обработкой этого процеса, в некоторых случаях.
     
  18. VladSh

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

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    Под web это костылём не назовёшь, это как раз нормально.

    Если чисто клиентское приложение, то можно попробовать Composite Application. Хотя когда-то обещали, что оно и под web работать будет (я не проверял).

    В конкретно данном случае человек не спрашивал за хранение в другой базе, ему это предложили/навязали, поэтому и предлагаю альтернативный вариант.

    Заодно смежный вопрос: давно заметил, что при открытии документа, в котором есть большие (десятки мегабайт) вложения, он открывается медленно.. и чем больше объёма вложений, тем больше тормозит. А иногда не тормозит, но и док этот ни разу не открывался.
    Интересно, от чего это зависит? Может от видимости полей, в которые вложены файлы? /сложность протестить ещё и в том, что такое не всегда наблюдается, а как хочешь протестить, то этот "эффект" исчезает/ Кто-то смог проэкспериментировать: поскрывать все поля, в которых вложения, и протестить скорость загрузки?
     
  19. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Кста, можно аналогично и соответствующий java-апплет ввернуть. Только его ещё надо написать...

    Добавлено
    Информация к размышлению: Java-апплет: альтернатива встроенному представлению
     
  20. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    Ты предлагаешь не альтернативный вариант, ты ведь говоришь о представлении данных, а не о хранении.
    Я же к этому и говорю, что в случае, если вложения хранить документами в другой БД, твой вариант удобен, потому как внедренное представление из другой БД сделать сложнее (есть некоторые ограничения на работу с шаблоном и рабочей БД). Если же вложения хранятся в этой же БД отдельными документами, то твой вариант реализовывать трудозатратнее, да и не так удобно выглядит интерфейс, как внедренное представление. Если же вложения сидят в текущем документе, то, имхо, вообще выдумывать велосипед без толку.
    Я не говорю, что твой вариант плох или еще что-то в этом роде, он по-своему интересен, но не всегда оптимален :)
    И говорим мы о нотес-клиенте пока что, поэтому не к месту сравнивать в стиле "что под нотес костыль, то под веб нормально".

    Композиты, кмк, тоже тут цеплять можно разве что для изучения технологии (к стати, интересный пример), но это сложная реализация, да и ограничена версией клиента.

    Кмк, это из-за того, что сервер передает тебе все эти данные. И стечение обстовятельств (документ глубоко не в памяти сервера, плюс загруженность сети, плюс ситуация на клиенте) дает непостоянный такой эффект. К стати, вроде, если включить фичу хранения вложений отдельно от БД (забыл как называется, Тоха тут о ней много говорил), то такой эффект должен уйти, вроде обращение к вложению фактически идет не при открытии документа-контейнера, а лишь при обращении к самому объекту вложения... Может мне приснилось? :)
     
Загрузка...
Похожие Темы - Список Прикрепленных Файлов
  1. gx6060
    Ответов:
    2
    Просмотров:
    439
  2. gx6060
    Ответов:
    6
    Просмотров:
    580
  3. Shandrik
    Ответов:
    6
    Просмотров:
    817
  4. anna
    Ответов:
    8
    Просмотров:
    816
  5. erhe
    Ответов:
    10
    Просмотров:
    792

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