Имя: Пароль:
1C
1С v8
я не умею называть темы! помогите с запросом
🠗 (Волшебник 11.12.2014 11:29)
,
0 Black Dragon
 
11.12.14
10:57
Доброго дня!

есть задача получить все записи регистра по владельцу регистратора

написал запрос

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

УПОРЯДОЧИТЬ ПО
    Период

Но, к сожалению, не все записи попали в выборку

Помогите разобратся, почему такое происходит!

Заранее благодарю!
1 Ёпрст
 
11.12.14
11:01
(0)

ГДЕ замени на И
2 ssh2QQ6
 
11.12.14
11:02
(0) условие на правую таблицу из левого соединения СтатусЗаказовНаОтгрузку сделало его внутренним
3 Жан Пердежон
 
11.12.14
11:04
100500 раз одно и тоже:
условия в ГДЕ выполняются ПОСЛЕ соединений таблиц
4 Black Dragon
 
11.12.14
11:07
(3) и что из этого? мне нужны все записи документов ОПЕРАЦИЯ(он же регистратор) по Владельцу ЗАКАЗ, у ЗАКАЗА есть ограничения некоторые
5 Ёпрст
 
11.12.14
11:08
(4) подумай еще раз
6 Ёпрст
 
11.12.14
11:09
вот этим условием
  СтатусЗаказовНаОтгрузку.Период МЕЖДУ &НачДата И &КонДата

ты сделал вот это соединение

ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СведенияПоСтатусамЗаказовНаОтгрузку.СрезПервых


внутренним
7 Ёпрст
 
11.12.14
11:10
т.е наложил фильтр на всю выборку
8 Vladal
 
модератор
11.12.14
11:14
Тема не отражает суть сообщения.
Уже не маленький, должен знать.
9 Black Dragon
 
11.12.14
11:16
(5,6)

вот это исправление не принесло результата

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

УПОРЯДОЧИТЬ ПО
    Период
10 vicof
 
11.12.14
11:17
(9) Ты совсем не читаешь, что тебе пишут?
11 Black Dragon
 
11.12.14
11:18
есть номенклатура, по которой план и факт не совпадают, она сюда не попадает(
12 Black Dragon
 
11.12.14
11:18
(10) что именно? поясни
13 Жан Пердежон
 
11.12.14
11:20
(11) тебе нужны движения или обороты? это разные таблиц
14 Жан Пердежон
 
11.12.14
11:21
еще номенклатура может тупо не попадать в &ГруппаОтбора,
но тут уже без прокаченных навыков телепатии не угадаешь
15 vicof
 
11.12.14
11:22
(12) отсторнирую (10), ты исправился :)
16 Black Dragon
 
11.12.14
11:22
Всем спасибо, я понял))

Это условие мешает:

ЛЕВОЕ СОЕДИНЕНИЕ Документ.Операция КАК Операция
        ПО ЗаказыОбороты.Заказ = Операция.Владелец И ЗаказыОбороты.Номенклатура = Операция.Номенклатура

ЗаказыОбороты.Номенклатура = Операция.Номенклатура

видимо нет такой НОМЕНКЛАТУРЫ в регистре ЗАКАЗЫОБОРОТЫ
17 Black Dragon
 
11.12.14
11:23
В общем суть такова, что нужно найти вычерки, т.е. те позиции, которые есть в заказе и нет в отгрузках по нему, иначе говоря когда план и факт не равны
Программист всегда исправляет последнюю ошибку.