Имя: Пароль:
1C
1С v8
v8: Сравнить текущую дату с Периодом из регистра
,
0 AllJoke
 
22.12.11
13:21
Всем день добрый. Вот такая делема у меня сложилась. Есть РегистрСведений, в нем Период = 22.12.2011, а функция ТекущаяДата() возвращает допустим 22.12.2011 13:20:00. Тобишь со временем. Понятно, что они не равны, но как же тогда их сравнить. Задача в том, что при нажатии на галочку мне в динамическом списке показывались записи введенные сегодня. Отбором использую:


       ЭлементОтбораПериод.ЛевоеЗначение    = Новый ПолеКомпоновкиДанных("Период");
       ЭлементОтбораПериод.ВидСравнения     = ВидСравненияКомпоновкиДанных.Равно;
       ЭлементОтбораПериод.Использование    = Истина;
       ЭлементОтбораПериод.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
       ЭлементОтбораПериод.ПравоеЗначение   = НачалоДня(ТекущаяДата());//Дата(Формат(НачалоДня(ТекущаяДата()), "ДЛФ = Д"));
1 Maxus43
 
22.12.11
13:25
сравнивай МЕЖДУ ДатаНачалаСегодня и ДатаКонцаСегодня, а не "равно"
2 Defender aka LINN
 
22.12.11
13:26
> и <
3 Defender aka LINN
 
22.12.11
13:27
(1) Найдешь в компоновке такой отбор - я тебе лично у Асмодея медальку выпрошу.
4 Defender aka LINN
 
22.12.11
13:28
(0) Дык в чем проблема-то, не пойму, кстати? НачалоДня() даст тебе дату вез времени, все довольны и смеются.
5 AllJoke
 
22.12.11
13:35
(4) Дает со временем.
6 AllJoke
 
22.12.11
13:36
НачалоДня(ТекущаяДата())    22.12.2011 0:00:00    Дата
7 Ненавижу 1С
 
гуру
22.12.11
13:36
(6) то что надо! бери и ничего не спрашивай!
8 AllJoke
 
22.12.11
13:38
(7)Так не срабатывает же. В списке регистра Период = 21,12,2011
9 AllJoke
 
22.12.11
13:38
Без времеени.
10 Ненавижу 1С
 
гуру
22.12.11
13:39
(8) ты пробовал?
11 Defender aka LINN
 
22.12.11
13:41
(9) Даты без времени не бывает
12 Maxus43
 
22.12.11
13:42
(11) я про смысл а не синтаксис, как в (2) тоже самое
13 Maxus43
 
22.12.11
13:42
(12) > (3)
14 AllJoke
 
22.12.11
13:45
(10) Да.
15 AllJoke
 
22.12.11
13:46
В регистре 3 записи с периодом = 22.12.2011.

Код:


       ЭлементОтбораПериод.ЛевоеЗначение    = Новый ПолеКомпоновкиДанных("Период");
       ЭлементОтбораПериод.ВидСравнения     = ВидСравненияКомпоновкиДанных.Равно;
       ЭлементОтбораПериод.Использование    = Истина;
       ЭлементОтбораПериод.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
       ЭлементОтбораПериод.ПравоеЗначение   = НачалоДня(ТекущаяДата());//Дата(Формат(НачалоДня(ТекущаяДата()), "ДЛФ = Д"));


показывает все, а не только определенные.
16 Defender aka LINN
 
22.12.11
13:49
(15) Паяльник брать, или признаешься, кто такой "ЭлементОтбораПериод" и где это все происходит?
17 AllJoke
 
22.12.11
13:51
ЭлементОтбораПериод = СписокОхотников.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
18 AllJoke
 
22.12.11
13:51
УФ, НаКлиенте.
19 Ненавижу 1С
 
гуру
22.12.11
13:53
СписокОхотников внушает
20 AllJoke
 
22.12.11
13:53
(19) Динамический список.
21 FoXSkr
 
22.12.11
13:59
Посмотри а периодичность у регистра сведений точно в пределах дня? Может только на форме отображается Дата без времени а на самом деле там с временем. Потому что тоже самое сделал у себя и все работает.
22 AllJoke
 
22.12.11
14:04
(21) Да. В пределах дня.
23 AllJoke
 
22.12.11
14:06
Странно, в настройках ДинСписка в Отборе поставил сегодняшнюю дату все равно всех выводит.
24 FoXSkr
 
22.12.11
14:07
Тогда убери закомментируй строку
ЭлементОтбораПериод.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;

И посмотри в настройках у тебя отбор живой.
25 AllJoke
 
22.12.11
14:10
Так я вообще при запуске системы говорю. Там же никакие отборы не появляются, они только при галочке. Настраиваю список с отбором по Периоду сегодняшней даты. Всех выводит.
26 FoXSkr
 
22.12.11
14:22
Так ты уже в форме посмотри "Все действия - Настроить список" там твой созданный отбор есть? Может гдето есть строка:
Список.Отбор.Элементы.Очистить();
27 AllJoke
 
22.12.11
14:27
Даже через настройку списка никак не хочет отбирать.
28 AllJoke
 
22.12.11
14:28
Плять. А 20 вывел.
29 AllJoke
 
22.12.11
14:31
Не понимаю! Настроить Список - Отбор - Период меньше или равно 21.12.2011 00:00:00. Он мне и за 20.12.2011 выдает записи.
30 FoXSkr
 
22.12.11
14:32
Ну дак ты же сравнение сделал меньше или равно
31 AllJoke
 
22.12.11
14:39
(30) Так если даже Больше или равно делаю - все равно 20 и 21 выдает.
32 AllJoke
 
22.12.11
14:40
Больше или равно 22, выдает и 20 и 21.
33 AllJoke
 
22.12.11
14:40
Правда дата стала со временем.
34 AllJoke
 
22.12.11
14:43
http://screencast.com/t/K71eZ3hjkJRR - ссылка на видео.
35 AllJoke
 
22.12.11
14:46
И что интересно, с булевными значениями работает на ура. Со строковыми тоже.
36 FoXSkr
 
22.12.11
15:00
(34) Прикольно. А конфига большая? Можешь скинуть что бы воочию все глянуть.
37 AllJoke
 
22.12.11
15:02
Это в обработке. Кину как внешнюю.
38 AllJoke
 
22.12.11
15:03
39 FIXXXL
 
22.12.11
15:03
про запрос говорили?
40 AllJoke
 
22.12.11
15:04
(39) Внимательно...
41 FIXXXL
 
22.12.11
15:05
сорри, про запрос погарячился
здесь кнапырка и Отбор
42 alexandrius
 
22.12.11
15:19
не качается, сервер занят на яндексе
43 FoXSkr
 
22.12.11
15:35
Есть мнение что проблема в том что ты в запросе динамического списка используешь виртуальную таблицу среза последних регистра сведений и при установки отбора программа ставит отбор на урове параметра виртуальной таблицы, вот у тебя все и попадают все равно а если ставишь на 20-е число тогда все кто больше отрезается, попробуй использовать в запросе физическую таблицу.
44 AllJoke
 
22.12.11
15:43
Так там основная таблица же Справочник.Физические Лица.
45 FoXSkr
 
22.12.11
15:47
У тебя период же выбирается из "СведенияОхотникаСрезПоследних"
Или в конце запроса добавить
{ГДЕ
   СведенияОхотникаСрезПоследних.Период}
46 AllJoke
 
22.12.11
15:50
(45) Для чего это добавлять? Ты предлагаешь таблицу СведенияОхотника. Не СрезПоследних?
47 alexandrius
 
22.12.11
15:52
(43) да по ходу правильно, предлагаю колонку период в запросе переименовать, тогда все работает
48 alexandrius
 
22.12.11
15:53
Т.е вот таким образом потом все работает:
ВЫБРАТЬ
   ФизическиеЛица.Наименование,
   ФизическиеЛица.ДатаРождения,
   ОхотничьийБилетСрезПоследних.Серия,
   ОхотничьийБилетСрезПоследних.Номер,
   ОхотничьийБилетСрезПоследних.ДатаВыдачи,
   ОхотничьийБилетСрезПоследних.Аннулирован,
   ФизическиеЛица.Активна,
   СведенияОхотникаСрезПоследних.Период как Денек,
   СведенияОхотникаСрезПоследних.Автор
49 FoXSkr
 
22.12.11
15:53
(46) 2 варианта на выбор
1) Либо в конце запроса добавь
{ГДЕ
  СведенияОхотникаСрезПоследних.Период}
2) Либо используй таблицу используй не срез последних.

1 вариант предпочтительнее.
50 FoXSkr
 
22.12.11
15:55
(47), (48) Тоже вариант.
51 AllJoke
 
22.12.11
15:58
Можете обработку кинуть, в которой работает?
52 AllJoke
 
22.12.11
16:00
Работает!!!
53 AllJoke
 
22.12.11
16:00
Спасибо.
54 AllJoke
 
22.12.11
16:00
А теперь же сюда вопрос. Как второй отбор программно добавить. Мне нужно еще и автора проверять.
55 alexandrius
 
22.12.11
16:05
А что мешает такой же блок добавить по Автору?
56 alexandrius
 
22.12.11
16:07
Тем более такой вроде код уже есть, только закоменченный...
57 FIXXXL
 
22.12.11
16:12
суки-п....дарасыы
заново учить
58 alexandrius
 
22.12.11
16:15
(57) Ты чего такой злобный? еще вроде четверг...рано
59 AllJoke
 
22.12.11
16:29
Да сделал я уже. Не надо печалиться. Всем огромное спасибо.
60 FIXXXL
 
22.12.11
16:44
(58)
да не
просто кидает
http://www.intv.ru/view/?film_id=6827
61 FIXXXL
 
22.12.11
16:47
а злой наверное на себя, изучаемые формы пока не освоил
злой за то что просто не интересно
не смотрел
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший