Имя: Пароль:
1C
1С v8
группировка полей по строкам
0 Luganchanin
 
29.08.16
14:57
Есть отчет на СКД в котором данные получаются следующим запросом:
ВЫБРАТЬ
    ОстаткиИПродажи.Номенклатура КАК Номенклатура,
    Склады.Ссылка КАК Склад,
    СУММА(ОстаткиИПродажи.ВНаличииОстаток) КАК ОстатокМагазина,
    СУММА(ОстаткиИПродажи.КоличествоОборот) КАК ПродажиМагазина,
    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена
ПОМЕСТИТЬ ВТ_1
ИЗ
    (ВЫБРАТЬ
        ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
        ТоварыНаСкладахОстатки.ВНаличииОстаток КАК ВНаличииОстаток,
        0 КАК КоличествоОборот
    ИЗ
        РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаАнализа, Склад = &Склад) КАК ТоварыНаСкладахОстатки
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
        ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Номенклатура,
        0,
        ВыручкаИСебестоимостьПродажОбороты.КоличествоОборот
    ИЗ
        РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(&ДатаНачалаАнализа, &ДатаАнализа, , Склад = &Склад) КАК ВыручкаИСебестоимостьПродажОбороты) КАК ОстаткиИПродажи
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаАнализа, ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследних
        ПО ОстаткиИПродажи.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура,
    Справочник.Склады КАК Склады
ГДЕ
    Склады.Ссылка В(&ЦСклад)

СГРУППИРОВАТЬ ПО
    ОстаткиИПродажи.Номенклатура,
    Склады.Ссылка,
    ЦеныНоменклатурыСрезПоследних.Цена
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_1.Номенклатура,
    ВТ_1.Цена,
    ВТ_1.ОстатокМагазина,
    ВТ_1.ПродажиМагазина,
    ВТ_1.Склад,
    ЕСТЬNULL(СвободныеОстаткиОстатки.ВНаличииОстаток, 0) КАК ВНаличииОстаток
ИЗ
    ВТ_1 КАК ВТ_1
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СвободныеОстатки.Остатки(&ДатаАнализа, Склад В (&ЦСклад)) КАК СвободныеОстаткиОстатки
        ПО ВТ_1.Номенклатура = СвободныеОстаткиОстатки.Номенклатура
            И ВТ_1.Склад = СвободныеОстаткиОстатки.Склад

Проблема в следующем: если поставить группировку по номенклатуре по строкам, то поля ОстатокТЦ и ПродажиТЦ суммируются, а если не ставить группировку то тогда каждая номенклатура идет столько раз, сколько доп.складов есть в параметре &ЦСклад

Подскажите, люди мудрые, как сгруппировать по номенклатуре таким образом, чтобы поля ОстатокТЦ, ОборотыТЦ и пр. не суммировались
1 Лефмихалыч
 
29.08.16
14:59
из ресурсов эти поля убери
2 Luganchanin
 
29.08.16
15:06
(1) внесение и вынесение этих полей из ресурсов картины не меняет
3 Ёпрст
 
29.08.16
15:10
(0) выкинь кросс джоин со справочником Склады.
4 Ёпрст
 
29.08.16
15:10
И из селекта тоже выкинь эту дурь.
5 Ёпрст
 
29.08.16
15:11
В селект листе смотри на измерение.
Наслаждайся, кушай печенки
6 Luganchanin
 
29.08.16
15:27
(5) Ёпрст, за печеньки спасибо.
из первого запроса склад убрал, во втором добавил, ибо в результатах нужны остатки по каждому из складов отдельным столбцом.
по факту ничего не изменилось в отчете.
а что значит смотреть на измерение?
У меня для полей Номенклатура и Склад стоит роль "Измерение"
7 Ёпрст
 
29.08.16
15:29
(6) показывай, че ты там выкинул
8 Luganchanin
 
29.08.16
15:30
(7) как-то так получилось:

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

СГРУППИРОВАТЬ ПО
    ОстаткиИПродажи.Номенклатура,
    ЦеныНоменклатурыСрезПоследних.Цена
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_1.Номенклатура КАК Номенклатура,
    ВТ_1.Цена КАК Цена,
    ВТ_1.ОстатокМагазина КАК ОстатокМагазина,
    ВТ_1.ПродажиМагазина КАК ПродажиМагазина,
    СвободныеОстаткиОстатки.Склад,
    ЕСТЬNULL(СвободныеОстаткиОстатки.ВНаличииОстаток, 0) КАК ВНаличииОстаток
    
ИЗ
    ВТ_1 КАК ВТ_1
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СвободныеОстатки.Остатки(&ДатаАнализа, Склад В (&ЦСклад)) КАК СвободныеОстаткиОстатки
        ПО (ВТ_1.Номенклатура = СвободныеОстаткиОстатки.Номенклатура)
9 Ёпрст
 
29.08.16
15:33
(8) во втором запросе, либо делай соединение и по складу тоже.
А то в одном регистре смотришь останки по одному складу, во втором запросе по-другому, в результате каша мала.
10 Ёпрст
 
29.08.16
15:34
Нафига 2 разных условия ?

Склад = &Склад и
Склад В (&ЦСклад) ? Че с чем "скрещиваешь" ?
11 Ёпрст
 
29.08.16
15:37
>>>а что значит смотреть на измерение?
Это значит, что в запросе выбирать
ТоварыНаСкладахОстатки.Склад или ВыручкаИСебестоимостьПродажОбороты.Склад

а не делать кросс джоин с Справочником.Склады
12 Luganchanin
 
29.08.16
15:37
(10) это два разных параметра.
1-й это склад по которому делается отчет. Т.е. смотрятся остатки и обороты, а из них вычисляются данные для дозаказа

а ЦСклад это группа складов (один и более или вообще может не быть) остатки на которых показываются как дополнительная информация
13 Ёпрст
 
29.08.16
15:41
(12) И ?

вот в первом запросе ты получил
валенки , остаток на Склад = 12 штук.

Делая левое соединение по номенклатуре, получишь ровно столько строк, сколько было складов в регистре Свободные остатки, где остаток по валенкам был не нуль..
Те так надо ? То и имеешь.
14 Luganchanin
 
29.08.16
15:44
(13) именно так и получаю
ровно столько раз каждую позицию по номенклатуре сколько дополнительных складов выбрано.
но надо как раз чтобы склады из одного столбца развернуть в строку (это СКД сделало) и по номенклатуре остатки на основном складе не суммировались
15 hhhh
 
29.08.16
15:57
(14) напиши

СГРУППИРОВАТЬ ПО
    ОстаткиИПродажи.Номенклатура,
    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0)

должно быть всё одинаково, чтобы поменьше глюков
16 Luganchanin
 
29.08.16
16:01
(15) хорошо, но ведь это принципиально ничего не меняет
17 Luganchanin
 
30.08.16
12:18
Спасибо, народ. Ошибка самоустранилася.
Судя по всему битая копия базы. Выполнил отчет на другой копии: все отработало как положено