|
v8: Подскажите лучший способ получить именинников на текущий день без перебора | ☑ | ||
---|---|---|---|---|
0
Kasperok
25.02.13
✎
16:14
|
Если справочник клиентов где есть реквизит ДеньРождения, суть задачи получения именниников за текущий день, без перебора.
Пробовал запросом |
|||
1
Kasperok
25.02.13
✎
16:14
|
Запрос.Текст =
"ВЫБРАТЬ | Клиенты.ТелефонСотовый |ИЗ | Справочник.Клиенты КАК Клиенты |ГДЕ | Клиенты.ДатаРождения В(&ДатаРождения) | |СГРУППИРОВАТЬ ПО | Клиенты.ТелефонСотовый"; Запрос.УстановитьПараметр("ДатаРождения", Спис); |
|||
2
Kasperok
25.02.13
✎
16:15
|
не работает :-(
|
|||
3
MSII
25.02.13
✎
16:17
|
Почему В, а не "="?
|
|||
4
Жан Пердежон
25.02.13
✎
16:18
|
Спис - это массив? и даты везде без времени?
|
|||
5
Kasperok
25.02.13
✎
16:19
|
Для й = 0 по 60 Цикл
Спис.Добавить(Формат(ДобавитьМесяц(РабочаяДата(),((12*й)*-1)), "ДФ=dd.MM.yyyy")); КонецЦикла; |
|||
6
SherifSP
25.02.13
✎
16:19
|
ВЫБРАТЬ
РаботникиОрганизацийСрезПоследних.Сотрудник.Наименование КАК ФИО, РаботникиОрганизацийСрезПоследних.Должность КАК Должность, РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо.ДатаРождения КАК ДатаРождения, ДЕНЬ(РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо.ДатаРождения) КАК День, РаботникиОрганизацийСрезПоследних.Организация, РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации КАК Подразделение ИЗ РегистрСведений.РаботникиОрганизаций.СрезПоследних(, МЕСЯЦ(Сотрудник.Физлицо.ДатаРождения) = &Месяц) КАК РаботникиОрганизацийСрезПоследних ГДЕ РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение) УПОРЯДОЧИТЬ ПО День |
|||
7
MSII
25.02.13
✎
16:20
|
(5) Т.е. проверяешь дату вхождение в массив строк? Сурово.
|
|||
8
samozvanec
25.02.13
✎
16:21
|
там еще МЕЖДУ накрайняк есть
|
|||
9
MSII
25.02.13
✎
16:23
|
(8) А при этом в (0) говорится, что отбирать надо за текущий день. Что-то темнит ТС.
|
|||
10
Kasperok
25.02.13
✎
16:23
|
Мне то не между мне именно надо вывести всех кто родился например 25.02.2013
это не типовая конфа так что это просто справочник |
|||
11
Kasperok
25.02.13
✎
16:23
|
(4) да просто дата
|
|||
12
Kasperok
25.02.13
✎
16:24
|
(7) Я решил а вдруг прохляет :-)
|
|||
13
alxbzm
25.02.13
✎
16:31
|
вот вы жжете...
Запрос.Текст = "ВЫБРАТЬ | Клиенты.ТелефонСотовый |ИЗ | Справочник.Клиенты КАК Клиенты |ГДЕ | МЕСЯЦ(Клиенты.ДатаРождения) = МЕСЯЦ(&ТекущаяДата) | И ДЕНЬ(Клиенты.ДатаРождения) = ДЕНЬ(&ТекущаяДата) |СГРУППИРОВАТЬ ПО | Клиенты.ТелефонСотовый"; |
|||
14
MSII
25.02.13
✎
16:34
|
(13) Тфу, блин. Только сейчас дошло, чего ТС надо было. Все, домой пора.
|
|||
15
Xatori
25.02.13
✎
16:43
|
(10) Это получается не список ДР клиентов, а прям роддом какой то)))
|
|||
16
Жан Пердежон
25.02.13
✎
16:47
|
(13) жжом не мы, а тс; или ты тоже считаешь, что таким запросом перебора не будет?
|
|||
17
Kasperok
25.02.13
✎
16:49
|
{ОбщийМодуль.АвтоматизацияСервер.Модуль(48)}: Ошибка при вызове метода контекста (Выполнить)
Результат = Запрос.Выполнить(); по причине: {(6, 41)}: Неверные параметры "МЕСЯЦ" |
|||
18
almar
25.02.13
✎
16:49
|
ВЫБОР
КОГДА ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(СправочникСотрудники.ДатаРождения, ГОД, ГОД(&ТекущаяДата) - ГОД(СправочникСотрудники.ДатаРождения)),ДЕНЬ,10) <= &ТекущаяДата ТОГДА ДОБАВИТЬКДАТЕ(СправочникСотрудники.ДатаРождения, ГОД, ГОД(&ТекущаяДата) + 1 - ГОД(СправочникСотрудники.ДатаРождения)) ИНАЧЕ ДОБАВИТЬКДАТЕ(СправочникСотрудники.ДатаРождения, ГОД, ГОД(&ТекущаяДата) - ГОД(СправочникСотрудники.ДатаРождения)) КОНЕЦ КАК ДеньРождения, |
|||
19
Kasperok
25.02.13
✎
16:57
|
(18) это как ? Немного не понял
|
|||
20
almar
25.02.13
✎
16:59
|
(19) Это кусок запроса из динамического списка дней рождения сотрудников фирмы - в нем выдаются все дни рождения от сегодня и дальше
|
|||
21
Kasperok
25.02.13
✎
17:12
|
Вот это вроде работает
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Клиенты.ТелефонСотовый |ИЗ | Справочник.Клиенты КАК Клиенты |ГДЕ | МЕСЯЦ(Клиенты.ДатаРождения) = &Д | И ДЕНЬ(Клиенты.ДатаРождения) = &М | |СГРУППИРОВАТЬ ПО | Клиенты.ТелефонСотовый"; Запрос.УстановитьПараметр("Д", День(РабочаяДата())); Запрос.УстановитьПараметр("М", Месяц(РабочаяДата())); |
|||
22
almar
25.02.13
✎
17:14
|
(21) А если день рождения в этом году приходится на воскресенье? Человек не получит своих поздравлений? Ну и РабочаяДата замени на ТекущаяДата
|
|||
23
Kasperok
25.02.13
✎
17:26
|
Вот так :-)
МЕСЯЦ(Клиенты.ДатаРождения) = &М | И ДЕНЬ(Клиенты.ДатаРождения) = &Д |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |