Имя: Пароль:
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
а злой наверное на себя, изучаемые формы пока не освоил
злой за то что просто не интересно
не смотрел
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn