• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

отбор значений при помощи @dbcolumn

  • Автор темы DNT
  • Дата начала
D

DNT

Доброго всем времени суток!

Есть поле "Контрагент" тип DialogList c формулой отбора @DbColumn("":"NoCache";"C2257054:0022BD69";"Contr";1).
Т.е. у меня есть общая БД "Контагенты" из которой происходит выбор.

Вчера начались грабли, при попытке выбора выдается: "The specified database lookup generated more than 65,000 bytes of results, which is too large for Notes to handle in this context."
Документов в представлении "Contr" - 2130 шт., каждый объемом в среднем 100 байт.

Как разрулить? Надеюсь что у вас были в практике такие случаи
 
M

morpheus

1. NoCache - может не использовать?
2. хранить вложения отдельно
 
D

DNT

вложений в документах контрагентов нет. Там всего-то два поля текстовых. А NoCache щаз проверим...

UPD: удаление NoCache не повлияло на результат
 
M

morpheus

эти текстовые поля где то в видах отображаються? есил нет, то поставить им флаг суммари - фальш
 
X

Xalet

Документов в представлении "Contr" - 2130 шт., каждый объемом в среднем 100 байт.

а это разве не больше 65к? Что там в первом столбике у вас. На 65к средняя длинна не должна 30 символов превышать. Заменить дайлоглист на кнопочку с пиклистом каким и будет счастье.
 
D

DNT

а это разве не больше 65к? Что там в первом столбике у вас. На 65к средняя длинна не должна 30 символов превышать. Заменить дайлоглист на кнопочку с пиклистом каким и будет счастье.



ух ты! получилось! удалил пару длинючих названий - заработало. Про 30 символов слышу первый раз, это откуда?
 
X

Xalet

Про 30 символов слышу первый раз, это откуда?

это 6500 / 2130

ух ты! получилось! удалил пару длинючих названий - заработало. Про 30 символов слышу первый раз, это откуда?

решение временное... добавится еще несколько доков и опять поломается.
 
D

DNT



добавил новый вид в котором первый столбец это количество символов в названии. Просуммировал его и получил 29 153 символа, если следовать вашей логике то это 29 153 байт. До 65000 как-бы далеко .... Или считать нужно не только первый столбец? А и второе поле? Тогда действительно цифра подкрадывается к 65000.
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Если названия русские, то символ весит 2 байта.
 

duchan

Green Team
20.09.2006
127
11
BIT
109
"Прямых" решений нет. Ограничение в лотусах существует и это неизбежное зло. Мало того это ограничение осталось даже в xPages на JS'овском @Dbcolumn'е \@Dblookup'e (вот я был в шоке :ithx: ).
Cпособы решения в данной ситуации зависят от задачи и контекста, можно дать только общие рекомендации.
вот несколько наиболее распространенных:
1. не использовать в "поле "Контрагент" тип DialogList". делается просто поле, а значения выбираются по кнопке через PickList.
2. список из 2130 позиций мягко говоря бессмыленен, искать в нем сложно, листать долго, нужно точно помнить как контрагент определен в базе, что бы можно было по первым буквам хотя бы хоть как-то облегчить себе жисть. так что обычно контрагентов как-то делят на "категории" и перед выбором контрагента опрежеляется эта категория, а далее делается @DBLookup c учетом категории - выборка будет гораздо короче.
3. список состоит из усеченного названия, например "Рога и копы...", а далее через вертикальную черту "код документа" (например UNID) (cписок формируйте в колонке вида). в итоге, в поле контрагент будет "идентификатор" контрагента, а уже по этому идентификатору "лукапить" всю остальную необходимую информацию.
 
D

DNT

Спасибо за развернутый ответ! Теперь мне понятны рамки и перспективы.
БД Контрагенты у меня ведется ответственными пользователями уже несколько лет, и сейчас предстоит увеличение думаю на 25% за этот год. Поэтому надо думать .... Мне кажется второй вариант самое гибкое решение - трудность лишь в том, что сейчас "разбить" 2000 записей на группы это геморрой для пользователей, никто этим заниматься не будет.
Наверно буду писать агента: проходим по всем БД где используются контрагенты + по всем документам где есть привязка к категории (а таких большинство) и тянем эту категорию в контрагента.... как-то так, в общем есть чем заняться. Еще раз СПАСИБО!
 
Мы в соцсетях:

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