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

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

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

Оффлайн Mary_mariya

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


Написала так

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




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


Оффлайн has

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

Оффлайн Mary_mariya

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

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

Оффлайн LexaK

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


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

Оффлайн has

  • Модератор
  • *****
  • Сообщений: 1310
  • РЕПУТАЦИЯ: 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

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

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

Оффлайн has

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

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

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

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

Оффлайн LexaK

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

Оффлайн Mary_mariya

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

Оффлайн LexaK

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

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


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


Теги:
 

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

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

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

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

Ответов: 1
Просмотров: 1340
Последний ответ 07 Янв 2015, 05:33
от ILLUMI
Объединить и Объединить все в одном запросе

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

Ответов: 3
Просмотров: 335
Последний ответ 16 Янв 2018, 21:35
от Tsaiger
Как исправить при обновлении ИБ: Ошибка в запросе набора данных по причине: {(58, 2)}: Несовместимые типы "ВЫБОР" <<?>>ВЫБОР

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

Ответов: 4
Просмотров: 2643
Последний ответ 26 Апр 2018, 06:45
от Геннадий ОбьГЭС
"Поле не найдено" в запросе, но оно есть.

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

Ответов: 3
Просмотров: 3290
Последний ответ 27 Окт 2015, 10:29
от vitasw

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

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

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


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

* Реклама

Смотрите бесплатно более 300 видеоуроков по работе в 1С:Бухгалтерия 8 и 1C:ЗУП 8 ред. 3.0

СМОТРЕТЬ >>

* Поиск

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

* Реклама

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

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

Геннадий ОбьГЭС Геннадий ОбьГЭС
163 Сообщений
alex0402
72 Сообщений
oleg-x
63 Сообщений
AIFrame AIFrame
54 Сообщений
buketov.av buketov.av
47 Сообщений
wise wise
41 Сообщений
ilyay ilyay
39 Сообщений
Анюта17
33 Сообщений
Alter
32 Сообщений
KOI8-R
31 Сообщений

* Кто онлайн

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

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

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

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

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

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal