|
Помогите с запросом |
☑ |
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 (три) почти одинаковых запроса с одним простейшим условием (каждый запрос свое условие) и объединить их через ОБЪЕДИНИТЬ ВСЕ.
Такой метод часто дает ускорение.
|
|