Имя: Пароль:
1C
1С v8
Выбор в запросе значений с незаполненной ТЧ
, ,
0 13spartak13
 
04.07.17
11:27
Уже или мозги плывут или я плыву! Нужна помощь. Есть справочник Сотрудники, в нем ТЧ Отпуска, у некоторых там есть строки у некоторых нету, как в запросе указать чтобы выбрать всех у кого ТЧ пустая? Спасибо
1 youalex
 
04.07.17
11:28
(0) ЛС ТЧ КАК ТЧ ПО Спр.Ссылка = ТЧ.Ссылка ГДЕ ТЧ.Ссылка is null
2 1dvd
 
04.07.17
11:29
(1) кртсть сес. тал.
3 youalex
 
04.07.17
11:30
(2) зато без конструктора (по мотивам соседней ветки) ))
4 Buster007
 
04.07.17
11:30
"is null" почему не ЕСТЬ?
5 1dvd
 
04.07.17
11:30
(3) ну, ты в курсе, что ты его ещё больше запутал? :)
6 youalex
 
04.07.17
11:33
(4) это равнозначное выражение. Удобнее писать, и визуально глаз не ломает
7 13spartak13
 
04.07.17
11:49
(1)     
Ссылка=null;
    //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

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

    Результат2 = Запрос.Выполнить().Выгрузить();
    Результат = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = Результат.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        // Вставить обработку выборки ВыборкаДетальныеЗаписи
    КонецЦикла;

Результат2 ВЫВОДИТ ПУСТОЙ СПИСОК, А ДОЛЖЕН ТЕХ У КОГО НЕТУ НИЧЕГО В СотрудникиОрганизаций.ТекущийТрудовойДоговор.Отпуска.Ссылка
8 youalex
 
04.07.17
11:57
ИЗ Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ТрудовыеДоговоры.Отпуска КАК ТЧОтпуска
ПО СотрудникиОрганизаций.ТекущийТрудовойДоговор = ТЧОтпуска.Ссылка ГДЕ ТекущийТрудовойДоговор is null

как-то так, но тут будут еще сотрудники, у которых не заполнен договор.
9 youalex
 
04.07.17
11:59
(8) т.е. ГДЕ ТЧОтпуска.Ссылка is null
10 13spartak13
 
04.07.17
12:08
(8) (9)     
Ссылка=null;
    //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

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

    Результат2 = Запрос.Выполнить().Выгрузить();
    Результат = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = Результат.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        // Вставить обработку выборки ВыборкаДетальныеЗаписи
    КонецЦикла;

    //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА

ВОТ ЧТО ПОЛУЧИЛОСЬ, ВСЕ РАВНО ПУСТО....
11 Numerus Mikhail
 
04.07.17
12:32
(10) а при чем тут документ трудовой договор
ты ж говоришь тебе надо с пустой ТЧ вытащить. Чет типа такого, мб опечатался чутка, но смысл такой

Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    СотрудникиОрганизаций.Ссылка,
        |    СотрудникиОрганизаций.Код,
        |    СотрудникиОрганизаций.Актуальность
        |ИЗ
        |    Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
        |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СотрудникиОрганизаций.Отпуска КАК Отпуска
        |        ПО СотрудникиОрганизаций.Ссылка= Отпуска.Ссылка
        |ГДЕ
        |    СотрудникиОрганизаций.Актуальность
        |    И Отпуска.Ссылка ЕСТЬ NULL";
12 youalex
 
04.07.17
12:34
(10) добавь в блок ГДЕ:
И  ТЧОтпуска.Ссылка is null
13 13spartak13
 
04.07.17
13:42
(11) ВСЕ РАВНО ПУСТО ЧТО ЗА....
14 Ёпрст
 
04.07.17
13:46
(13) см. (11)

При чем тут Документ.ТрудовойДоговор и вопрос в (0) про табличную часть справочника СотрудникиОрганизаций  ?
15 13spartak13
 
04.07.17
13:51
(14)

Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ТрудовойДоговор.Сотрудник,
        |    ТрудовойДоговор.Сотрудник.Код,
        |    ТрудовойДоговор.Сотрудник.Актуальность,
        |    ТрудовойДоговорОтпуска.Ссылка,
        |    ТрудовойДоговорОтпуска.ВидОтпуска,
        |    ТрудовойДоговорОтпуска.КоличествоДней
        |ИЗ
        |    Документ.ТрудовойДоговор.Отпуска КАК ТрудовойДоговорОтпуска
        |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ТрудовойДоговор КАК ТрудовойДоговор
        |        ПО ТрудовойДоговорОтпуска.Ссылка = ТрудовойДоговор.Отпуска.Ссылка
        |ГДЕ
        |ТрудовойДоговор.Отпуска.Ссылка ЕСТЬ NULL ";
    Запрос.УстановитьПараметр("Истина",Истина);
    Запрос.УстановитьПараметр("Ссылка",Ссылка);

    Результат2 = Запрос.Выполнить().Выгрузить();
    Результат = Запрос.Выполнить();

НЕМНОГО ОШИБСЯ В НАЧАЛЕ НО ЭТО СУТИ НЕ МЕНЯЕТ, ТАБЛИЧНАЯ ЧАСТЬ ДОКУМЕНТА...
16 Лефмихалыч
 
модератор
04.07.17
13:51
(13) спили мушку, Крошка.
Тебе дали готовое решение. Просто скопипасть без потерь. Если не работает, значит ты что-то от себя добавил ненужное или убавил важное
17 Лефмихалыч
 
04.07.17
13:52
(15) сравни свой запрос и (11), а потом добейся сходства
18 Толич
 
04.07.17
13:55
ВЫБРАТЬ
    ФизическиеЛица.Ссылка,
    КОЛИЧЕСТВО(ФизическиеЛицаУдалитьСоставСемьи.Ссылка) КАК КолВо
ПОМЕСТИТЬ Выборка1
ИЗ
    Справочник.ФизическиеЛица.УдалитьСоставСемьи КАК ФизическиеЛицаУдалитьСоставСемьи
        ПОЛНОЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица КАК ФизическиеЛица
        ПО ФизическиеЛицаУдалитьСоставСемьи.Ссылка = ФизическиеЛица.Ссылка

СГРУППИРОВАТЬ ПО
    ФизическиеЛица.Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Выборка1.Ссылка
ИЗ
    Выборка1 КАК Выборка1
ГДЕ
    Выборка1.КолВо < 1
19 Ёпрст
 
04.07.17
13:56
(15) поменяй местами:

|ИЗ
        |    Документ.ТрудовойДоговор КАК ТрудовойДоговор

        |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ТрудовойДоговор.Отпуска КАК ТрудовойДоговорОтпуска
        |        ПО ТрудовойДоговорОтпуска.Ссылка = ТрудовойДоговор.Отпуска.Ссылка
20 Лефмихалыч
 
04.07.17
13:58
а зачем выбирать
        |    ТрудовойДоговорОтпуска.Ссылка,
        |    ТрудовойДоговорОтпуска.ВидОтпуска,
        |    ТрудовойДоговорОтпуска.КоличествоДней

если ты ищешь такие документы, у которых этого всего заведомо не существует?
21 Толич
 
04.07.17
13:59
ВЫБРАТЬ
    ФизическиеЛица.Ссылка,
    СУММА(ВЫБОР
            КОГДА ФизическиеЛицаУдалитьСоставСемьи.Ссылка ЕСТЬ NULL
                ТОГДА 0
            ИНАЧЕ 1
        КОНЕЦ) КАК КолВо
ПОМЕСТИТЬ Выборка1
ИЗ
    Справочник.ФизическиеЛица.УдалитьСоставСемьи КАК ФизическиеЛицаУдалитьСоставСемьи
        ПОЛНОЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица КАК ФизическиеЛица
        ПО ФизическиеЛицаУдалитьСоставСемьи.Ссылка = ФизическиеЛица.Ссылка

СГРУППИРОВАТЬ ПО
    ФизическиеЛица.Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Выборка1.Ссылка
ИЗ
    Выборка1 КАК Выборка1
ГДЕ
    Выборка1.КолВо < 1
22 Лефмихалыч
 
04.07.17
14:01
(21) остановись
23 Толич
 
04.07.17
14:02
горшочек не вари
24 13spartak13
 
04.07.17
14:05
(19) (20)

Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ТрудовойДоговор.Сотрудник,
        |    ТрудовойДоговор.Сотрудник.Код,
        |    ТрудовойДоговор.Сотрудник.Актуальность
        |ИЗ
        |    Документ.ТрудовойДоговор.Отпуска КАК ТрудовойДоговорОтпуска
        |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ТрудовойДоговор КАК ТрудовойДоговор
        |        ПО ТрудовойДоговор.Отпуска.Ссылка = ТрудовойДоговорОтпуска.Ссылка
        |ГДЕ
        | ТрудовойДоговор.Отпуска.Ссылка ЕСТЬ NULL ";
    Запрос.УстановитьПараметр("Истина",Истина);
    Запрос.УстановитьПараметр("Ссылка",Ссылка);

    Результат2 = Запрос.Выполнить().Выгрузить();
    Результат = Запрос.Выполнить();

код после исправлений... Результат пусто, а должно быть около 700 записей, при том если в строке

| ТрудовойДоговор.Отпуска.Ссылка ЕСТЬ NULL ";

сделать изменения

| НЕ ТрудовойДоговор.Отпуска.Ссылка ЕСТЬ NULL ";

появляются заполненные записи, т.е. что тут хитрое, или я чего-то опять не дописал
25 Ёпрст
 
04.07.17
14:07
(24)  см. (19)
26 Лефмихалыч
 
04.07.17
14:08
(24) дело не в условии, оно правильное.
Соединение неправильное - надо наоборот. Тебе уже раза три точно показали, как надо и рассказали.
27 dezss
 
04.07.17
14:17
(24) ЛЕВОЕ поменяй на ПРАВОЕ и будет тебе щастье
28 13spartak13
 
04.07.17
14:22
(26) (25) (26)

Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ТрудовойДоговор.Сотрудник,
        |    ТрудовойДоговор.Сотрудник.Код,
        |    ТрудовойДоговор.Сотрудник.Актуальность
        |ИЗ
        |    Документ.ТрудовойДоговор КАК ТрудовойДоговор
        |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ТрудовойДоговор.Отпуска КАК ТрудовойДоговорОтпуска
        |        ПО ТрудовойДоговор.Отпуска.Ссылка = ТрудовойДоговорОтпуска.Ссылка
        |ГДЕ
        |    ТрудовойДоговор.Отпуска.Ссылка ЕСТЬ NULL ";
    Запрос.УстановитьПараметр("Истина",Истина);
    Запрос.УстановитьПараметр("Ссылка",Ссылка);

    Результат2 = Запрос.Выполнить().Выгрузить();
    Результат = Запрос.Выполнить();

все поменял местами и соединения писал и левое и правое, результат пустой запрос
29 13spartak13
 
04.07.17
14:25
Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ТрудовойДоговор.Сотрудник,
        |    ТрудовойДоговор.Сотрудник.Код,
        |    ТрудовойДоговор.Сотрудник.Актуальность
        |ИЗ
        |    Документ.ТрудовойДоговор КАК ТрудовойДоговор
        |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ТрудовойДоговор.Отпуска КАК ТрудовойДоговорОтпуска
        |        ПО ТрудовойДоговор.Отпуска.Ссылка = ТрудовойДоговорОтпуска.Ссылка
        |ГДЕ
        |    ТрудовойДоговорОтпуска.Ссылка ЕСТЬ NULL ";
    Запрос.УстановитьПараметр("Истина",Истина);
    Запрос.УстановитьПараметр("Ссылка",Ссылка);

РАБОЧИЙ ВАРИАНТ, ВСЕМ СПАСИБО ЗА ПОМОЩЬ ОСОБЕННО    Лефмихалыч,   Ёпрст,   Numerus Mikhail,    youalex.
30 Лефмихалыч
 
04.07.17
14:30
(29) пожалуйста.
Установку параметров удали - они не используются