Имя: Пароль:
1C
1С v8
.Как выбрать даты рождения в запросе?
0 Ivan Bezdomnyi
 
12.12.11
09:44
Собственно как выбрать из справочника людей у которых ДР попадает в заданный период? Например между 20.10.2011 и 10.01.2012?
1 golden-pack
 
12.12.11
09:45
по запросам какие книжки читали ?
2 Shurjk
 
12.12.11
09:47
(0) Выделяй из даты месяц и день и ищи по ним.
3 DrShad
 
12.12.11
09:48
(2) нахрена?
4 chingiz
 
12.12.11
09:49
Где ДатаРождения между 20.10.2011 И 10.01.2012
5 Shurjk
 
12.12.11
09:50
(3) Как по другому?
6 Shurjk
 
12.12.11
09:50
(4)_ В курсе что такое ДР? и сколько раз он бывает у человека?
7 chingiz
 
12.12.11
09:51
(6) ахаха когда запостил понял оплошность :DD
8 DrShad
 
12.12.11
09:51
(6) раз в год
9 vmv
 
12.12.11
09:51
нужен календарь друидов полагаю
10 chingiz
 
12.12.11
09:51
еще не проснулся :((
11 Guk
 
12.12.11
09:51
(6) +1 ;)...
12 Ivan Bezdomnyi
 
12.12.11
09:51
(2) Что мне даст день и месяц? Выбрать те у которых день больше 20 и меньше 10? Это какое число должно быть? Так же и с месяцем?
13 vmv
 
12.12.11
09:52
(8) это если у физлица один паспорт
14 Shurjk
 
12.12.11
09:53
(12) Ага. Верным путем идете товарищ.
15 Shrek_yar
 
12.12.11
09:53
а просто где Дата > стоит дата И Дата < СтоитДатаКонца, не получается
16 Shurjk
 
12.12.11
09:53
+(14) только с неравенствами разберитесь.
17 Shurjk
 
12.12.11
09:54
(15) См. (6)
18 DrShad
 
12.12.11
09:56
(17) ну сорри, не проснулся еще
19 Азат
 
12.12.11
09:56
а добавить год есть в запросе? или добавить месяц?
20 vmv
 
12.12.11
09:57
что мешает сделать двенадцать условий на каждый месяц, проблема февраля в поставновке задачи отпадает.

А кто скажет, что двенадцать уловий это для запроса катастрофа и дикое падение производительность тому в Африку собирать авакадо
21 golden-pack
 
12.12.11
09:58
Автор троллит как мне кажется. ПОДСТРОКА - есть такое вкурсе ?

                        ДОБАВИТЬКДАТЕ(<Дата>, <Тип>, <Количество>)
22 Ivan Bezdomnyi
 
12.12.11
09:59
(21) Ну напиши условие?
23 Shurjk
 
12.12.11
10:00
(20) (21) Все гораздо проще можно использовать День() Месяц() и не надо по 12 условий. И с подстрокой тоже заморачиваться.
24 Ivan Bezdomnyi
 
12.12.11
10:00
(23) см. (12)
25 hhhh
 
12.12.11
10:01
(24) ну открой типовую ЗУП или УПП и возьми оттуда. Чего ты паришься?
26 Shurjk
 
12.12.11
10:02
(24) Ты и вправду тролишь?
27 Shurjk
 
12.12.11
10:03
(25) Там это функция которая не в запросе реализована.
28 Shurjk
 
12.12.11
10:03
+(26) 500 руб. и я напишу тебе этот запрос, за бесплатно принципы не позволяют.
29 golden-pack
 
12.12.11
10:05
(28) 499
30 Ivan Bezdomnyi
 
12.12.11
10:05
Я и вправду хотел узнать как написать этот запрос. Но рас никто не знает поищу в типовых.
31 golden-pack
 
12.12.11
10:05
(30) нееееееееееееееееет
32 Ivan Bezdomnyi
 
12.12.11
10:07
Помешанные на троллинге.. вполне конкретный вопрос без конкретного ответа..
33 Shurjk
 
12.12.11
10:11
(32) Тебе ответ дали, запрос здесь тебе бесплатно никто не напишет.
34 DrShad
 
12.12.11
10:11
(32) а с чего ты решил что никто не знает как написать запрос?
35 hhhh
 
12.12.11
10:18
(27) в запросе
36 vmv
 
12.12.11
10:26
Day В (&мДни1_10_Или_20_31)
37 vmv
 
12.12.11
10:28
таки никто не поделился запросом, 1с-ки жадные ...и см. теорему БЖ
38 Ivan Bezdomnyi
 
12.12.11
10:41
(36) а мДни1_10_Или_20_31 это есть
Для Дата = Начало По Конец Цикл //прибавлять по дню
Добавить в СписокЗначений Строчку День-Месяц
КонецЦикла

Так?
39 Ivan Bezdomnyi
 
12.12.11
10:42
и Day это подстрока из дня-месяца ДР
40 Ivan Bezdomnyi
 
12.12.11
10:43
хотя как то не рационально
41 Shurjk
 
12.12.11
10:46
Блин неужели так сложно взять дату рождения привести в ней год к году первой даты и потом уже сравнивать?
42 rutony
 
12.12.11
10:46
(0) Жестяковый запрос,
помню как парился с написанием, а тебе повезло он у меня под рукой

Смысл запроса сводиться к тому что нужно проигнорировать год, плюс учесть высокостный...

ВЫБРАТЬ
   ФизическиеЛица.Ссылка
ИЗ
   Справочник.ФизическиеЛица КАК ФизическиеЛица
ГДЕ
   МЕСЯЦ(ФизическиеЛица.ДатаРождения) + ДЕНЬ(ФизическиеЛица.ДатаРождения) / 100 МЕЖДУ МЕСЯЦ(&ДатаНачала) + ДЕНЬ(&ДатаНачала) / 100 И МЕСЯЦ(&ДатаОкончания) + ДЕНЬ(&ДатаОкончания) / 100
   И ВЫБОР
           КОГДА ГОД(ФизическиеЛица.ДатаРождения) = 1
               ТОГДА ГОД(ФизическиеЛица.ДатаРождения) = ГОД(&ДатаНачала)
                       И ГОД(ФизическиеЛица.ДатаРождения) = ГОД(&ДатаОкончания)
           ИНАЧЕ ИСТИНА
       КОНЕЦ
   И ФизическиеЛица.Ссылка В ИЕРАРХИИ(&Родитель)
   И ФизическиеЛица.ПометкаУдаления = ЛОЖЬ
   И ФизическиеЛица.ЭтоГруппа = ЛОЖЬ
43 Kerk
 
12.12.11
10:54
Итить, вы не знаете как выдаются ID в eDonkey.

МЕСЯЦ(Сотрудник.ДатаРождения)*257 + День(Сотрудник.ДатаРождения) КАК ОтборДаты
и накладываете условие по этому полю...
44 Ivan Bezdomnyi
 
12.12.11
10:55
(41) Ты такой умный! Аш ни написать ни попробовать ничего не можешь!

(42) Спасибо большое, добрый человек.
45 hhhh
 
12.12.11
10:55
(37) вот, из запроса в ЗУП. Дальше сам докуешь.

ВЫБОР
   |            КОГДА МЕСЯЦ(РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо.ДатаРождения) = 12
   |                    И МЕСЯЦ(&ВремяФормированияЗадач) = 1
   |                ТОГДА ДОБАВИТЬКДАТЕ(РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо.ДатаРождения, ГОД, ГОД(&ВремяФормированияЗадач) - ГОД(РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо.ДатаРождения) - 1)
   |            КОГДА МЕСЯЦ(РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо.ДатаРождения) = 1
   |                    И МЕСЯЦ(&ВремяФормированияЗадач) = 12
   |                ТОГДА ДОБАВИТЬКДАТЕ(РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо.ДатаРождения, ГОД, ГОД(&ВремяФормированияЗадач) - ГОД(РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо.ДатаРождения) + 1)
   |            ИНАЧЕ ДОБАВИТЬКДАТЕ(РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо.ДатаРождения, ГОД, ГОД(&ВремяФормированияЗадач) - ГОД(РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо.ДатаРождения))
   |        КОНЕЦ МЕЖДУ ДОБАВИТЬКДАТЕ(&ВремяФормированияЗадач, ДЕНЬ, -5) И ДОБАВИТЬКДАТЕ(&ВремяФормированияЗадач, ДЕНЬ, 5)
46 Kerk
 
12.12.11
10:57
(43) 257 много, можно 32, но смысл не меняется :)
47 guitar_player
 
12.12.11
11:00
(45) ну, вот..
48 polymorph
 
12.12.11
11:37
(43) вот красивое решение. точнее надо

МЕСЯЦ(Сотрудник.ДатаРождения)*100 + День(Сотрудник.ДатаРождения) КАК ОтборДаты

наглядней.
49 Kerk
 
12.12.11
12:05
(48) Спасибо, но смысл как раз выйти на 1 за рамки максимального значения "количество дней в месяце". Для меня 32 нагляднее чем 100. ИХМО.
50 polymorph
 
12.12.11
12:56
(49) это понятно. но к примеру возьмем 6 ноября. что понятнее 358 или 1106?
51 alexandrius
 
12.12.11
13:07
можно еще и так:

ВЫБРАТЬ
   ФизическиеЛица.Ссылка,
   ФизическиеЛица.ДатаРождения
ИЗ
   Справочник.ФизическиеЛица КАК ФизическиеЛица
   
ГДЕ
  (ГОД(&ДатаНачала) = ГОД(&ДатаКонца) И ДЕНЬГОДА(ФизическиеЛица.ДатаРождения) МЕЖДУ ДЕНЬГОДА(&ДатаНачала) и ДЕНЬГОДА(&ДатаКОНЦА))
   ИЛИ
       (ГОД(&ДатаНачала) < ГОД(&ДатаКонца)
           И    (ДЕНЬГОДА(ФизическиеЛица.ДатаРождения) > ДЕНЬГОДА(&ДатаНачала)    
               ИЛИ   ДЕНЬГОДА(ФизическиеЛица.ДатаРождения) <  ДЕНЬГОДА(&ДатаКОНЦА)))
   ИЛИ (РазностьДат(&ДатаНачала,&ДатаКонца,ДЕНЬ) > 365)
52 Ivan Bezdomnyi
 
12.12.11
13:47
(51) крутяк
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший