Имя: Пароль:
1C
1С v8
Помогите переделать многострадальный запрос
,
0 Мисти
 
04.02.14
19:08
У меня не выводятся позиции, по которым нет остатков.
1 Мисти
 
04.02.14
19:08
"ВЫБРАТЬ
    |    ЕСТЬNULL(СвободныеОстаткиОстатки.Склад, ТоварыНаСкладахОстатки.Склад) КАК Склад,
    |    ЕСТЬNULL(СвободныеОстаткиОстатки.Номенклатура, ТоварыНаСкладахОстатки.Номенклатура) КАК Номенклатура,
    |    ЕСТЬNULL(СвободныеОстаткиОстатки.ВРезервеОстаток, 0) КАК ВРезерве,
    |    ЕСТЬNULL(СвободныеОстаткиОстатки.ВНаличииОстаток, 0) КАК ВНаличии,
    |    ЕСТЬNULL(ТоварыНаСкладахОстатки.ВНаличииОстаток, 0) КАК ПолныйОстаток,
    |    СвободныеОстаткиОстатки.Номенклатура.ВидНоменклатуры КАК ВидНомен
    |ПОМЕСТИТЬ ВТ_СвободныеОстатки
    |ИЗ
    |    РегистрНакопления.СвободныеОстатки.Остатки(
    |            &НаДату,
    |            ВЫБОР
    |                    КОГДА &СкладВыбран
    |                        ТОГДА Склад = &ВыбСклад
    |                    ИНАЧЕ ИСТИНА
    |                КОНЕЦ
    |                И ВЫБОР
    |                    КОГДА &ВыбТМЦВыбран
    |                        ТОГДА Номенклатура В ИЕРАРХИИ (&ВыбТМЦ)
    |                    ИНАЧЕ ИСТИНА
    |                КОНЕЦ
    |                И ВЫБОР
    |                    КОГДА &ВидНоменВыбран
    |                        ТОГДА Номенклатура.ВидНоменклатуры = &ВыбВидНомен
    |                    ИНАЧЕ ИСТИНА
    |                КОНЕЦ {(Номенклатура)}) КАК СвободныеОстаткиОстатки
    |        ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(
    |                &НаДату,
    |                ВЫБОР
    |                        КОГДА &СкладВыбран
    |                            ТОГДА Склад = &ВыбСклад
    |                        ИНАЧЕ ИСТИНА
    |                    КОНЕЦ
    |                    И ВЫБОР
    |                        КОГДА &ВыбТМЦВыбран
    |                            ТОГДА Номенклатура В ИЕРАРХИИ (&ВыбТМЦ)
    |                        ИНАЧЕ ИСТИНА
    |                    КОНЕЦ
    |                    И ВЫБОР
    |                        КОГДА &ВидНоменВыбран
    |                            ТОГДА Номенклатура.ВидНоменклатуры = &ВыбВидНомен
    |                        ИНАЧЕ ИСТИНА
    |                    КОНЕЦ {(Номенклатура)}) КАК ТоварыНаСкладахОстатки
    |        ПО СвободныеОстаткиОстатки.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
    |            И СвободныеОстаткиОстатки.Склад = ТоварыНаСкладахОстатки.Склад
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    ЕСТЬNULL(СвободныеОстатки.Склад, ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)) КАК Склад,
    |    ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
    |    ЕСТЬNULL(СвободныеОстатки.ВРезерве, 0) КАК ВРезерве,
    |    ЕСТЬNULL(СвободныеОстатки.ВНаличии, 0) КАК ВНаличии,
    |    ЕСТЬNULL(СвободныеОстатки.ПолныйОстаток, 0) КАК ПолныйОстаток,
    |    ЦеныНоменклатурыСрезПоследних.Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
    |    ПРЕДСТАВЛЕНИЕ(ЦеныНоменклатурыСрезПоследних.Номенклатура.ЕдиницаИзмерения) КАК ТовЕд,
    |    ЦеныНоменклатурыСрезПоследних.Номенклатура.Артикул КАК Артикул,
    |    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена
    |ИЗ
    |    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&НаДату
    |            ,
    |            ВидЦены = &Св4
    |                И ВЫБОР
    |                    КОГДА &ВыбТМЦВыбран
    |                        ТОГДА Номенклатура В ИЕРАРХИИ (&ВыбТМЦ)
    |                    ИНАЧЕ ИСТИНА
    |                КОНЕЦ) КАК ЦеныНоменклатурыСрезПоследних
    |        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_СвободныеОстатки КАК СвободныеОстатки
    |        ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = СвободныеОстатки.Номенклатура
    |УПОРЯДОЧИТЬ ПО Артикул
    |ИТОГИ
    |    СУММА(ВРезерве),
    |    СУММА(ВНаличии),
    |    СУММА(ПолныйОстаток),
    |    МАКСИМУМ(Цена)
    |ПО
    |    Склад,
    |    Номенклатура ИЕРАРХИЯ"
2 ТогдаКонецЕсли
 
04.02.14
19:13
а просто запрос к РС.ценыНоменклатуры дает эти самые позиции, по которым нет остатков?
3 Мисти
 
04.02.14
19:33
Там своя песня, там может не быть цен вовсе!
4 Мисти
 
04.02.14
19:34
Мне уже подсказывали умную мысль, что нужно начинать со справочника, к нему - соединение, но я не умею!
5 sanja26
 
04.02.14
19:45
(4) учись
6 Мисти
 
04.02.14
19:45
(5) Спасибо!!
7 m-serg74
 
04.02.14
19:45
(4) а чем соединение двух регистров отличается от соединения справочника с регистрами? только наверное лучше объединение, чем соединение
8 sanja26
 
04.02.14
19:56
(7) она же из остатков выбирает, а не из оборотов. Объединение не поможет
9 m-serg74
 
04.02.14
20:12
(8) с чего бы не поможет то?
10 Мисти
 
04.02.14
20:22
Мне нужно объединение справочника со всеми остальными данными.
11 m-serg74
 
04.02.14
20:23
(8) типа


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


просто регистры поставил какие были в наличии :)
12 viktor_vv
 
04.02.14
20:32
(11) Мне кажется проще
     |Выбрать
     СпрНом.Ссылка КАК Номенклатура,
    ....

    |ИЗ
    |    Справочник.Номенклатура КАК СПрНом
    |    Левое соединение
    |    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&НаДату
    |            ,
    |            ВидЦены = &Св4
    |                И ВЫБОР
    |                    КОГДА &ВыбТМЦВыбран
    |                        ТОГДА Номенклатура В ИЕРАРХИИ (&ВыбТМЦ)
    |                    ИНАЧЕ ИСТИНА
    |                КОНЕЦ) КАК ЦеныНоменклатурыСрезПоследних
    |    ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = СпрНом.Ссылка
    |        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_СвободныеОстатки КАК СвободныеОстатки
    |        ПО СпрНом.Ссылка = СвободныеОстатки.Номенклатура
13 viktor_vv
 
04.02.14
20:33
(12) + Ну еще в
|Где СпрНом.Ссылка В ИЕРАРХИИ (&ВыбТМЦ)
14 Мисти
 
04.02.14
20:35
А мой запрос можно переделать?
Или в (12) вторая половина запроса, а первую оставить как есть?
15 viktor_vv
 
04.02.14
20:38
(14) Вторая, в первой номенклатуру только замени и вид номенклатуры.
16 Мисти
 
04.02.14
21:00
|Где СпрНом.Ссылка В ИЕРАРХИИ (&ВыбТМЦ)
А ВыбТМЦ может быть не выбрана, или группа, или номенклатура.
Надо как-то похитрее?
Что значит - заменить номенклатуру?
17 viktor_vv
 
04.02.14
21:01
(16)

     |Выбрать
     СпрНом.Ссылка КАК Номенклатура,

вместо

ЕСТЬNULL(СвободныеОстаткиОстатки.Номенклатура, ТоварыНаСкладахОстатки.Номенклатура) КАК Номенклатура,
18 viktor_vv
 
04.02.14
21:04
Ну вот это " или группа, или номенклатура" номрально отработает.

Добавь параметр, проверяй заполненость, устанавливай.

|Где (&НоменклатураНеЗаполнена или СпрНом.Ссылка В ИЕРАРХИИ (&ВыбТМЦ))

формируй динамически текст, вставляй метки , потом заменяй на куски кода.
19 GANR
 
04.02.14
21:30
(6) Опять обновлять надо? Опять 2-х недель нету, как и здесь v8: Помогите с запросом! ?
20 Torquader
 
04.02.14
23:49
А может мы начнём с того, а всё же что мы хотим увидеть в результате и для чего это нам нужно, а то насоединяют всякого и сидят с печальными глазами.
21 zak555
 
05.02.14
00:35
ТоварыНаСкладахОстатки левое соединение  СвободныеОстаткиОстатки левое соединение ЦеныНоменклатуры
22 Мисти
 
05.02.14
20:21
(19) Да это тот же самый запрос!
23 Мисти
 
05.02.14
20:22
Мне нужно, чтоб была вся номенклатура, с доп. условиями, но плясать надо от справочника.
24 viktor_vv
 
05.02.14
20:32
(23) И что с танцами не получается ? В (12) как минимум направление куда танцевать есть.
25 Torquader
 
05.02.14
21:17
(23) Горе вы наше.
Ну и что не получается.
"Мне нужно, чтоб была вся номенклатура" - значит - выбираем справочник "Номенклатура". Причём, если не хочется возиться с папками, то можно смело сначала выбрать справочник во временную таблицу, фильтруя папки.
Потом, эту таблицу соединяем с регистрами, в которых хотим найти какие-то дополнительные данные для вывода.
Что ещё можно сделать, чтобы вы написали этот несчастный отчёт ?