Как сделать отбор по дате в динамическом списке? #516374


#0 by Crosby
Казалось бы простая задача, но никак не получается... Есть справочник с реквизитом "ДатаОкончания" типа Дата. Требуется в форме списка справочника сделать такой отбор, что бы выводились только записи, у которых "Дата окончания" больше текущей ИЛИ пустая, т.е.: ДатаОкончания > ТекущаяДата ИЛИ ДатаОкончания = '00010101' Т.е. нужны только "актуальные" записи справочника, отображаемые в форме списка, или форме выбора справочника. Какие есть мысли?
#1 by Crosby
Такое вообще возможно?
#2 by Defender aka LINN
8.2?
#3 by fimanich
Может создать группу отбора "ИЛИ"
#4 by abitfrosty
Открываешь запрос этого динамического списка и пишешь свое условие. ГДЕ ВЫБОР КОГДА ДатаОкончания <> ДАТАВРЕМЯ(1,1,1,0,0,0) ТОГДА ДатаОкончания > &ТекущаяДата КОНЕЦ
#5 by fimanich
это если постоянно такой отбор нужен, а если нет, то лучше через группу отбора
#6 by Crosby
Версия 8.1. А что такое "группа отбора"? Вообще, сложность то в том, что тут нужно применять два условия на одну колонку списка (реквизит).
#7 by fimanich
А разве в 8.1 есть динамический список?
#8 by Crosby
Да, есть. Это, например, тип СправочникСписок. В документации он назван динамическим списком. Что такое "группа отбора ИЛИ" ?...
#9 by Crosby
Это вроде как для Компоновки данных используется, а не для отбора в списках форм??
#10 by fimanich
и все же, насколько я знаю в 8.1 нет в чистом виде такого динамического списка, как в 8.2 (который строится на запросе, в том числе на произвольном и использует систему компоновки данных). Группы отбора используется в отчетах на СКД или в динамических списках в 8.2. Там в настройках списка на вкладке отбор можно добавить не просто поле отбора, но и группу отбора "И", "ИЛИ" и т.д. В 8.1 такое есть  в отчетах на СКД, но нет в списках. В 8.1 можно задать, например, "Дата окончания" "Интервал (>, <)" "Нужная дата". Просто зайди в форму списка и нажми кнопку "Отбор и сортировка", там можно посмотреть. То же самое, конечно, можно и программно задать
#11 by fimanich
Но скорее всего интервал тебе то условие, которое ты в написал, не поможет сделать
#12 by AaNnDdRrEeYy
Выбери нужные запросом а в отборе сделай условие в списке значение отбора установи получеными ссылками из зпроса.
#13 by Crosby
Понятно, спасибо!! К сожалению, простым единичным условием мне не обойтись. Получается, в 8.1 нельзя наложить сложное составное условие на список справочника... Жаль. За подробный ответ ещё раз спасибо.
#14 by fimanich
Может, как вариант, там где пустая дата в элементах справочника, задать некую условную заведомо большую дату, например, 01.01.3001. Тогда и простой отбор сработает.
#15 by Crosby
Да, интервалом не получится Только и остаётся, что "ВСписке", но все мы знаем, как это тормозит при больших списках..
#16 by Crosby
Идея интересная :) Только в моём случае требуется, что бы дата была заполнена только при закрытии актуальности. Типа, как дата увольнения сотрудника. Кстати, all!!! ЭТО ЖЕ ТИПИЧНАЯ ЗАДАЧА!! Как можно показать список сотрудников с отбором по дате увольнения, а именно: на дату документа, в котором мы указываем сотрудника, этот сотрудник должен числиться работающим, т.е. дата его увольнения либо пустая, либо больше, чем дата документа. Как сделать отбор в форме выбора справочника Сотрудники? Только через условие "ВСписке"?
#17 by fimanich
но ты же вместо пустой будешь использовать строго определенную дату, ее легко потом найти. А так, как вариант, кто мешает сделать свою форму с таблицей значений или табличным документом, и туда уже запросом выводить все, что нужно.
#18 by Crosby
Понял, спасибо!
#19 by fimanich
Еще можно добавить в справочник реквизит ДатаНеЗаполнена (ТипБулево), который будет программно заполняться, и потом уже делать отбор по 2-м реквизитам: ДатаНеЗаполнена=Истина; ДатаОкончания>ТекущаяДата
#20 by fimanich
Хотя так не прокатит,сорри, все равно ДатаОкончания анализироваться будет
#21 by fimanich
Если только два реквизита ДатаНеЗаполнена и ДатаАктуальна и по ним отбор
#22 by Crosby
То, что "ДатаАктуальна" будет известно только в момент открытия списка справочника...
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С