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

  • Автор темы nvyush
  • Дата начала
N

nvyush

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

nvyush

значит уже не по уму, сокращайте, типизируйте и т.д.

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

divankin

Сделайте свой, типа контрол для редактирования строк. Пользователь пусть сможет редактировать только текущую строку. При этом у него буду кнопки: Добавить строку, удалить текущую строку, переместиться на одну строку вперед, переместиться на одну строку назад.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
473
яуж и не заню - советовать ли :blink:
Swing вам в руки
цепляйте ХМЛ либо генерите налету, отдавайте его свинговому окну (можно и стрингом)
и далее - работайте, по закрытию окна - возвращайте резалт (в док/доки/поля)

есть экзампел, откель качал - не помню:
Посмотреть вложение sunSwing.zip

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

turumbay

В том-то и суть вопроса. Доков много из-за табличной части. Каждая строка - ответный документ. Чтобы их сократить, нужно табличную часть "засунуть" в сам документ (видимов РТ), но возникают следующие проблемы:
1) пользователь должен быть ограничен в правах редактировать только определённые поля табличной части;
2) пользователь не должен иметь возможности удалять строки;
3) пользователь должен иметь возможность добавлять строки и при этом редактировать любые поля в данных строках;
4) по окончании опроса данные должы выгружаться в РСУБД.
Так и не понял, о чем конкретно идет речь.
- Чем является строка с точки зрения конечного пользователя?
- Можно ли привести аналогию с нелотусовыми элементами управления? Как бы эта задача решалась в ёкселе?
- Как пользователи привыкли решать эту задачу до LN( если она не нова )?
- Размер таблицы для одного пользователя можно оценить?
- Пользователь получает некую таблицу, в которой может поправить часть столбцов. Плюс он может добавить свои строки. На выходе имеем исправленную таблицу, которая отсылаеца обратно и обрабатываеца. Так?
Как вариант решения:
Пользователь получает документ с данными, необходимыми для отрисовки таблицы( в обычных полях, списками, вопщем как угодно. )
Отрисовку производим в компутед поле через pass-tru html. На этот html навешиваем ui для редактирования кликнутой строки и синхронизации введенных значений с данными в документе. типа клик на строке поднимает диалог с возможностью редактирования строки плюс навигацию (переход на след., предыдущую строки). Плюс, некий функционал для пакетного заполнения таблицы - клик по заголовку столбца. Перерисовка таблицы - переоткрытием документа, если нет долгоиграющих скриптов. Если база далеко - при переоткрытии данные можно кэшировать.
Защита исходных данных от редактирования в данном случае интерфейсная, но можно вывернуться, если сильно припрет.( в варианте одна строка - один документ защита скорее всего тоже интерфейсная? )
 
N

nvyush

и всегда работал :blink: начиная с 6.х версий (в 5-ке jvm очстарая была)

Спасибо, попробую.

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

turumbay

защита ставится на "словарные значения" , чтоб не заводили клонов торговых марок и номенклатуры?
я правильно понимаю, что у манагеров по жизни все эти данные живут в каком-нить ёкселе, а табличное представление в лотусе им нужно для возможности сделать копи-паст из своего локального файла?
т.е. не проводится ли ручная работа по переносу данных, уже существующих в электронном формате в лотус? если так - то не проще скормить зверушке непосредственно эти данные, исключив ручной ввод?
 
K

K-Fire

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

nvyush

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

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

nvyush

Кто-нибудь, подскажите, плз, как прикрутить JTable на Лотусовую форму вместо внедрённого вида. Или хотя бы где почитать/что покурить :)
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
473
ябы не вкручивал аплетом, а вставил код в агента
Сергей Шабалин выкладывал базу, с примером - запроса к БД
 
N

nvyush

ябы не вкручивал аплетом, а вставил код в агента
Сергей Шабалин выкладывал базу, с примером - запроса к БД

А как тогда JTable на форме нарисовать? Можно ссылку на базу, плз.

Попутно возник вопрос - а в чём лучше джава-кодить? Я скачал JDK и NetBeans. В jar-проекте NetBeans подключил notes.jar. Взял пример с

На строчке
private Container contentPane;
NetBeans ругается - не знает типа (класса) Container.
 
K

K-Fire

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

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

nvyush

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

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

В 8.5 Eclipse прикручен - на нём можно клепать java-апплеты или нет?
 
K

K-Fire

8.5. сделан на основе RCP Eclipse, это не полноценный IDE Eclipse.
 
Мы в соцсетях:

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