Имя: Пароль:
1C
1С v8
НАЧАЛОПЕРИОДА в запросе и NULL
,
0 CaIIIka
 
04.01.20
10:36
Здравствуйте! Всех с Новым Годом!

Есть простой запрос:

ВЫБРАТЬ
    БигС.Док КАК Док,
    БигС.Номер КАК Номер,
    БигС.Дата КАК Дата,
    ЕстьNULL(БигС.Дата,ДАТАВРЕМЯ(0001,01,01,0,0,0)),
    НАЧАЛОПЕРИОДА(ЕстьNULL(NULL,ДАТАВРЕМЯ(0001,01,01,0,0,0)), ДЕНЬ) КАК Пр
ИЗ
    (ВЫБРАТЬ NULL Док,NULL Номер,NULL Дата) КАК БигС

Возвращает:

Док    Номер    Дата    Поле1            Пр
NULL    NULL    NULL    01.01.01 0:00:00    01.01.01 0:00:00

Если поменять на НАЧАЛОПЕРИОДА(ЕстьNULL(БигС.Дата, .....

то пишет: Неверные параметры "НАЧАЛОПЕРИОДА", НАЧАЛОПЕРИОДА(<<?>>ЕстьNULL(БигС.Дата,ДАТАВРЕМЯ(0001,01,01,0,0,0)), ДЕНЬ) КАК Пр

В третьем поле NULL, в четвертом поле функция прекрасно работает, в пятом с прямым указанием NULL тоже работает....

Вопрос: Чё ему надо???
1 CaIIIka
 
04.01.20
10:38
8.2.19.130
2 CaIIIka
 
04.01.20
10:48
В 8.3.10 аналогично. После НГ и так тяжко себя в руки взять, а тут такое :)

PS Запрос не привязан к БД, можно в консоли в любой базе попробовать.
3 ДенисЧ
 
04.01.20
10:49
ЕстьNULL(NULL,ДАТАВРЕМЯ(0001,01,01,0,0,0))

А зачем так?
4 ДенисЧ
 
04.01.20
10:50
И чо от от этого ожидалось?
5 CaIIIka
 
04.01.20
10:55
Мне нужно, чтобы работало НАЧАЛОПЕРИОДА(ЕстьNULL(БигС.Дата,ДАТАВРЕМЯ(0001,01,01,0,0,0)), ДЕНЬ)
Запрос строится в цикле в зависимости от различных условий. Пустой запрос нужен для обозначения полей в объединении.
Изначально было НАЧАЛОПЕРИОДА(БигС.Дата, ДЕНЬ). Работает. Но если ничего не объединялось, а был только пустой запрос, то вылезла ошибка. Поставил ЕстьNULL, тоже самое. Остальное в (0).
6 CaIIIka
 
04.01.20
10:59
Немного повторюсь: "В третьем поле NULL, в четвертом поле функция прекрасно работает, в пятом поле с прямым указанием NULL тоже работает...."
7 ДенисЧ
 
04.01.20
11:05
8 ДенисЧ
 
04.01.20
11:06
Работает без ругани...
9 CaIIIka
 
04.01.20
11:10
(8) Я прекрасно понимаю, что НГ не я один встречал, так что сейчас это норм. Почитайте, пожалуйста, (0) :)))
Есть простой запрос...
Возращает...
Если поменять....
то ошибка...

У Вас в (7) пункт номер 2 из (0) выполняется
10 ДенисЧ
 
04.01.20
11:13
(9) Вот именно, что НГ. Нужно думать, что требуешь от программы...

http://pics.wfido.ru/img/2020-01-04_11-12-25_g3qqs.png
11 CaIIIka
 
04.01.20
11:27
(10) Ух ты... Спасибо, добрейший! В (6), вроде, логично все показалось - в поле установил NULL, потом из него дату сделал. А, оказывается, нужен был "датированный" NULL... Понятно, что тип значения в поле обозначить - не лишнее. Но ведь на выходе я свое поле делаю, на основании данных из другого поля по принципу ВЫБОР КОГДА NULL...
12 ДенисЧ
 
04.01.20
11:31
Хоть и говорят, что в 1с нет типизирования, но иногда оно есть.
13 CaIIIka
 
04.01.20
11:39
(12) Д вот... При чем конструкция
ВЫБОР КОГДА БигС.Дата Есть NULL ТОГДА ДАТАВРЕМЯ(0001,01,01,0,0,0) ИНАЧЕ НАЧАЛОПЕРИОДА(БигС.Дата, ДЕНЬ) КОНЕЦ
ту же ошибку выдает, ругаясь на текст после ИНАЧЕ!... Хотя тут вообще конкретно все указано.

В итоге вообще ушел от ЕстьNULL, типизируя в итоговом поле

НАЧАЛОПЕРИОДА(Выразить(БигС.Дата как Дата), ДЕНЬ) КАК Пр
ИЗ
    (ВЫБРАТЬ NULL Док,NULL Номер,NULL Дата) КАК БигС


Еще раз спасибо! С Уважением, и всего наилучшего!!!
14 ДенисЧ
 
04.01.20
11:54
(13) После иначе у тебя идёт НАЧАЛОПЕРИОДА(БигС.Дата, ДЕНЬ). Но нигде не сказано, какого типа БигС.Дата, и что это вообще дата. Поэтому НачалоПериода и ругается
15 Flyd-s
 
04.01.20
14:28
ВЫРАЗИТЬ(NULL КАК Дата) - жестокая конструкция