Вьюха в которой только аттачи

NetWood

Lotus team
17.04.2008
372
19
#1
Технический проблем: доки содержат аттачи zip, pdf, xls. Аттачей в доке может быть несколько и разного формата.
Кроме аттачей в RTF могут быть прилинковны объекты из например Excel со связью (как картинки получаются) = тоже аттачи но без расширения.
Надо построить вьюху в которой видны только аттачи с расширением zip, pdf, xls. Все это для WEB делается.

Пишу отбор
att:=@AttachmentNames;
atn:=@Transform(att;"x";@If(@Contains(x;".");x;@Nothing));
SELECT @Right(atn;3)="pdf" | @Right(atn;3)="xls" | @Right(atn;3)="zip"
с отображением каждого из нескольких - отдельно.
На выходе все равно получаю список доков где есть "пустые" значения. Понятно почему - прилинкованные объекты собственно и портят всю картину. Они идут как аттачи с именами типа EXT40553 (0k); EXT46471 (0k); STG41756 (8k); STG01394 (8k); STG32637 (8k); EXT45059 (0k); STG05703 (8k); STG25267 (8k); STG12705 (8k); EXT20593 (0k); и пр...

Пошел другим путем. Отбираю в поле формулой
flist:=@Explode("zip":"xls":"pdf");
temp:= @DbLookup("":"NoCache"; ""; "(FilesAll)";flist;3);
temp1:= @If(@IsError(temp);"";temp);
@Implode(temp1)
и упираюсь естественно в ограничение по размеру данных. Доки и файлы плодятся - отбор в поле приводит к ошибке.

Как решить отбор только живых аттачей?
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#2
Аттачи находятся в документах. Значит, нужно построить представление где есть документы хотя бы c одним аттачем с расширением pdf, xls, zip или где все аттачи имеют расширения pdf, xls, zip?
В первом случае можно сделать так.
SELECT !@IsNotMember(@Right(@AttachmentNames; "."); "pdf" : "xls" : "zip")
Во втором будет иначе.

В любом случае никто не запрещает использовать папки.
 

NetWood

Lotus team
17.04.2008
372
19
#3
SELECT !@IsNotMember(@Right(@AttachmentNames; "."); "pdf" : "xls" : "zip")
Сэнкс, но это только короткое написание моего правила отбора. Результат тот же.
Про папки думал. Все не то :mellow:
Мешают аттачи у котрых расширение пустое. Отбор то все равно производится по докам, а в них могут быть и "пустые" аттачи. В итоге в представление выводится док несколько раз для каждого аттача и пустого и с аттачем. Вот пустые надо убить...
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#4
Как документ может выводиться несколько раз? Он или есть в представлении, или его нет.
Убить пустые аттачи? Убивай. Только причем здесь отбор в представлении?
 
30.05.2006
1 345
11
#7
Да может просто галка стоять "Show multiple values...".
Только документ будет один и тот же. С одними и теми же аттачами. И формулой отбора здесь ничего не сделаешь.
Да, надо аналогичную отбору формулу впЕндюрить в формулу колонки - что-б аттачи с "пустым" типом не отображались
 

NetWood

Lotus team
17.04.2008
372
19
#8
Да может просто галка стоять "Show multiple values...". И формулой отбора здесь ничего не сделаешь.
Да. multiple values есть, чтобы разобрать содержимое дока на части. Соответственно пустое будет в представлении как ни крути разными формулами отбора. И папки не помогут поскольку туда копируются те же доки..

Не решается задачка пока.
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#9
Какая цель? Для чего тебе нужен список аттачей?
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#11
Отвечу и здесь.
При сохранении документ на каждый подходящий условию аттач я предлагаю создавать документ с именем, описанием, путем и т.д. аттача. В представлении показывать эти документы.

Или, как уже предложили, добавить для столбца формулу:
@Trim(@Transform(@AttachmentNames; "x"; @If(!@IsNotMember(@Right(x; "."); "pdf" : "xls" : "zip"); x; @Nothing)))
 

NetWood

Lotus team
17.04.2008
372
19
#12
Отвечу и здесь.
При сохранении документ на каждый подходящий условию аттач я предлагаю создавать документ с именем, описанием, путем и т.д. аттача. В представлении показывать эти документы.
Ок. Это выход. Сэнкс :)