Имя: Пароль:
1C
1С v8
Как правильно построить запрос?
0 svird
 
20.02.15
10:40
Надо получить список документов, которых нет в определенном регистре сведений за промежуток дат. Что то не врублюсь, как запрос построить?
1 butterbean
 
20.02.15
10:41
левое соединение с проверкой на ЕСТЬ NULL
2 D_E_S_131
 
20.02.15
10:41
Соединить таблицу документов с таблицей регистра и поставить условие Есть Null на реквизит регистра.
3 D_E_S_131
 
20.02.15
10:42
4 MSOliver
 
20.02.15
10:45
Документы НЕ В (Регристраторы)
5 Ёпрст
 
20.02.15
10:45
можно и просто, условие на подзапрос
6 svird
 
20.02.15
10:51
ВЫБРАТЬ
    Документ.Ссылка
ИЗ
    Документ.РегистрацияДок КАК Документ
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ксСоответствие КАК Регистр
        ПО (Регистр.ДокументР <> Документ.Ссылка)

Сделал так как то, но не работает
7 VladZ
 
20.02.15
10:53
(6) ТАК не будет работать.
8 D_E_S_131
 
20.02.15
10:54
(6) надо сделать "=", а не "<>" и поставить условие ГДЕ Регистр.ДокументР Есть Null
9 Alexaha
 
20.02.15
10:55
ВЫБРАТЬ
    ТвойРегистрСведений.Регистратор
ПОМЕСТИТЬ вт
ИЗ
    РегистрСведений.ТвойРегистрСведенийКАК ТвойРегистрСведений
;
ВЫБРАТЬ
    ТвойДокумент.Ссылка
ИЗ
    Документ.ТвойДокументКАК ТвойДокумент
ГДЕ
    НЕ ТвойДокумент.Ссылка В
                (ВЫБРАТЬ
                    вт.Регистратор
                ИЗ
                    вт КАК вт)
10 D_E_S_131
 
20.02.15
10:57
Alexaha, мог бы получить приз за самый оптимальный запрос года, вот только ты еще не применил вложенный запрос и соединение с ним.
11 kumena
 
20.02.15
10:59
(10) да да, выбирать все регистраторы, а не различные по количеству записей в регистре, умно конечно.
12 kumena
 
20.02.15
11:00
правильный запрос делается в одно внутреннее соединение
например по условию Регистр.Период IS NULL
13 Alexaha
 
20.02.15
11:01
я продемонстрировал всего лишь идею (один из вариантов), если кому то охота - можете оптимизирвать сами или дальше пытаться объяснять на пальцах
14 svird
 
20.02.15
11:05
ВЫБРАТЬ
    ДокументС.Ссылка
ИЗ
    Документ.ДокументС КАК ДокументС
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РегистрСвед КАК РегистрСвед
        ПО (НЕ РегистрСвед.ДокументРВНД В (ДокументС.Ссылка))
ГДЕ
    ДокументС.Дата МЕЖДУ &Дата1 И &Дата2
15 svird
 
20.02.15
11:06
пока так сделал, но что то медленно работает, так правильно?
16 svird
 
20.02.15
11:06
Не, попадают те что присутствуют
17 Alexaha
 
20.02.15
11:08
(14) чем этот док является в регистре? регистратор или таки измерение?
18 svird
 
20.02.15
11:09
Измерение просто
19 svird
 
20.02.15
11:09
Там есть регистратор, в табличной части которого скапливаются эти документы
20 Alexaha
 
20.02.15
11:10
(19) период дат в равной степени относится и к документу и к регистру?
21 yavasya
 
20.02.15
11:11
(19) а вы давно программируете ? или клюшки в основном?
22 D_E_S_131
 
20.02.15
11:11
(13) Другими словами это называется "быдлокод", не?

(14)

ВЫБРАТЬ
    ДокументС.Ссылка
ИЗ
    Документ.ДокументС КАК ДокументС
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РегистрСвед КАК РегистрСвед
        ПО РегистрСвед.ДокументРВНД = ДокументС.Ссылка
ГДЕ
    ДокументС.Дата МЕЖДУ &Дата1 И &Дата2 И РегистрСвед.ДокументРВНД Есть Null
[\1c]
23 svird
 
20.02.15
11:21
2 (21) да все от этих клюшек не отделаюсь 10 лет их поддерживал. Я на фикси сижу. Тут поставили 8-ку недавно. И еще что то хотят не 1С - ное внедрять.
24 svird
 
20.02.15
11:22
2 (22) спасибо. (21) Пробовал задачи на спеца по 8-ке порешать, вообще глухо. А курсов у нас нет нормальных.
2 + 2 = 3.9999999999999999999999999999999...