Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
16 Дек 2017, 17:39
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Сравнение дат в запросе  (Прочитано 6819 раз)

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

Оффлайн Mary_mariya

  • *
  • Сообщений: 10
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2012-01-17
  • Сайт: 
  • Профессия: Ученик 1С
Необходимо в запросе получить даты,попадающие в заданный период,вне зависимости от года.
Например,дни рождения работников - с ноября 2013 по февраль 2014(т.е сравнивать по дате и месяцу).
Вопрос - как в запросе написать условие?Период задается стандартными параметрами НачалоПериода и КонецПериода


Написала так

ВЫБОР
   КОГДА МЕСЯЦ(РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо.ДатаРождения) = 12
         И МЕСЯЦ(&КонецПериода) = 1
      ТОГДА ДОБАВИТЬКДАТЕ(РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо.ДатаРождения, ГОД, ГОД(&КонецПериода) - ГОД(РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо.ДатаРождения) - 1)
   ИНАЧЕ ДОБАВИТЬКДАТЕ(РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо.ДатаРождения, ГОД, ГОД(&КонецПериода) - ГОД(РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо.ДатаРождения))
КОНЕЦ МЕЖДУ &НачалоПериода И &КонецПериода




,но так не попадают прошлогодние записи,например если выбирать условие с 01.12.2013 по 01.02.2014 - выводит записи только за 2014 год


Оффлайн has

  • Модератор
  • *****
  • Сообщений: 1308
  • РЕПУТАЦИЯ: 285
  • КПД: 22%
  • Регистрация: 2011-01-28
  • Сайт: 
  • Профессия: Программист 1С
а так не подходит что-ли?
РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо.ДатаРождения МЕЖДУ &НачалоПериода И &КонецПериода

Оффлайн Mary_mariya

  • *
  • Сообщений: 10
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2012-01-17
  • Сайт: 
  • Профессия: Ученик 1С
а так не подходит что-ли?
РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо.ДатаРождения МЕЖДУ &НачалоПериода И &КонецПериода

Так сравнение и по году тоже - а мне нужно,чтобы выборка шла только по числу месяца и месяцу,вне зависимости от года,
т.е если день рождения 04.02.1986 и я указываю период 01.01.2014 - 03.05.2014 - то в список выводится этот сотрудник.

Оффлайн LexaK

  • *****
  • Сообщений: 1267
  • РЕПУТАЦИЯ: 347
  • КПД: 27%
  • Регистрация: 2012-05-16
  • Сайт: 
  • Профессия: Программист 1С
попробуйте может такой вариант подойдет
выбрать
рег.Сотрудник,
рег.Сотрудник.Физлицо.ДатаРождения как ДатаРождения
из
РегистрСведений.РаботникиОрганизаций.СрезПоследних Рег
где
   МЕСЯЦ(рег.СотрудникФизлицо.ДатаРождения) между МЕСЯЦ(&НачалоПериода) и МЕСЯЦ(&КонецПериода)
и   День(рег.СотрудникФизлицо.ДатаРождения ) между  День(&НачалоПериода) и День(&КонецПериода)   


этот запрос будет правильно работать когда Начало и Конец периода из одного года (01.03.2012 - 31.03.2012   или 05.02.2014 - 25.07.2014),
так-же подразумеваем что нет сотрудников с годом рождения больше задаваемого периода
Помогло? - Нажми СПАСИБО!!!
                       :)

Оффлайн has

  • Модератор
  • *****
  • Сообщений: 1308
  • РЕПУТАЦИЯ: 285
  • КПД: 22%
  • Регистрация: 2011-01-28
  • Сайт: 
  • Профессия: Программист 1С
попробуйте может такой вариант подойдет
выбрать
рег.Сотрудник,
рег.Сотрудник.Физлицо.ДатаРождения как ДатаРождения
из
РегистрСведений.РаботникиОрганизаций.СрезПоследних Рег
где
   МЕСЯЦ(рег.СотрудникФизлицо.ДатаРождения) между МЕСЯЦ(&НачалоПериода) и МЕСЯЦ(&КонецПериода)
и   День(рег.СотрудникФизлицо.ДатаРождения ) между  День(&НачалоПериода) и День(&КонецПериода)   


этот запрос будет правильно работать когда Начало и Конец периода из одного года (01.03.2012 - 31.03.2012   или 05.02.2014 - 25.07.2014),
так-же подразумеваем что нет сотрудников с годом рождения больше задаваемого периода
А если период с 01.05.2014 по 01.07.2014, а ДР сотрудника 30.06.2014, то он не попадет по таким условиям

Как один из вариантов это получить список дат в периоде только без года, т.е. например 01.05, 02.05, 03.05 и т.д. Ну и затем искать вхождение дня и месяца рождения сотрудника в этот список. Тут нюанс будет, если сотрудник родился 29 февраля, а текущий год не високосный. А ну хотя заменить тогда 29.02 на 28.02 например.

Последний раз редактировалось: has; 04 Июн 2014, 12:12

Оффлайн LexaK

  • *****
  • Сообщений: 1267
  • РЕПУТАЦИЯ: 347
  • КПД: 27%
  • Регистрация: 2012-05-16
  • Сайт: 
  • Профессия: Программист 1С
А если период с 01.05.2014 по 01.07.2014, а ДР сотрудника 30.06.2014, то он не попадет по таким условиям

по такому условию сотрудник попадет в результат!
Помогло? - Нажми СПАСИБО!!!
                       :)

Оффлайн has

  • Модератор
  • *****
  • Сообщений: 1308
  • РЕПУТАЦИЯ: 285
  • КПД: 22%
  • Регистрация: 2011-01-28
  • Сайт: 
  • Профессия: Программист 1С
А если период с 01.05.2014 по 01.07.2014, а ДР сотрудника 30.06.2014, то он не попадет по таким условиям

по такому условию сотрудник попадет в результат!

Почему? Месяц по условию пройдет, а вот день нет. Получиться по условию что 30 МЕЖДУ 1 и 1

Можно использовать ДеньГода в запросе, но тут опять же учесть если годы разные и учитывать високосный год, т.к. номер дня будет отличаться.

Оффлайн LexaK

  • *****
  • Сообщений: 1267
  • РЕПУТАЦИЯ: 347
  • КПД: 27%
  • Регистрация: 2012-05-16
  • Сайт: 
  • Профессия: Программист 1С
упс, да действительно, сейчас доработаю отчет
Помогло? - Нажми СПАСИБО!!!
                       :)

Оффлайн Mary_mariya

  • *
  • Сообщений: 10
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2012-01-17
  • Сайт: 
  • Профессия: Ученик 1С
Попробовала всё,что тут написали - всё равно данные не корректно выводятся...
неужели никто не делал такой отчет(((

Оффлайн LexaK

  • *****
  • Сообщений: 1267
  • РЕПУТАЦИЯ: 347
  • КПД: 27%
  • Регистрация: 2012-05-16
  • Сайт: 
  • Профессия: Программист 1С
новый вариант

выбрать
рег.Сотрудник,
рег.Сотрудник.Физлицо.ДатаРождения как ДатаРождения
из
РегистрСведений.РаботникиОрганизаций.СрезПоследних Рег
где
   ДЕНЬГОДА(рег.СотрудникФизлицо.ДатаРождения) между ДЕНЬГОДА(&НачалоПериода) и ДЕНЬГОДА(&КонецПериода)


правильно только для условия что начало периода и конец периода одного года (любого)
Помогло? - Нажми СПАСИБО!!!
                       :)


Теги:
 

Получить номер недели в месяце в запросе [номер недели]

Автор MuI_I_IkaРаздел Алгоритмы

Ответов: 0
Просмотров: 4149
Последний ответ 15 Июл 2015, 18:24
от MuI_I_Ika
РС "СостояниеОСОрганизаций" в запросе

Автор ILLUMIРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 1119
Последний ответ 07 Янв 2015, 05:33
от ILLUMI
Как исправить при обновлении ИБ: Ошибка в запросе набора данных по причине: {(58, 2)}: Несовместимые типы "ВЫБОР" <<?>>ВЫБОР

Автор dollРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 2123
Последний ответ 01 Янв 2017, 20:27
от Геннадий ОбьГЭС
"Поле не найдено" в запросе, но оно есть.

Автор ferrari314Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 3
Просмотров: 2680
Последний ответ 27 Окт 2015, 10:29
от vitasw
Временная таблица во вложенном запросе+Группировка VS Таблица значений + Свернуть

Автор TsaigerРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 6
Просмотров: 587
Последний ответ 14 Июл 2017, 23:10
от Tsaiger

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
157 Сообщений
ilyay ilyay
66 Сообщений
alex0402
53 Сообщений
AIFrame
47 Сообщений
andron81_81
44 Сообщений
oleg-x
44 Сообщений
BuhRust
33 Сообщений
MuI_I_Ika MuI_I_Ika
32 Сообщений
Golickoff Golickoff
31 Сообщений
Dima Dddd Dima Dddd
24 Сообщений

* Кто онлайн

  • Точка Гостей: 240
  • Точка Скрытых: 0
  • Точка Пользователей: 4
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal