Имя: Пароль:
1C
1С v8
Не работает РАЗНОСТЬДАТ с параметром
0 Орбита
 
07.06.19
14:18
Добрый день!

ВЫБОР
        КОГДА СтатусыЗаявкиНаПодборПерсоналаСрезПоследнихДатаЗакрытия.Период = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
            ТОГДА РАЗНОСТЬДАТ(СтатусыЗаявкиНаПодборПерсоналаСрезПоследнихДатаОткрытия.Период, &КонПериода, ДЕНЬ)
        ИНАЧЕ РАЗНОСТЬДАТ(СтатусыЗаявкиНаПодборПерсоналаСрезПоследнихДатаОткрытия.Период, СтатусыЗаявкиНаПодборПерсоналаСрезПоследнихДатаЗакрытия.Период, ДЕНЬ)
    КОНЕЦ

Не срабатывает РАЗНОСТЬДАТ(СтатусыЗаявкиНаПодборПерсоналаСрезПоследнихДатаОткрытия.Период, &КонПериода, ДЕНЬ)
Тип &КонПериод - Дата

В чем загвоздка, уважаемые форумчане?
1 vicof
 
07.06.19
14:28
Что значит "не срабатывает"?
2 craxx
 
07.06.19
14:28
Вероятно значение не является датой. Видимо какое-то из них NULL
3 sqr4
 
07.06.19
14:30
даешь скрин значения периода в отладчике
4 Ёпрст
 
07.06.19
14:52
передается поди граница
5 Орбита
 
07.06.19
15:14
Вот это срабатывает:
РАЗНОСТЬДАТ(СтатусыЗаявкиНаПодборПерсоналаСрезПоследнихДатаОткрытия.Период, СтатусыЗаявкиНаПодборПерсоналаСрезПоследнихДатаЗакрытия.Период, ДЕНЬ)

А вот это нет:
РАЗНОСТЬДАТ(СтатусыЗаявкиНаПодборПерсоналаСрезПоследнихДатаОткрытия.Период, &КонПериода, ДЕНЬ)

Хотя &КонПериода это параметр с типом Дата
6 Орбита
 
07.06.19
15:16
(1) "не срабатывает" значит что не выводится в отчет
7 Ёпрст
 
07.06.19
15:17
(5) параметр не дата
8 Ёпрст
 
07.06.19
15:18
покажи, что ты устанавливаешь в &КонПериода
9 Cyberhawk
 
07.06.19
15:20
А проверь-ка РАЗНОСТЬДАТ(&НачПериодп, &КонПериода, ДЕНЬ).
Есть предположение, что в этом выражении нельзя использовать одновременно поле таблицы и параметр.
10 sqr4
 
07.06.19
15:21
(6) ошибки нет чтоли?
11 Ёпрст
 
07.06.19
15:23
(9) всё можно.
12 Ёпрст
 
07.06.19
15:25
А так, у автора, если "пусто", то там null
13 vicof
 
07.06.19
15:32
Автор очень немногословен.
14 Орбита
 
07.06.19
15:36
там не null
И не работает почему-то даже вот так:
РАЗНОСТЬДАТ(СтатусыЗаявкиНаПодборПерсоналаСрезПоследнихДатаОткрытия.Период, ВТЗаявки.КонПериода, ДЕНЬ)

То есть когда я вначале помещаю в ВТ конПериода, а потом из неё беру

При этом в консоли запросов ВТ:
Заявка    КонПериода
Заявка на подбор персонала 000000022 от 31.05.2019 0:00:00    01.05.2019 0:00:00
Заявка на подбор персонала 000000037 от 29.03.2019 0:00:00    01.05.2019 0:00:00
Заявка на подбор персонала 000000038 от 27.03.2019 0:00:00    01.05.2019 0:00:00
Заявка на подбор персонала 000000040 от 26.03.2019 17:32:19    01.05.2019 0:00:00
15 Орбита
 
07.06.19
15:37
(9) тоже не работает
16 Орбита
 
07.06.19
15:42
(10) ошибки нет
17 vicof
 
07.06.19
15:43
Покажи запрос полностью
18 shuhard
 
07.06.19
15:45
(9) ВЫБРАТЬ
    РАЗНОСТЬДАТ(&Д1, &Д2, ДЕНЬ) КАК Поле1
работает =)
19 Орбита
 
07.06.19
16:41
(17)

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    МАКСИМУМ(СтатусыЗаявкиНаПодборПерсоналаСрезПоследнихДатаЗакрытия.Период) КАК ДатаЗакрытия,
    МАКСИМУМ(СтатусыЗаявкиНаПодборПерсоналаСрезПоследнихДатаОткрытия.Период) КАК ДатаОткрытия,
    СтатусыЗаявкиНаПодборПерсоналаСрезПоследнихСтатусВакансии.Статус КАК СтатусВакансии,
    ВТЗаявки.Заявка.Позиция КАК Вакансия,
    ВТЗаявки.Заявка.Позиция.Подразделение КАК СтруктурноеПодразделение,
    ВТЗаявки.Заявка.Автор КАК Автор,
    ВТЗаявки.Заявка.Ответственный КАК Исполнитель,
    ВТЗаявки.Заявка КАК Заявка,
    ВЫБОР
        КОГДА СтатусыЗаявкиНаПодборПерсоналаСрезПоследнихДатаЗакрытия.Период = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
            ТОГДА РАЗНОСТЬДАТ(СтатусыЗаявкиНаПодборПерсоналаСрезПоследнихДатаОткрытия.Период, ВТЗаявки.КонПериода, ДЕНЬ)
        ИНАЧЕ РАЗНОСТЬДАТ(СтатусыЗаявкиНаПодборПерсоналаСрезПоследнихДатаОткрытия.Период, СтатусыЗаявкиНаПодборПерсоналаСрезПоследнихДатаЗакрытия.Период, ДЕНЬ)
    КОНЕЦ КАК КоличествоДнейВработе
ИЗ
    ВТЗаявки КАК ВТЗаявки
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтатусыЗаявкиНаПодборПерсонала.СрезПоследних(&КонПериода, ) КАК СтатусыЗаявкиНаПодборПерсоналаСрезПоследнихСтатусВакансии
        ПО ВТЗаявки.Заявка = СтатусыЗаявкиНаПодборПерсоналаСрезПоследнихСтатусВакансии.Заявка
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтатусыЗаявкиНаПодборПерсонала.СрезПоследних(&КонПериода, Статус = &Закрыта) КАК СтатусыЗаявкиНаПодборПерсоналаСрезПоследнихДатаЗакрытия
        ПО ВТЗаявки.Заявка = СтатусыЗаявкиНаПодборПерсоналаСрезПоследнихДатаЗакрытия.Заявка
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтатусыЗаявкиНаПодборПерсонала.СрезПоследних(&КонПериода, Статус = &Открыта) КАК СтатусыЗаявкиНаПодборПерсоналаСрезПоследнихДатаОткрытия
        ПО ВТЗаявки.Заявка = СтатусыЗаявкиНаПодборПерсоналаСрезПоследнихДатаОткрытия.Заявка

СГРУППИРОВАТЬ ПО
    СтатусыЗаявкиНаПодборПерсоналаСрезПоследнихСтатусВакансии.Статус,
    ВТЗаявки.Заявка.Позиция,
    ВТЗаявки.Заявка.Автор,
    ВТЗаявки.Заявка.Ответственный,
    ВТЗаявки.Заявка.Позиция.Подразделение,
    ВТЗаявки.Заявка,
    ВЫБОР
        КОГДА СтатусыЗаявкиНаПодборПерсоналаСрезПоследнихДатаЗакрытия.Период = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
            ТОГДА РАЗНОСТЬДАТ(СтатусыЗаявкиНаПодборПерсоналаСрезПоследнихДатаОткрытия.Период, ВТЗаявки.КонПериода, ДЕНЬ)
        ИНАЧЕ РАЗНОСТЬДАТ(СтатусыЗаявкиНаПодборПерсоналаСрезПоследнихДатаОткрытия.Период, СтатусыЗаявкиНаПодборПерсоналаСрезПоследнихДатаЗакрытия.Период, ДЕНЬ)
    КОНЕЦ
20 Ёпрст
 
07.06.19
16:46
(19) пилять.. ну и null там, ибо левое соединение
21 Ёпрст
 
07.06.19
16:46
в результате которого СтатусыЗаявкиНаПодборПерсоналаСрезПоследнихДатаОткрытия.Период = NULL
22 Ёпрст
 
07.06.19
16:47
Ну и сравнивать надо не с пустой датой, а делать проверку на есть NULL
23 Ёпрст
 
07.06.19
16:55
+22


    ВЫБОР
        КОГДА ЕстьNull(СтатусыЗаявкиНаПодборПерсоналаСрезПоследнихДатаЗакрытия.Период,ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)) = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)            
              ТОГДА РАЗНОСТЬДАТ(ЕстьNULL(СтатусыЗаявкиНаПодборПерсоналаСрезПоследнихДатаОткрытия.Период,ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)), ВТЗаявки.КонПериода, ДЕНЬ)
        
        Иначе РАЗНОСТЬДАТ(ЕстьNULL(СтатусыЗаявкиНаПодборПерсоналаСрезПоследнихДатаОткрытия.Период,ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)), СтатусыЗаявкиНаПодборПерсоналаСрезПоследнихДатаЗакрытия.Период, ДЕНЬ)
    КОНЕЦ КАК КоличествоДнейВработе


так хотя бы, хотя по-уму нужен еще отдельный выбор на СтатусыЗаявкиНаПодборПерсоналаСрезПоследнихДатаОткрытия.Период есть NULL делать
24 Орбита
 
07.06.19
16:58
(20) Точно. Получилось, спасибо!
25 Ботаник Гарден Меран
 
07.06.19
16:59
А поле Статус - это наверняка ресурс регистра?
Ошибка? Это не ошибка, это системная функция.