Имя: Пароль:
1C
1С v8
временная таблица группировка
0 prtx
 
15.02.16
00:19
Доброй ночи, граждане!

Говорю сразу, на запрос забейте(может пару советов и все) меня колышит одна проблема в запросе: группировка во временной таблице.

вариант1

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

вариант2

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

разница между ними в том, что в вариант1 результат я получаю сгруппированный, а вариант2 нет. так вот мой вопрос: какого х**ена? у меня лыжи вообще не едут...

я так понимаю вариант2: я достаю то что мне нужно и сразу его группирую, дальше с этими данными еще что-то делаю и выбираю, и на выходе я должен получить сгруппированные данные, в чем моя ошибка...

Объясните принцип работы запросов1
1 prtx
 
15.02.16
00:28
(0) на всякий пожарный.

вариант1 я группирую во втором запрос

вариант2 я группирую в первом запросе
2 H A D G E H O G s
 
15.02.16
00:35
Вариант 2.
Одной записи таблицы ПроданныеТовары может соответствовать 2 и более записи одной из присоединенных таблиц.
3 prtx
 
15.02.16
00:50
(2) точно. спасибо. так оно есть, чет я не допетрел)))

сейчас будем думать, как бы это все покрасивее организовать.
4 H A D G E H O G s
 
15.02.16
00:53
(3) Дин список?
5 prtx
 
15.02.16
01:02
(4) ? непонял
6 hhhh
 
15.02.16
01:22
(5) ыообще разные запросы:

в первом запросе

    ТоварыНаСкладахОбороты.Документ
                      
во втором

    ТоварыНаСкладахОбороты.Регистратор


поэтому не сворачивает
7 Vakhrin
 
15.02.16
01:26
Да, регистратор в группировке однозначно лишний. В первом варианте его просто нет )
8 prtx
 
15.02.16
10:55
(6) (7) сори, по сути и там и там храниться одно и тоже, это ссылки на документ.

регистратор(документ) - лишний, но это понимаю я и вы, а скд (зараза), или группирует по всем полям или не по каким.
9 hhhh
 
15.02.16
11:01
(8) документ и регистратор - здесь разные документы. Иногда совпадают. Поставьте во втором запросе Документ и не парьте нам мозг.
Закон Брукера: Даже маленькая практика стоит большой теории.