Имя: Пароль:
1C
1С v8
Приведение даты в запросе
,
0 seraf
 
21.07.21
11:17
Привет, вроде простой вопрос

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

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

Ещё можно попробовать добавить ЕстьNULL(), что бы у ДатаНачала тип был дата на выходе даже при отсутствии данных:

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