Как Бороться С Ошибкой Field Is Too Large (32k) Or View’s Colum

  • Автор темы anna
  • Дата начала
S

susinmn

Итак, заполняю программно RichText поле (на форме вычисляемое, что бы Read Only)..После ста начинаются дикие тормоза при добавлении новой строки..
Мы при построении таблиц с большим кол-вом строк не используем addRow (как раз из-за медленной работы метода начиная с определенной строки), а Call RTItem.AppendTable(255, ...) и до построения получаем размерность таблицы.
 

garrick

Lotus Team
26.10.2009
1 367
152
BIT
346
Мы при построении таблиц с большим кол-вом строк не используем addRow (как раз из-за медленной работы метода начиная с определенной строки), а Call RTItem.AppendTable(255, ...) и до построения получаем размерность таблицы.
Тут, очевидно, заранее необходимо знать конечное количество строк в таблице/таблицах. А как осуществлять навигацию по таблице, если их несколько в RTF поле, для заполнения ячеек данными? Например, я беру последнюю таблицу в поле, добавляю в неё строку и заполняю её значениями. Как "выйти" на нужную строку, например 300-ю?
 

alexas1

Green Team
10.04.2014
1 202
225
BIT
42
А как осуществлять навигацию по таблице, если их несколько в RTF поле, для заполнения ячеек данными
Не использовать РТ-таблицы. Для работы\динамического изменения\удобной навигации в форме: плоские таблицы - вьюшки, сложные - хэпаги\хтмл.
 

garrick

Lotus Team
26.10.2009
1 367
152
BIT
346
Не использовать РТ-таблицы. Для работы\динамического изменения\удобной навигации в форме: плоские таблицы - вьюшки, сложные - хэпаги\хтмл.
Поясните, пожалуйста, что есть "плоские таблицы"? Сразу оговорюсь - наличие "лишних" пары миллионов документов в базе "очень" нежелательно, если речь идёт об embedded view.
 

savl

Lotus Team
28.10.2011
2 624
314
BIT
513
"плоские таблицы"
без вкладок, категорий, без объединения ячеек и т.д.
Если верно понял.
наличие "лишних" пары миллионов документов в базе "очень" нежелательно
Я вынес у себя в отельную базу и теперь ИС состоит из двух баз.
 

alexas1

Green Team
10.04.2014
1 202
225
BIT
42
Если верно понял.
Верно.
вынес у себя в отельную базу ...
Типа база отчётов. Класно, когда надо возвращаться к ранее созданному.
наличие "лишних" пары миллионов документов в базе "очень" нежелательно,
Почему? Если речь идёт о быстродействии, то показ громоздкой РТ-таблицы на порядок медленнее, чем показ вьюшки с таким же наполнением инфой. Более того, эти доки-строки не обязательно "привязывать" в вьюшке (если есть боязнь тормозов с индексами) - их можно динамически отбирать в коллекцию, по надобности, и класть в фолдер (только не по одному, а все сразу PutAll...)
 

garrick

Lotus Team
26.10.2009
1 367
152
BIT
346
Есть база с контактами с клиентами, типа "позвонил", "письмо прислал", "сам пришел" и т.п. что-то типа CRM. Соответственно, каждый такой контакт в дальнейшем соответствующим образом обрабатывается специально обученными людьми. Т.к документов в базе быстро собирается огромное количество, чтобы как-то утихомирить бесконечный процесс индексации вьюх на сервере, базу порезали на "архивы" по годам. В каждом таком архиве в среднем полтора-два миллиона документов. Теперь поступила новая вводная: при создании нового контакта с клиентом "подтягивать" и как-то отображать историю предыдущих. Показать в embedded view документы из разных баз не получится. Собрать для этого их обратно все в одну, а нафига мы её тогда на архивы резали? К тому же, надо учитывать, что один "архивный" документ может быть "историей" для нескольких новых контактов. Т.е. получается связь многие-ко-многим. Есть какие-нибудь идеи?
 

Leoric

Lotus Team
15.10.2003
69
10
BIT
81
Показать в embedded view документы из разных баз не получится. Собрать для этого их обратно все в одну, а нафига мы её тогда на архивы резали? К тому же, надо учитывать, что один "архивный" документ может быть "историей" для нескольких новых контактов. Т.е. получается связь многие-ко-многим. Есть какие-нибудь идеи?
Если подойдет отображение в диалоге, то идеи есть.
Если вкратце... получаете доки из нескольких баз, копируете их в локальную базу(например кэш) , из нужно базы копируете в локальную вьюху(папку), в диалоге отображаете данные документы из локальной базы по вьюхе из этой базы.
Идея помойму с интертраста. Даже какие-то реализации были.. найти сейчас не могу :(

P.S. После окончания работы все за собой чистить
 

alexas1

Green Team
10.04.2014
1 202
225
BIT
42
поступила новая вводная: при создании нового контакта с клиентом "подтягивать" и как-то отображать историю предыдущих. Показать в embedded view документы из разных баз не получится.
что один "архивный" документ может быть "историей" для нескольких новых контактов

После создания контакта сохраняем его в "истории" - дереве контактов\зависимых доков-ответов.
История - JSON список напр. с номером контакта\UNID самого дока-контакта\UNID родителя\где лежит (сервер\база\реплика ...) он и родитель.
Списки строятся от каждого Адама отдельно.
Они даже могут пересекаться, что можно красиво показать.
Храним где удобно в тексте или эртээфе, да хоть в отдельном файле.
Чтение "истории" - хэпажная вьюшка куда дёргается инфа из этого списка и показывается деревом (вся или от любого родителя вниз). Где сами доки лежат, значения не имеет - инфу дёрнешь, был бы доступ к серверу\базе\архиву.
Если кому-то что-то не положено - док будет просто пропущен в вьюшке и, возможно, будет потеряна часть реального дерева.
Сопсно - это механизм категоризированного view, только без ограничения принадлежности доков одной базе.
Можно даже не следить за удалением доков - нету дока по такому юниду в списке ну и хрен с ним, просто оборвётся цепочка показа ветки.
 

alexas1

Green Team
10.04.2014
1 202
225
BIT
42
Кста, можно даже не хранить "историю" отдельно - достаточно в каждом доке хранить UNID родителя (родителей) и его место нахождения. Хепажная вьюшка будет тогда строиться дольше, зато дерево можно строить не только сверху-вниз но и вверх тормашками:)
В реале, чтение 10 000 доков - не больше 1 сек. конечно если инфу из их не показывать сразу всю на страничке и эт при чтении из той же базы.
 

garrick

Lotus Team
26.10.2009
1 367
152
BIT
346
Если подойдет отображение в диалоге, то идеи есть.
Увы не подойдёт. Создание таблицы "истории" происходит в оффлайн режиме. Есть люди, кот. просто не задумываясь заводят новые контакты, а есть специально обученные, которые принимают решения что с этим контактом в дальнейшем делать, как обрабатывать. В момент "перехода" от пользователя, кот. завёл контакт, к пользователю, кот. принимает решение эта табличка и должна быть заполнена. И на основании этой "истории" в частности и принимается решение. Время заполнения таблицы не предсказуемо, пользователей задерживать нельзя, а если второй получит в работу документ на 5 минут позднее, то ничего страшного. Пока вижу технически работающее, но "не кошерное" решение - записывать HTML текст в RTF поле, затем показывать его во внешнем браузере. Хотелось бы видеть таблицу прямо на форме, "без посредников". Работает всё это в классическом клиенте, никакого web, никаких XPages.
[DOUBLEPOST=1435582169,1435581873][/DOUBLEPOST]
Кста, можно даже не хранить "историю" отдельно - достаточно в каждом доке хранить UNID родителя (родителей) и его место нахождения.
Это означает постоянное обновление/сохранение документов и обновление представлений. Сервак только этим и будет заниматься, а у нас на него ещё и другие планы имеются.
[DOUBLEPOST=1435582310][/DOUBLEPOST]
а чем html в форме не устраивает?
Устраивает. Как показать более 32К?
 

alexas1

Green Team
10.04.2014
1 202
225
BIT
42
Это означает постоянное обновление/сохранение документов и обновление представлений. Сервак только этим и будет заниматься, а у нас на него ещё и другие планы имеются.
Ничуть не разу. Инфа о родителе пишется ТОЛЬКО 1 раз при создании. При построении хепажной вьюшки - бегаешь по всем связанным юнидами докам и динамически строишь дерево для показа. Яж говорю, механиз такой же, как показ иерархии в классике, только опора не на индекс вида, а на реальную инфу (юнид родителя-потомка) в доках.
[DOUBLEPOST=1435583216,1435582982][/DOUBLEPOST]
Не вычислять же их перед каждым открытием документа.
Вычислять. Всё равно показывать всю историю напр. из 1000 уровней не comm il faut, а сотня-другая вычислится мухой.
 

garrick

Lotus Team
26.10.2009
1 367
152
BIT
346
Инфа о родителе пишется ТОЛЬКО 1 раз при создании.
Отчего же? Регистрирую новый контакт - клиент прислал письмо, при этом нахожу историю из ста предыдущих контактов. Сохранил... Регистрирую следующий контакт - клиент позвонил по телефону: "А как там моё письмо?", нахожу историю из тех же ста контактов + предыдущий с письмом. Куда какую инфу надо записать один раз чтобы сохранить все эти связи?

З.Ы. и никаких "хепажных вьюшек" (это же XPage?), я уже говорил ранее только классический клиент.
 

oshmianski

Достойный программист
Lotus Team
25.04.2012
711
59
BIT
8
А как хранить данные для отображения? Не вычислять же их перед каждым открытием документа.
вычислять-вычислять. сейчас же вы строите таблицу на основании каких-то вычисляемых данных? вот и в явовскую таблицу пихайте их же. с учетом потоков ui не подвиснет, а секунду-другую пользователь подождет.
причем апплет можно сразу не показывать, а спрятать в эмбэданутый едитор за закладку, чтобы не грузился при каждом открытии формы (ну, или в отдельный фрэйм спрятать, как вы пишите).
 

alexas1

Green Team
10.04.2014
1 202
225
BIT
42
Регистрирую новый контакт - клиент прислал письмо, при этом нахожу историю из ста предыдущих контактов. Сохранил...
Куда какую инфу надо записать один раз чтобы сохранить все эти связи?
И записал в новый контакт юнид дока на который создан ответ (или сделал его респонсом, что одно и тоже)
говорил ранее только классический клиент.
У клиентов Basic? Тогда лицензионный облом-с (
 

erdi

Green Team
20.08.2008
264
17
BIT
0
вот прям сейчас вылетело из головы... 32к на документ тоже распространяется в совокупности всех полей или там свое ограничение?
 

garrick

Lotus Team
26.10.2009
1 367
152
BIT
346
И записал в новый контакт юнид дока на который создан ответ (или сделал его респонсом, что одно и тоже)
Тут как бы всё наоборот. Этот новый контакт должен уметь показать "историю" предыдущих контактов. Как бы он главный, а они респонзы. Причём каждый из этих респонзов может иметь много главных. Я же говорил многие-ко-многим. Или я чего-то не понимаю?
У клиентов Basic? Тогда лицензионный облом-с (
С лицензиями у нас вроде всё в порядке, но почему-то наши сисадмины хронически не любят стандартного клиента. Понаставили всем Basic. Очень много пользователей из филиалов подключаются через терминал и в нём у них какая-то проблема с эклипсовым клиентом.
 
Мы в соцсетях:

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