Имя: Пароль:
1C
 
Группировка полей в печ форме
0 pro3ri
 
16.10.15
09:35
Добрый день!
Как сделать группировки по полю номенклатура в запросе?

Исходный запрос:
Запрос = Новый Запрос;
        Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);
        
        Запрос.УстановитьПараметр("Курс", 1);
        Запрос.УстановитьПараметр("Кратность", 1);
        
        
        Запрос.Текст =
"ВЫБРАТЬ
        |    ВложенныйЗапрос.Номенклатура КАК Номенклатура,
        |    ВЫРАЗИТЬ(ВложенныйЗапрос.Номенклатура.НаименованиеПолное КАК СТРОКА(1000)) КАК ТоварНаименование,
        |    ВложенныйЗапрос.Номенклатура." + ТоварКод + " КАК ТоварКод,
        |    ВложенныйЗапрос.ЕдиницаИзмерения.Представление КАК БазоваяЕдиницаНаименование,
        |    ВложенныйЗапрос.ЕдиницаИзмерения.ЕдиницаПоКлассификатору.Код КАК БазоваяЕдиницаКодПоОКЕИ,
        |    ВложенныйЗапрос.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
        |    ВложенныйЗапрос.ЕдиницаИзмеренияМест.Представление КАК ВидУпаковки,
        |    ВложенныйЗапрос.КоэффициентМест / ВложенныйЗапрос.Коэффициент КАК КоличествоВОдномМесте,
        |    ВЫБОР
        |        КОГДА ВложенныйЗапрос.КоличествоМест > 0
        |            ТОГДА ВложенныйЗапрос.КоличествоМест * ВложенныйЗапрос.ЕдиницаИзмеренияМест.Вес
        |        ИНАЧЕ ВложенныйЗапрос.Количество * ВложенныйЗапрос.ЕдиницаИзмерения.Вес
        |    КОНЕЦ КАК МассаБрутто,
        |    ВложенныйЗапрос.Характеристика КАК Характеристика,
        |    ВложенныйЗапрос.Серия КАК Серия,
        |    ВложенныйЗапрос.СтавкаНДС КАК СтавкаНДС,
        |    ВложенныйЗапрос.Цена КАК Цена,
        |    ВложенныйЗапрос.Количество КАК Количество,
        |    ВложенныйЗапрос.КоличествоМест КАК КоличествоМест,
        |    ВложенныйЗапрос.Сумма КАК Сумма,
        |    ВложенныйЗапрос.СуммаНДС КАК СуммаНДС,
        |    ВложенныйЗапрос.НомерСтроки КАК НомерСтроки,
        |    ВложенныйЗапрос.Метка КАК Метка
        |ИЗ
        |    (ВЫБРАТЬ
        |        ПредварительнаяНакладная.Номенклатура КАК Номенклатура,
        |        ПредварительнаяНакладная.Коэффициент КАК Коэффициент,
        |        ПредварительнаяНакладная.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
        |        ПредварительнаяНакладная.ЕдиницаИзмеренияМест КАК ЕдиницаИзмеренияМест,
        |        ПредварительнаяНакладная.ЕдиницаИзмеренияМест.Коэффициент КАК КоэффициентМест,
        |        ПредварительнаяНакладная.ХарактеристикаНоменклатуры КАК Характеристика,
        |        ПредварительнаяНакладная.СерияНоменклатуры КАК Серия,
        |        ПредварительнаяНакладная.СтавкаНДС КАК СтавкаНДС,
        |        ПредварительнаяНакладная.Цена * &Курс / &Кратность КАК Цена,
        |        ПредварительнаяНакладная.Количество КАК Количество,
        |        ПредварительнаяНакладная.КоличествоМест КАК КоличествоМест,
        |        ПредварительнаяНакладная.Сумма * &Курс / &Кратность КАК Сумма,
        |        ПредварительнаяНакладная.СуммаНДС * &Курс / &Кратность КАК СуммаНДС,
        |        ПредварительнаяНакладная.НомерСтроки КАК НомерСтроки,
        |        0 КАК Метка
        |    ИЗ
        |        Документ.ПредварительнаяНакладная.Товары КАК ПредварительнаяНакладная
        |    ГДЕ
        |        ПредварительнаяНакладная.Ссылка = &ТекущийДокумент) КАК ВложенныйЗапрос
        |
        |ОБЪЕДИНИТЬ ВСЕ
        |
        |ВЫБРАТЬ
        |    ПредварительнаяНакладная.Номенклатура,
        |    ПредварительнаяНакладная.Содержание,
        |    ПредварительнаяНакладная.Номенклатура." + ТоварКод + ",
        |    NULL,
        |    NULL,
        |    NULL,
        |    NULL,
        |    NULL,
        |    0,
        |    NULL,
        |    NULL,
        |    ПредварительнаяНакладная.СтавкаНДС,
        |    NULL,
        |    NULL,
        |    NULL,
        |    ПредварительнаяНакладная.Сумма * &Курс / &Кратность,
        |    ПредварительнаяНакладная.СуммаНДС * &Курс / &Кратность,
        |    ПредварительнаяНакладная.НомерСтроки,
        |    1
        |ИЗ
        |    Документ.ПредварительнаяНакладная.Услуги КАК ПредварительнаяНакладная
        |ГДЕ
        |    ПредварительнаяНакладная.Ссылка = &ТекущийДокумент
        |
        |УПОРЯДОЧИТЬ ПО
        |    Метка,
        |    НомерСтроки";
        ЗапросТовары = Запрос.Выполнить().Выгрузить();

Модифицировал:
ВЫБРАТЬ
    ВложенныйЗапрос.Номенклатура КАК Номенклатура,
    ВЫРАЗИТЬ(ВложенныйЗапрос.Номенклатура.НаименованиеПолное КАК СТРОКА(1000)) КАК ТоварНаименование,
    ВложенныйЗапрос.Номенклатура.Код КАК ТоварКод,
    ВложенныйЗапрос.ЕдиницаИзмерения.Представление КАК БазоваяЕдиницаНаименование,
    ВложенныйЗапрос.ЕдиницаИзмерения.ЕдиницаПоКлассификатору.Код КАК БазоваяЕдиницаКодПоОКЕИ,
    ВложенныйЗапрос.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
    ВложенныйЗапрос.ЕдиницаИзмеренияМест.Представление КАК ВидУпаковки,
    ВложенныйЗапрос.КоэффициентМест / ВложенныйЗапрос.Коэффициент КАК КоличествоВОдномМесте,
    ВЫБОР
        КОГДА ВложенныйЗапрос.КоличествоМест > 0
            ТОГДА ВложенныйЗапрос.КоличествоМест * ВложенныйЗапрос.ЕдиницаИзмеренияМест.Вес
        ИНАЧЕ ВложенныйЗапрос.Количество * ВложенныйЗапрос.ЕдиницаИзмерения.Вес
    КОНЕЦ КАК МассаБрутто,
    ВложенныйЗапрос.Характеристика КАК Характеристика,
    ВложенныйЗапрос.Серия КАК Серия,
    ВложенныйЗапрос.СтавкаНДС КАК СтавкаНДС,
    ВложенныйЗапрос.Цена КАК Цена,
    СУММА(ВложенныйЗапрос.Количество) КАК Количество,
    СУММА(ВложенныйЗапрос.КоличествоМест) КАК КоличествоМест,
    СУММА(ВложенныйЗапрос.Сумма) КАК Сумма,
    СУММА(ВложенныйЗапрос.СуммаНДС) КАК СуммаНДС,
    СУММА(ВложенныйЗапрос.НомерСтроки) КАК НомерСтроки,
    ВложенныйЗапрос.Метка КАК Метка
ИЗ
    (ВЫБРАТЬ
        ПредварительнаяНакладная.Номенклатура КАК Номенклатура,
        ПредварительнаяНакладная.Коэффициент КАК Коэффициент,
        ПредварительнаяНакладная.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
        ПредварительнаяНакладная.ЕдиницаИзмеренияМест КАК ЕдиницаИзмеренияМест,
        ПредварительнаяНакладная.ЕдиницаИзмеренияМест.Коэффициент КАК КоэффициентМест,
        ПредварительнаяНакладная.ХарактеристикаНоменклатуры КАК Характеристика,
        ПредварительнаяНакладная.СерияНоменклатуры КАК Серия,
        ПредварительнаяНакладная.СтавкаНДС КАК СтавкаНДС,
        ПредварительнаяНакладная.Цена * &Курс / &Кратность КАК Цена,
        ПредварительнаяНакладная.Количество КАК Количество,
        ПредварительнаяНакладная.КоличествоМест КАК КоличествоМест,
        ПредварительнаяНакладная.Сумма * &Курс / &Кратность КАК Сумма,
        ПредварительнаяНакладная.СуммаНДС * &Курс / &Кратность КАК СуммаНДС,
        ПредварительнаяНакладная.НомерСтроки КАК НомерСтроки,
        0 КАК Метка
    ИЗ
        Документ.ПредварительнаяНакладная.Товары КАК ПредварительнаяНакладная
    ГДЕ
        ПредварительнаяНакладная.Ссылка = &ТекущийДокумент) КАК ВложенныйЗапрос

СГРУППИРОВАТЬ ПО
    ВложенныйЗапрос.Номенклатура,
    ВЫРАЗИТЬ(ВложенныйЗапрос.Номенклатура.НаименованиеПолное КАК СТРОКА(1000)),
    ВложенныйЗапрос.Номенклатура.Код,
    ВложенныйЗапрос.ЕдиницаИзмерения.Представление,
    ВложенныйЗапрос.ЕдиницаИзмерения.ЕдиницаПоКлассификатору.Код,
    ВложенныйЗапрос.ЕдиницаИзмерения,
    ВложенныйЗапрос.ЕдиницаИзмеренияМест.Представление,
    ВложенныйЗапрос.КоэффициентМест / ВложенныйЗапрос.Коэффициент,
    ВЫБОР
        КОГДА ВложенныйЗапрос.КоличествоМест > 0
            ТОГДА ВложенныйЗапрос.КоличествоМест * ВложенныйЗапрос.ЕдиницаИзмеренияМест.Вес
        ИНАЧЕ ВложенныйЗапрос.Количество * ВложенныйЗапрос.ЕдиницаИзмерения.Вес
    КОНЕЦ,
    ВложенныйЗапрос.Характеристика,
    ВложенныйЗапрос.Серия,
    ВложенныйЗапрос.СтавкаНДС,
    ВложенныйЗапрос.Цена,
    ВложенныйЗапрос.Метка

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ПредварительнаяНакладная.Номенклатура,
    ПредварительнаяНакладная.Содержание,
    ПредварительнаяНакладная.Номенклатура.Код,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    0,
    NULL,
    NULL,
    ПредварительнаяНакладная.СтавкаНДС,
    NULL,
    NULL,
    NULL,
    СУММА(ПредварительнаяНакладная.Сумма * &Курс / &Кратность),
    СУММА(ПредварительнаяНакладная.СуммаНДС * &Курс / &Кратность),
    ПредварительнаяНакладная.НомерСтроки,
    1
ИЗ
    Документ.ПредварительнаяНакладная.Услуги КАК ПредварительнаяНакладная
ГДЕ
    ПредварительнаяНакладная.Ссылка = &ТекущийДокумент

СГРУППИРОВАТЬ ПО
    ПредварительнаяНакладная.Номенклатура,
    ПредварительнаяНакладная.Номенклатура.Код,
    ПредварительнаяНакладная.Содержание,
    ПредварительнаяНакладная.СтавкаНДС,
    ПредварительнаяНакладная.НомерСтроки

УПОРЯДОЧИТЬ ПО
    Метка,
    НомерСтроки

Или лучше использовать метод Свернуть()?

Свернуть = ЗапросТовары;
Свернуть.Свернуть("ТоварКод");
1 hhhh
 
16.10.15
09:57
по номеру строки тоже сворачиваешь? ну-ну.
2 Fedor-1971
 
16.10.15
10:08
(0) Группировка полей в печатной форме и группировка записей в запросе разные вещи.
По идее в запросах: сначала нечто выбираем, объединяем и только потом группируем. В твоём случае для удобочитаемости запихни результат своего объединения во временную таблицу и по ней сделай группировку по нужным тебе полям.

Вопроса про группировку полей печатной формы как-то не видно.
3 pro3ri
 
16.10.15
12:11
(1) а как быть? если ее оставляешь невыбранным справа, оно лезет https://s.mail.ru/3EhuvgYQGUq1/img-2015-10-16-14-11-34.png и так вообще не сворачивает
4 pro3ri
 
16.10.15
13:41
ап