Имя: Пароль:
1C
1С v8
Помогите с запросом
0 Владимир1С
 
19.06.14
13:50
Суть:
Есть виртуальная таблица остатков/оборотов, есть регистр цен.

Нужно получить цены товаров, продававшихся за период. Если цены нет, то просто ничего. Вместо ничего из результата уходит номенклатура

Пишу запрос:

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

СГРУППИРОВАТЬ ПО
    ЦеныНоменклатурыСрезПоследних.Номенклатура,
    ЦеныНоменклатурыСрезПоследних.Номенклатура.Объединение.Код
ИТОГИ ПО
    Номенклатура ИЕРАРХИЯ
АВТОУПОРЯДОЧИВАНИЕ



Получаю вместо одной строки две строки по одному товару. Что не так?
1 Вазелин
 
19.06.14
13:52
(0) Одна строка - строка, вторая - итоги по группировке.
2 vicof
 
19.06.14
13:53
А условия в параметрах и в ГДЕ зачем дублировать? Для надежности?
3 vicof
 
19.06.14
13:53
И запрос через 3 точки это плохо
4 Владимир1С
 
19.06.14
13:54
(2) Попытки исправить ситуацию
5 Владимир1С
 
19.06.14
13:54
(3) Спасибо, учту.
6 Владимир1С
 
19.06.14
13:55
(1) сейчас пройдусь, поправлю.
7 Wobland
 
19.06.14
13:55
а цены конца периода интересуют?
8 Wobland
 
19.06.14
13:56
валялся у меня где-то эталонный запрос. списание номенклатуры и цена на момент списания...
9 Владимир1С
 
19.06.14
13:57
(7) Да, Это блок поправки удвоений. удвоения ушли.
10 RomanYS
 
19.06.14
13:58
Номенклатуру берешь из таблицы цен - это так задумано?
11 Владимир1С
 
19.06.14
14:00
(10) Пока это всё равно. Главное - результат.
Но список товаров всё равно отрезает по количеству установленных цен в регистре цен.
12 Wobland
 
19.06.14
14:02
все слова знаю. но "список отрезает по количеству установленных цен" вызывает во мне исключение
13 RomanYS
 
19.06.14
14:03
(11) так возьми номенклатуру из оборотов
А сейчас: нет цены в базе - нет номенклатуры в выборке
14 vicof
 
19.06.14
14:04
(10) +1
15 RomanYS
 
19.06.14
14:06
(12)+1
мне еще понравилось "то просто ничего"
16 Владимир1С
 
19.06.14
14:06
(13) переделал на номенклатуру из оборотов. получилось то, что нужно. Спасибо за помощь!
17 Владимир1С
 
19.06.14
14:06
(12) Количество позиций номенклатуры становиться равным количеству цен в регистре цен. :)
18 RomanYS
 
19.06.14
14:09
(17) Пожалуйста.
Только все равно не понятно, что тебе было нужно.
В итоге ты вообще ничего не берешь из таблицы цен.
19 Владимир1С
 
19.06.14
14:11
Это урезаный запрос, для ускорения решения проблемы. Цены уже взялись.
Теперь пропала иерархия.
ВЫБРАТЬ РАЗЛИЧНЫЕ
    МАКСИМУМ(ЦеныНоменклатурыСрезПоследних.Цена / ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения.Коэффициент * (1 + ЦеныНоменклатурыСрезПоследних.ПроцентСкидкиНаценки / 100)) КАК ЦенаШтуки,
    МАКСИМУМ(ЦеныНоменклатурыСрезПоследних.Цена / ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения.Коэффициент * ЦеныНоменклатурыСрезПоследних.Номенклатура.ЕдиницаДляОтчетов.Коэффициент * (1 + ЦеныНоменклатурыСрезПоследних.ПроцентСкидкиНаценки / 100)) КАК ЦенаКороба,
    МАКСИМУМ(ТоварыНаСкладахОбороты.КоличествоОборот) КАК КоличествоОборот,
    МАКСИМУМ(ТоварыНаСкладахОбороты.КоличествоПриход) КАК КоличествоПриход,
    МАКСИМУМ(ТоварыНаСкладахОбороты.КоличествоРасход) КАК КоличествоРасход,
    ТоварыНаСкладахОбороты.Номенклатура КАК Номенклатура,
    ТоварыНаСкладахОбороты.Номенклатура.Объединение.Код
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Обороты(
            &НачПериода,
            &ТекущийПериод,
            ,
            Склад В ИЕРАРХИИ (&Склад)
                И Номенклатура В ИЕРАРХИИ (&Номенклатура)) КАК ТоварыНаСкладахОбороты
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
                &ТекущийПериод,
                ТипЦен = &ТипЦен
                    И Номенклатура В ИЕРАРХИИ (&Номенклатура)) КАК ЦеныНоменклатурыСрезПоследних
        ПО ТоварыНаСкладахОбороты.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
ГДЕ
    ТоварыНаСкладахОбороты.КоличествоРасход <> 0
    И ТоварыНаСкладахОбороты.Номенклатура В ИЕРАРХИИ(&Номенклатура)

СГРУППИРОВАТЬ ПО
    ТоварыНаСкладахОбороты.Номенклатура,
    ТоварыНаСкладахОбороты.Номенклатура.Объединение.Код
АВТОУПОРЯДОЧИВАНИЕ
20 Wobland
 
19.06.14
14:12
этоги пропали, да? и открой для себя естьнулл()
21 Wobland
 
19.06.14
14:13
такое впечатление, что там складывать количество надо
22 Владимир1С
 
19.06.14
14:14
(20)Итоги мне не нужны впринципе.
Нужна только иерархия.
23 Wobland
 
19.06.14
14:15
намёк не понял. ну и ладно
24 Владимир1С
 
19.06.14
14:16
(23) Иерархия и итоги неразделимы? А где логика? Какие итоги в прайслисте???
25 Wobland
 
19.06.14
14:18
итоги делают дерево. безжалостно и неумолимо, без всяких логик. не, можно и агрегатные функции использовать, конечно
26 Wobland
 
19.06.14
14:18
а зачем количество в прайсе?
27 Владимир1С
 
19.06.14
14:19
(25) Как Ленин и Партия... неразделимы :(
28 Владимир1С
 
19.06.14
14:22
(26) Чтобы покупатели знали, что как продаётся. Что покупать в первую очередь, а что как получиться.
29 Wobland
 
19.06.14
14:23
ну точно СУММА
30 Владимир1С
 
19.06.14
14:25
(29) это детали...
31 Владимир1С
 
19.06.14
14:32
Всем большое спасибо, то, за чем приходил, получилось :)