Имя: Пароль:
1C
 
Как сделать отбор по дате в динамическом списке?
0 Crosby
 
12.11.10
15:11
Казалось бы простая задача, но никак не получается...

Есть справочник с реквизитом "ДатаОкончания" типа Дата.
Требуется в форме списка справочника сделать такой отбор, что бы выводились только записи, у которых "Дата окончания" больше текущей ИЛИ пустая, т.е.:

ДатаОкончания > ТекущаяДата() ИЛИ ДатаОкончания = '00010101'

Т.е. нужны только "актуальные" записи справочника, отображаемые в форме списка, или форме выбора справочника.

Какие есть мысли?
1 Crosby
 
12.11.10
15:19
Такое вообще возможно?
2 Defender aka LINN
 
12.11.10
15:21
8.2?
3 fimanich
 
12.11.10
15:57
Может создать группу отбора "ИЛИ"
4 abitfrosty
 
12.11.10
16:35
Открываешь запрос этого динамического списка и пишешь свое условие.

ГДЕ ВЫБОР КОГДА ДатаОкончания <> ДАТАВРЕМЯ(1,1,1,0,0,0) ТОГДА ДатаОкончания > &ТекущаяДата КОНЕЦ
5 fimanich
 
12.11.10
16:45
(4) это если постоянно такой отбор нужен, а если нет, то лучше через группу отбора
6 Crosby
 
13.11.10
09:32
Версия 8.1. А что такое "группа отбора"?
Вообще, сложность то в том, что тут нужно применять два условия на одну колонку списка (реквизит).
7 fimanich
 
13.11.10
09:49
А разве в 8.1 есть динамический список?
8 Crosby
 
13.11.10
11:25
(7) Да, есть. Это, например, тип СправочникСписок. В документации он назван динамическим списком.
Что такое "группа отбора ИЛИ" ?...
9 Crosby
 
13.11.10
11:46
Это вроде как для Компоновки данных используется, а не для отбора в списках форм??
10 fimanich
 
13.11.10
11:48
(8) и все же, насколько я знаю в 8.1 нет в чистом виде такого динамического списка, как в 8.2 (который строится на запросе, в том числе на произвольном и использует систему компоновки данных).
Группы отбора используется в отчетах на СКД или в динамических списках в 8.2. Там в настройках списка на вкладке отбор можно добавить не просто поле отбора, но и группу отбора "И", "ИЛИ" и т.д. В 8.1 такое есть  в отчетах на СКД, но нет в списках.
В 8.1 можно задать, например, "Дата окончания" "Интервал (>, <)" "Нужная дата". Просто зайди в форму списка и нажми кнопку "Отбор и сортировка", там можно посмотреть. То же самое, конечно, можно и программно задать
11 fimanich
 
13.11.10
11:51
(10)Но скорее всего интервал тебе то условие, которое ты в (0) написал, не поможет сделать
12 AaNnDdRrEeYy
 
13.11.10
11:53
Выбери нужные запросом а в отборе сделай условие в списке значение отбора установи получеными ссылками из зпроса.
13 Crosby
 
13.11.10
11:53
(10) Понятно, спасибо!!
К сожалению, простым единичным условием мне не обойтись. Получается, в 8.1 нельзя наложить сложное составное условие на список справочника... Жаль. За подробный ответ ещё раз спасибо.
14 fimanich
 
13.11.10
11:54
Может, как вариант, там где пустая дата в элементах справочника, задать некую условную заведомо большую дату, например, 01.01.3001. Тогда и простой отбор сработает.
15 Crosby
 
13.11.10
11:56
(11) Да, интервалом не получится
(12) Только и остаётся, что "ВСписке", но все мы знаем, как это тормозит при больших списках..
16 Crosby
 
13.11.10
12:03
(14) Идея интересная :) Только в моём случае требуется, что бы дата была заполнена только при закрытии актуальности. Типа, как дата увольнения сотрудника.

Кстати, all!!! ЭТО ЖЕ ТИПИЧНАЯ ЗАДАЧА!!

Как можно показать список сотрудников с отбором по дате увольнения, а именно: на дату документа, в котором мы указываем сотрудника, этот сотрудник должен числиться работающим, т.е. дата его увольнения либо пустая, либо больше, чем дата документа. Как сделать отбор в форме выбора справочника Сотрудники? Только через условие "ВСписке"?
17 fimanich
 
13.11.10
12:10
(16) но ты же вместо пустой будешь использовать строго определенную дату, ее легко потом найти.

А так, как вариант, кто мешает сделать свою форму с таблицей значений или табличным документом, и туда уже запросом выводить все, что нужно.
18 Crosby
 
13.11.10
12:24
(17) Понял, спасибо!
19 fimanich
 
13.11.10
12:33
(17) Еще можно добавить в справочник реквизит ДатаНеЗаполнена (ТипБулево), который будет программно заполняться, и потом уже делать отбор по 2-м реквизитам: ДатаНеЗаполнена=Истина; ДатаОкончания>ТекущаяДата()
20 fimanich
 
13.11.10
12:39
(19) Хотя так не прокатит,сорри, все равно ДатаОкончания анализироваться будет
21 fimanich
 
13.11.10
12:40
(20)Если только два реквизита ДатаНеЗаполнена и ДатаАктуальна и по ним отбор
22 Crosby
 
13.11.10
14:46
(21) То, что "ДатаАктуальна" будет известно только в момент открытия списка справочника...