Имя: Пароль:
1C
1С v8
Помогите с запросом
0 DasTPID
 
16.08.11
17:50
Добрый день!

Требуется отобрать людей, у которых сегодня, завтра или послезавтра день рождения. Как это делаю я:

ГДЕ (День(...) = &Д1 и Месяц(...) = &М1) ИЛИ
   (День(...) = &Д2 и Месяц(...) = &М2) ИЛИ
   (День(...) = &Д3 и Месяц(...) = &М3)

а потом расставляю параметры, учитывая что Д2 необязательно равно Д1+1. Вместо трёх точек читать СотрудникиОрганизаций.Физлицо.ДатаРождения

Вопрос: как это сделать красиво (с меньшим расходом букв)?
1 Scooter
 
16.08.11
18:00
(0)смотри в типовых, уже придумано
2 Wassily
 
16.08.11
18:00
(ДЕНЬГОДА(ФизическиеЛица.ДатаРождения)  = ДЕНЬГОДА(&ДатаРождения)
           ИЛИ ДЕНЬГОДА(ФизическиеЛица.ДатаРождения) = ДЕНЬГОДА(&ДатаРождения)+1
           ИЛИ ДЕНЬГОДА(ФизическиеЛица.ДатаРождения) = ДЕНЬГОДА(&ДатаРождения)+2)

Только високосные годы могут выдать раннюю дату
3 DasTPID
 
16.08.11
18:20
(1) я в 1С чайник, поэтому не совсем понимаю что значит "смотреть в типовые", можно подробнее?

(2) Високосные года - это проблема.
4 I_Stranger
 
16.08.11
18:51
имеются ввиду типовые конфигурации типа УТП, УПП.
5 DrHiHi
 
16.08.11
19:04
(0) можно еще такой изврат написать
ДобавитьКДате(СотрудникиОрганизаций.Физлицо.ДатаРождения, Год, &РазницаГодов)между &ДатаС И &ДатаПо
6 DrHiHi
 
16.08.11
19:05
(6)туплю
ДобавитьКДате(СотрудникиОрганизаций.Физлицо.ДатаРождения, Год, год(&ДатаС) -ГОД(СотрудникиОрганизаций.Физлицо.ДатаРождения))между &ДатаС И &ДатаПо
7 asady
 
16.08.11
20:26
выбрать
&ДеньРождения КАК ДР
ПОМЕСТИТЬ ВТ_ДР
ОБЪЕДИНИТЬ ВСЕ
ДОБАВИТЬКДАТЕ(&ДеньРождения,ДЕНЬ,1)
ОБЕДИНИТЬ ВСЕ
ДОБАВИТЬКДАТЕ(&ДеньРождения,ДЕНЬ,-1)
;
ВЫБРАТЬ
СОТРУДНИКИ.Ссылка,
ВТ_ДР.ДР
ИЗ
ВТ_ДР КАК ВТ_ДР
Левое соединение Справочник.СотрудникиОрганизаций КАК Сотрудники
ПО Сотрудники.ФизЛицо.ДеньРождения=ВТ_ДР.ДР

писал с листа - нужно проверять в клнструкторе
8 artbear
 
16.08.11
21:17
(7) Пипец, ради такой простой задачи создавать ВТ :(
Совсем не гуд.
И нужно проверять неявное соединение через Сотрудники.ФизЛицо.ДеньРождения
А самое главное - код-то нерабочий в принципе :(
Люди рождаются в разные годы, а у тебя только одна дата, без учета годов.
Короче, совсем все плохо.
Хороший вариант в (2)
Но, возможно, еще быстрее будет сделать 3 (три) почти одинаковых запроса с одним простейшим условием (каждый запрос свое условие) и объединить их через ОБЪЕДИНИТЬ ВСЕ.
Такой метод часто дает ускорение.