Имя: Пароль:
1C
1С v8
Подскажите с запросом
0 redber
 
15.05.14
13:20
В конфигурации в карточку номенклатуры было добавлено поле с числовой переменной содержащей минимальный остаток, далее выбираю для отчета в запросе ту номенклатуру у которой значение минимальный остаток превышает текущий остаток товара на складе, а так же доп сведения по резерву и заказу у поставщиков. Таким запросом:

ВЫБРАТЬ РАЗЛИЧНЫЕ
    Номенклатура1.Ссылка,
    Номенклатура1.Мин_остаток,
    ТоварыНаСкладахОстатки.КоличествоОстаток,
    ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток КАК КоличествоРезерва,
    ЗаказыПоставщикамОстатки.КоличествоОстаток КАК КоличествоЗаказа
ИЗ
    Справочник.Номенклатура КАК Номенклатура1
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
        ПО (ТоварыНаСкладахОстатки.Номенклатура = Номенклатура1.Ссылка)
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки КАК ТоварыВРезервеНаСкладахОстатки
        ПО (ТоварыВРезервеНаСкладахОстатки.Номенклатура = Номенклатура1.Ссылка)
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПоставщикам.Остатки КАК ЗаказыПоставщикамОстатки
        ПО (ЗаказыПоставщикамОстатки.Номенклатура = Номенклатура1.Ссылка)
ГДЕ
    Номенклатура1.Мин_остаток > ТоварыНаСкладахОстатки.КоличествоОстаток

СГРУППИРОВАТЬ ПО
    Номенклатура1.Ссылка,
    Номенклатура1.Мин_остаток,
    ТоварыНаСкладахОстатки.КоличествоОстаток,
    ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток,
    ЗаказыПоставщикамОстатки.КоличествоОстаток

Получаю данные, но проблема в том, что в выборку не попадают позиции номенклатуры с текущим нулевым остатком на складе (похоже потому что не присутсвуют в таблице ТоварыНаСкладахОстатки), как обойти проблему. По резервам и по заказам поставщикам все в порядке.
1 Shurjk
 
15.05.14
13:21
Номенклатура1.Мин_остаток > ЕстьNULL(ТоварыНаСкладахОстатки.КоличествоОстаток,0)
2 redber
 
15.05.14
13:23
Все ок, спасибо! ))
3 redber
 
15.05.14
14:58
Другая проблема вылезла, когда пользователь делает отбор по группе номенклатуры, в отчет вываливается весь список номенклатуры с пустыми значениями по регистрам накопления.
4 AlexITGround
 
15.05.14
15:22
(3) все норм отрабатывает, кидай отчет в скайп, гляну
5 catena
 
15.05.14
15:26
(3)Потому что псевдонимы надо давать, а не надеяться на автомат.
6 redber
 
15.05.14
16:04
(4) На работе скайпа нету((
(5) Сейчас попробую
7 redber
 
15.05.14
16:09
(4) Можно в консоль отчетов просто копирнуть запрос
8 redber
 
15.05.14
16:13
(5) Сделал:

ВЫБРАТЬ РАЗЛИЧНЫЕ
    Номенклатура1.Ссылка КАК Номенклатура,
    Номенклатура1.Мин_остаток КАК МинимальныйОстаток,
    ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток,
    ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток КАК КоличествоРезерва,
    ЗаказыПоставщикамОстатки.КоличествоОстаток КАК КоличествоЗаказа

Та же ситуация
9 salvator
 
15.05.14
16:16
(3) Делай правым соединением
10 redber
 
15.05.14
16:30
(9) Сделал, по группам выводит с нулевыми остатками теперь не выводит.
11 catena
 
16.05.14
05:48
(8)Ты обманываешь.
12 redber
 
16.05.14
09:24
(11) Скрины:

http://i61.fastpic.ru/big/2014/0516/e0/c774383cf41461e46c19d66b72769ce0.png

http://i62.fastpic.ru/big/2014/0516/0e/5f970fa9aafa00444de98ba197be5c0e.png

Но после именования, на номенклатуру стало более корректно ссылаться.
13 Ёпрст
 
16.05.14
09:34
(12) и где там в запросе фильтр по группе номенклатуры ????
14 Ёпрст
 
16.05.14
09:35
Ну и группировать по количеству остатка... это пять!
15 redber
 
16.05.14
09:42
(13) А разве из консоли оно не выбирает только ту номенклатуру которая указана в отборе?
16 Ёпрст
 
16.05.14
10:02
(15) проехали, см (14)
17 redber
 
16.05.14
10:05
(14) Через чур тонкий намек)) Можно более толсто?
18 Ёпрст
 
16.05.14
10:37
выкини группировку по числовым полям из гроуп бай, воткни их в агрегатную функцию в селект.
19 redber
 
16.05.14
10:48
Сделал:

http://i62.fastpic.ru/big/2014/0516/07/597d0bb908d2df3e5d1a258388a60707.png

все равно косячит по группам
20 redber
 
16.05.14
10:49
(18) 3 строчки из кода выкинул, уже хорошо)
21 redber
 
16.05.14
10:54
На прошлом скрине не заметил, что не видно окна отбора:

http://i61.fastpic.ru/big/2014/0516/50/749214884ba006f5a7695bb8fc6d5a50.png
22 Ёпрст
 
16.05.14
11:09
И .. ? что по-твоему неверно сейчас ?

ЗЫ: естьNULL() воткни в поля, которые из левого соединения прилетели

Сумма(ЕстьNULL(....,0)) как ...
23 redber
 
16.05.14
11:19
(22) В таблицу должна попасть Номенклатура из этой группы товаров, а так же подгрупп, у которой МинимальныйОстаток больше текущего остатка на складе.

"Сумма(ЕстьNULL(....,0)) " - нули просто расставит вместо пустых ячеек.
24 Ёпрст
 
16.05.14
11:22
(23) И ???
У тебя сейчас во всех строках МинимальныйОстаток БОЛЬШЕ чем остаток на складе (который равен НУЛЮ)

Что не устраивает ?
25 redber
 
16.05.14
11:28
В таблицу попадает вся номенклатура, даже та у которой родитель совсем другой.

http://i61.fastpic.ru/big/2014/0516/01/e827423aff9ee926e6e58a1d0dd86701.png
26 redber
 
16.05.14
11:29
Отбор идет по группе из предыдущего скрина,это родитель верхнего уровня.
27 redber
 
16.05.14
11:33
(24) На 12 таким же образом работал запрос )
28 redber
 
16.05.14
11:44
Должно делать так, но с таким кодом не выводит с нулевым остатком.
http://i64.fastpic.ru/big/2014/0516/2e/f688a8b8b938004caf00ce57adfc802e.png
29 Ёпрст
 
16.05.14
11:47
Да блин..

Имеющие используй, раз группируешь
30 redber
 
16.05.14
11:48
(29) Не уловил суть(
31 Ёпрст
 
16.05.14
11:51
Выкини своё ГДЕ
и воткни

ИМЕЮЩИЕ СУММА(ЕСТЬNULL(ТоварыНаСкладахОстанки.КоличествоОстанков,0))<МинОстаток
32 redber
 
16.05.14
12:01
33 Ёпрст
 
16.05.14
12:20
может, закроешь к  e6..ям консоль свою, напишешь обычный параметр в текст запроса и проверишь ?
34 redber
 
16.05.14
12:21
(33) Подскажи обычный параметр, что бы учитывал вложенные подгруппы?
35 Ёпрст
 
16.05.14
12:44
(32) В ИЕРАРХИИ (&Вася)
36 redber
 
16.05.14
12:54
(35) Да так заработало (забыл про этот оператор), сделал через консоль))

http://i61.fastpic.ru/big/2014/0516/70/907a1e3922c14addc40e44bac0c36c70.png

Спасибо!! ))
37 redber
 
16.05.14
13:04
Всем спасибо за помощь, реально удалось оптимизировать отчет с выполнения в 4-5 минут до нескольких секунд, и с использованием одного запроса))