Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
29 мар 2024, 09:38

Сравнение даты документа с днем рождения

Автор TrigubovichL, 31 дек 2015, 12:58

0 Пользователей и 1 гость просматривают эту тему.

TrigubovichL

Может кто-нибудь писал или видел пример проверки нахождения даты документа (в частности чека)
в заданном интервале относительно даты рождения покупателя?

Задача примерно такая:
За 3 дня до ДР и 3-х дней после ДР покупателю надо предоставлять скидку.
На первый взгляд просто: вычисляем дату рождения в текущем году и сравниваем с датой документа.
Но под Новый год, когда у клиента ДР 1-го января а покупку он делает 29-31 декабря, получается не так просто, поскольку ДР в этом году у него 01.01.2015, а дата документа - 31.12.2015.
Разность дат получается большая, хотя на самом деле продажа попадает в 3 дня до следующего ДР.

Можно конечно добавить всяких "Если" (типа разность дат больше полугода по модулю), или сравнивать с предыдущим и следующим ДР, но может кто-нибудь знает более простой способ?

TerverVl

Вот так можно сделать с помощью запроса.

"ВЫБРАТЬ
| ВЫБОР
| КОГДА РАЗНОСТЬДАТ(&ДеньРождения, &ДатаПродажи, ДЕНЬ) < 0
| ТОГДА -РАЗНОСТЬДАТ(&ДеньРождения, &ДатаПродажи, ДЕНЬ)
| ИНАЧЕ РАЗНОСТЬДАТ(&ДеньРождения, &ДатаПродажи, ДЕНЬ)
| КОНЕЦ КАК Поле1
|ПОМЕСТИТЬ ДатаРазность
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВЫБОР
| КОГДА ДатаРазность.Поле1 - 365 < 0
| ТОГДА -(ДатаРазность.Поле1 - 365)
| ИНАЧЕ ДатаРазность.Поле1 - 365
| КОНЕЦ КАК Поле11
|ПОМЕСТИТЬ ВТ_РазностьДат
|ИЗ
| ДатаРазность КАК ДатаРазность
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДатаРазность.Поле1
|ИЗ
| ДатаРазность КАК ДатаРазность
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| МИНИМУМ(ВТ_РазностьДат.Поле11) КАК Поле11
|ИЗ
| ВТ_РазностьДат КАК ВТ_РазностьДат"

Соответственно дату рождения нужно привести к году продажи.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск