Реализация табличной части документа

Тема в разделе "Lotus + Java + LS2J", создана пользователем nvyush, 21 сен 2009.

  1. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Здравствуйте все!
    Возник следующий вопрос - каким образом лучше реализовать табличную часть документов.
    Нужно следующее - чтобы пользователям рассылались задания на опрос, пользователи заполняли эти задания и отсылали обратно.
    Задание на опрос имеет табличную часть, в которой пользователи могут изменять значения только в определённых столбцах, удалять строки запрещено. Пользователи могут добавлять строки, в которых они могут править значения любых столбцов.
    Реализовал сию конструкцию на внедрённом виде и подчинённых документах, НО:
    1) документов получилось много - задания на опрос для всех филиалов занимают порядка 100 000 доков;
    2) вследствие п. 1 всё жутко тормозит;
    3) редактирование непосредственно табличной части "некрасивое" и "неудобное" (внедрённый вид не даёт столько возможностей, сколько контрол типа dbgrid).
    Работать всё должно из клиента Лотуса, веб-технологии не подходят.
    Кто-нибудь знает, как такие вещи делаются в Лотусе по уму?
     
  2. ToxaRat

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

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    значит уже не по уму, сокращайте, типизируйте и т.д.
     
  3. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    В том-то и суть вопроса. Доков много из-за табличной части. Каждая строка - ответный документ. Чтобы их сократить, нужно табличную часть "засунуть" в сам документ (видимов РТ), но возникают следующие проблемы:
    1) пользователь должен быть ограничен в правах редактировать только определённые поля табличной части;
    2) пользователь не должен иметь возможности удалять строки;
    3) пользователь должен иметь возможность добавлять строки и при этом редактировать любые поля в данных строках;
    4) по окончании опроса данные должы выгружаться в РСУБД.
     
  4. divankin

    divankin Senjor developer

    Регистрация:
    13 авг 2009
    Сообщения:
    182
    Симпатии:
    0
    Сделайте свой, типа контрол для редактирования строк. Пользователь пусть сможет редактировать только текущую строку. При этом у него буду кнопки: Добавить строку, удалить текущую строку, переместиться на одну строку вперед, переместиться на одну строку назад.
     
  5. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    яуж и не заню - советовать ли :blink:
    Swing вам в руки
    цепляйте ХМЛ либо генерите налету, отдавайте его свинговому окну (можно и стрингом)
    и далее - работайте, по закрытию окна - возвращайте резалт (в док/доки/поля)
    http://java.sun.com/docs/books/tutorial/ui...ents/table.html
    есть экзампел, откель качал - не помню:
    Посмотреть вложение sunSwing.zip

    в догонку, делал схему и с подчиненными доками - 40 тыс. доков - тормозов нет (в формулах "ReCahe", где лукап нужен), людя работают кажный со своим срезом
     
  6. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    А под лотусовым клиентом swing работает?
     
  7. turumbay

    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    Так и не понял, о чем конкретно идет речь.
    - Чем является строка с точки зрения конечного пользователя?
    - Можно ли привести аналогию с нелотусовыми элементами управления? Как бы эта задача решалась в ёкселе?
    - Как пользователи привыкли решать эту задачу до LN( если она не нова )?
    - Размер таблицы для одного пользователя можно оценить?
    - Пользователь получает некую таблицу, в которой может поправить часть столбцов. Плюс он может добавить свои строки. На выходе имеем исправленную таблицу, которая отсылаеца обратно и обрабатываеца. Так?
    Как вариант решения:
    Пользователь получает документ с данными, необходимыми для отрисовки таблицы( в обычных полях, списками, вопщем как угодно. )
    Отрисовку производим в компутед поле через pass-tru html. На этот html навешиваем ui для редактирования кликнутой строки и синхронизации введенных значений с данными в документе. типа клик на строке поднимает диалог с возможностью редактирования строки плюс навигацию (переход на след., предыдущую строки). Плюс, некий функционал для пакетного заполнения таблицы - клик по заголовку столбца. Перерисовка таблицы - переоткрытием документа, если нет долгоиграющих скриптов. Если база далеко - при переоткрытии данные можно кэшировать.
    Защита исходных данных от редактирования в данном случае интерфейсная, но можно вывернуться, если сильно припрет.( в варианте одна строка - один документ защита скорее всего тоже интерфейсная? )
     
  8. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    и всегда работал :blink: начиная с 6.х версий (в 5-ке jvm очстарая была)
     
  9. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Спасибо, попробую.

    turumbay
    В общем сейчас это вылилось в четырёхуровневую иерархию документов:
    1 - задание на опрос (период опроса, срок представления результатов) - 1 док;
    2 - задание на опрос для филиала (филиал, ответственный за опрос в филиале и т.д.) - порядка 30 доков;
    3 - дилер (название, ответственный менеджер и т.д.) - сотни доков на филиал;
    4 - торговая марка (название, объём продаж и т.д.) - десятки доков на дилера.
    По сути менеджеры заполняют только объём продаж для заданных торговых марок и могут добавлять отсутствующие торговые марки. Редактирование строк сделал на событии представления inviewedit или открытием документа в форме. И так и так выглядит довольно коряво.
    Задача в данной постановке новая. Раньше проводились подобные опросы с помощью Екселя, на нужные ячейки и листы ставили защиту, но защита почему-то слетала в ОпенОфисе (многие пользовали его) - в результате каждый заполнял как хотел и что хотел, свести воедино было затруднительно.
     
  10. turumbay

    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    защита ставится на "словарные значения" , чтоб не заводили клонов торговых марок и номенклатуры?
    я правильно понимаю, что у манагеров по жизни все эти данные живут в каком-нить ёкселе, а табличное представление в лотусе им нужно для возможности сделать копи-паст из своего локального файла?
    т.е. не проводится ли ручная работа по переносу данных, уже существующих в электронном формате в лотус? если так - то не проще скормить зверушке непосредственно эти данные, исключив ручной ввод?
     
  11. K-Fire

    K-Fire Гость

    Хехе, а почему бы тогда не реализовать эту задачу полностью на Java? Данные можно хранить как угодно, например в XML, для репликации засовывать в лотус. На центральном сервере скидывать из лотуса в RDBMS. Т.е. лотус использовать исключительно как средства обмена данными между филиалами, все остальное на других технологиях :blink:
     
  12. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    turumbay
    У менеджеров изначально никаких локальных данных нет. Будут они создавать файлы или хранить данные на бумаге заказчика не интересует. Ему важно, чтобы менеджер забил информацию куда положено, а где не положено не мог ничего наковырять

    K-Fire
    О других технологиях задумывался, но кругозора пока не хватает. Была мысль генерить защищённые страницы в ёкселе, но в главном офисе нет информации по конкретным исполнителям (менеджерам) - их назначают ответственные в филиалах, к тому же есть проблема добавления строк на защищённых листах. Ну и сначала не был известен объём данных и в какой тормоз всё это выльется.
     
  13. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Кто-нибудь, подскажите, плз, как прикрутить JTable на Лотусовую форму вместо внедрённого вида. Или хотя бы где почитать/что покурить :)
     
  14. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    см апплеты
     
  15. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    То есть "завернуть" её в джава-апплет, а его внедрить на форму? Прошу прощения за тупые вопросы, просто с джава мне ещё не приходилось работать.
     
  16. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    ябы не вкручивал аплетом, а вставил код в агента
    Сергей Шабалин выкладывал базу, с примером - запроса к БД
     
  17. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    А как тогда JTable на форме нарисовать? Можно ссылку на базу, плз.

    Попутно возник вопрос - а в чём лучше джава-кодить? Я скачал JDK и NetBeans. В jar-проекте NetBeans подключил notes.jar. Взял пример с
    http://www.notesnet.ru/nn/notesnet.nsf/3a6...&forprinter
    На строчке
    private Container contentPane;
    NetBeans ругается - не знает типа (класса) Container.
     
  18. K-Fire

    K-Fire Гость

    Я ставил Eclipse, подключал ява-машину которая находится в папке Notes-клиента. Соответственно все работало и без подключений Notes.jar.

    В примере awt.* подключено, должно находить Container. Попробуйте import java.awt.Container добавить напрямую.
     
  19. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    В 8.5 Eclipse прикручен - на нём можно клепать java-апплеты или нет?
     
  20. K-Fire

    K-Fire Гость

    8.5. сделан на основе RCP Eclipse, это не полноценный IDE Eclipse.
     
Загрузка...

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