Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Приведение даты в запросе

Приведение даты в запросе
Я
   seraf
 
21.07.21 - 11:17
Привет, вроде простой вопрос

ВЫБРАТЬ
                              |    МИНИМУМ(Таблица.ДатаНачала) КАК ДатаНачала,
                              |    МАКСИМУМ(Таблица.ДатаОкончания) КАК ДатаОкончания
                              |ИЗ
                              |    РегистрСведений.Периоды КАК Таблица
                              |ГДЕ
                              |    Таблица.Сотрудник = &Сотрудник
                              |    И Таблица.Регистратор В(&МассивДокументов)

Один регистратор пишет дату начала, второй окончания, как в запросе всегда выбирать значимый минимум, а не чтобы в случае отсутствия Даты начала возвращало пустую дату
   Адинэснег
 
1 - 21.07.21 - 11:20
ни*** не понятно
   dubolom
 
2 - 21.07.21 - 11:20
МИНИМУМ В(ВЫБОР КОГДА
Таблица.ДатаНачала = &ПустаяДата ТОГДА &ОченьПоздно
ИНАЧЕ Таблица.ДатаНачала КОНЕЦ) КАК ДатаНачала
Первое, что на ум пришло.
В параметр ПустаяДата передавать пустую дату, а в параметр ОченьПоздно - 1 января 2100 года.
   azernot
 
3 - 21.07.21 - 11:20
Что есть "значимый минимум" если нет "Даты начала"?
   fisher
 
4 - 21.07.21 - 11:20
Отсутствие даты - это пустая дата? Тогда
МИНИМУМ(ВЫБОР КОГДА Таблица.ДатаНачала = ДАТАВРЕМЯ(1,1,1) ТОГДА NULL ИНАЧЕ Таблица.ДатаНачала КОНЕЦ) КАК ДатаНачала
   Адинэснег
 
5 - 21.07.21 - 11:23
Один интервал будет? Тогда выбрать в 2 таблицы, собрать минимумы дат начал, в первой, максимумы дат окончания второй, объединить, сгруппировать
   fisher
 
6 - 21.07.21 - 11:25
А вообще регистр говнокодный, конечно.
   Адинэснег
 
7 - 21.07.21 - 11:28
(6) ну в старых типовых типа такого был "Состояние сотрудников организаций" :)
   Said_We
 
8 - 21.07.21 - 11:32
(7) А сейчас состояние сотрудников другой? "ДействуетДо" не таже дата окончания? + "ОкончаниеПредположительно" ?
   seraf
 
9 - 21.07.21 - 11:36
(5) ну да интервал один, регистратора 2. Регистратор1 отдает даты начала, Регистратор2 даты окончания, соответственно если они оба присутствуют то Регистратор2 отдаст в минимум пустую дату, которая меня не интересует)
ну понял, наверное просто разбить выборки по типу документов. думал как-то одной строкой
   Said_We
 
10 - 21.07.21 - 11:42
(9) Тебе одной строкой в (4) написали.
   seraf
 
11 - 21.07.21 - 11:47
(10) понял, а минимум максимум при наличии NULL в списке выберут значения?
   Said_We
 
12 - 21.07.21 - 11:50
Максимум(NULL, ЗначениеНеNULL) = ЗначениеНеNULL
Минимум(NULL, ЗначениеНеNULL) = ЗначениеНеNULL
   seraf
 
13 - 21.07.21 - 11:54
ага спасибо еще раз
   Said_We
 
14 - 21.07.21 - 12:06
(13)

Ещё можно попробовать добавить ЕстьNULL(), что бы у ДатаНачала тип был дата на выходе даже при отсутствии данных:
ЕстьNULL(МИНИМУМ(ВЫБОР КОГДА Таблица.ДатаНачала = ДАТАВРЕМЯ(1,1,1) ТОГДА NULL ИНАЧЕ Таблица.ДатаНачала КОНЕЦ), ДАТАВРЕМЯ(1,1,1)) КАК ДатаНачала
   Said_We
 
15 - 21.07.21 - 12:07
При отсутствии требуемых данных. Есть дата окончания, а даты начала нет... :-)

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.