Имя: Пароль:
1C
1С v8
Отбор по возрасту в запросе
0 Len1vec
 
04.12.21
14:24
Добрый день.
Подскажите, пожалуйста, как в запросе правильно установить отбор записей РС по возрасту?

Используя РАЗНОСТЬДАТ() в запросе не выбирается ни одной записи. Если же в запросе уберу условия с РАЗНОСТЬДАТ(), то записи в выборке запроса есть.

ВЫБРАТЬ
    Статистика.Регистратор,
    Статистика.СлучайОбращения,
    Статистика.ДиагнозОкончательный,
    Статистика.Пациент,
    Статистика.Специалист,
    Статистика.Специализация,
    Статистика.Подразделение,
    РАЗНОСТЬДАТ(Статистика.Регистратор.Дата, ВЫРАЗИТЬ(Статистика.Пациент.ДатаРождения КАК ДАТА), ГОД) КАК ВозрастВГодах
ИЗ
    РегистрСведений.Статистика КАК Статистика
ГДЕ
    Статистика.Период МЕЖДУ &ПериодНачало И &ПериодКонец
    И ВЫБОР
            КОГДА &Специализация <> ЗНАЧЕНИЕ(Справочник.КлассификаторСпециализаций.ПустаяСсылка)
                ТОГДА Статистика.Специализация = &Специализация
            ИНАЧЕ ИСТИНА
        КОНЕЦ
    И ВЫБОР
            КОГДА &Подразделение <> ЗНАЧЕНИЕ(Справочник.ПодразделенияКомпании.ПустаяСсылка)
                ТОГДА Статистика.Подразделение = &Подразделение
            ИНАЧЕ ИСТИНА
        КОНЕЦ
    И РАЗНОСТЬДАТ(Статистика.Регистратор.Дата, ВЫРАЗИТЬ(Статистика.Пациент.ДатаРождения КАК ДАТА), ГОД) >= &ВозрастМин
    И РАЗНОСТЬДАТ(Статистика.Регистратор.Дата, ВЫРАЗИТЬ(Статистика.Пациент.ДатаРождения КАК ДАТА), ГОД) <= &ВозрастМакс
    И ВЫБОР
            КОГДА &ГруппаБолезни
                ТОГДА Статистика.Регистратор.Синдром В ИЕРАРХИИ (&ГруппаЗаболеваний)
            ИНАЧЕ Статистика.Регистратор.Синдром = &ГруппаЗаболеваний
        КОНЕЦ
    И Статистика.Регистратор.СлучайОбращения.ЗаконченныйСлучай
1 RomanYS
 
04.12.21
14:26
... ВЫРАЗИТЬ(Статистика.Пациент.ДатаРождения КАК ДАТА)
эээ...а какой тип у тебя в ДатаРождения?
2 Len1vec
 
04.12.21
14:28
(1) изначально дата, но СКД ругается на РАЗНОСТЬДАТ(Статистика.Регистратор.Дата, Статистика.Пациент.ДатаРождения, ГОД). Пришлось выразить так
3 RomanYS
 
04.12.21
14:30
(2) Значит не дата...
4 Len1vec
 
04.12.21
14:31
(3) Обратил внимание - составной (Строка, Дата)
5 Len1vec
 
04.12.21
14:36
(3) с этим проблем не было. Надо было писать РАЗНОСТЬДАТ(ВЫРАЗИТЬ(Статистика.Пациент.ДатаРождения КАК ДАТА), Статистика.Регистратор.Дата, ГОД), а у меня наоборот было (поле ВозрастВГодах даже отрицательное было, а я не заметил)
6 серый КТУЛХУ
 
04.12.21
15:57
в консоль запросов - и...
положить этот результат в вт -  без фильтра по разность дат только включив это значение в показатель, а финальный запрос - к этой вт с фильтром по этому значению? заодно в консоли посмотришь в эту вт на эту разностьдат
прим.: кстати заодно в вт можешь зафигачить для просмотра и эти два условия сравнения. прсто посмотри - может многое прочснится?..
7 Len1vec
 
04.12.21
16:36
(6) да я местами просто перепутал даты и всё. Теперь запрос отрабатывает корректно)
8 серый КТУЛХУ
 
04.12.21
16:51
(7): о, да. это вечная проблема в консолях запросов - границы периода в параметрах.
в параметрах все сортируется по именам параметров, и часто употребимые названия параметров для границ периода - сортируются в обратном порядке: ДатаМин идет после ДатаМакс, НачалоПериода идет после КонецПериода.
когда это начинает раздражать очень сильно - народ переходит на попытки упорядочить - типа Дата1 - Дата2 или НачалоПериода-ОкончаниеПерида, ДатаНачала-ДатаОкончания...
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн