Имя: Пароль:
1C
1С v8
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
Вот так :-)
МЕСЯЦ(Клиенты.ДатаРождения) = &М
   |    И ДЕНЬ(Клиенты.ДатаРождения) = &Д