Имя: Пароль:
1C
1C 7.7
v7: 1С 7,7 в запросе свернуть одинаковые строки
0 aleksander1sk
 
26.08.15
10:38
Есть запрос:
//*******************************************
// Процедура генерации запроса Сформировать.
//
Процедура Сформировать()
    Перем Запрос, ТекстЗапроса, Таб;
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |Обрабатывать НеПомеченныеНаУдаление;
    |Продажи = Регистр.Продажи.Товар;
    |Продажи1 = Регистр.Продажи.ТочкаДоставки;
    |Сумма = Регистр.Продажи.Сумма;
    |ТП = Регистр.Продажи.ТП;
    |Товар = Регистр.Продажи.Товар;
    |дкРасходнаяНакладная = Регистр.Продажи.ТекущийДокумент.дкРасходнаяНакладная.ТекущийДокумент;
    |Функция СуммаСумма = Сумма(Сумма);
    |Функция Счётчик = Счётчик();
    |Группировка ТП;
    |Группировка дкРасходнаяНакладная упорядочить по дкРасходнаяНакладная.рПунктДоставки;
    |Условие(ТП в ВыбТП);
    |Условие(Товар в ВыбТовар);
    |"//}}ЗАПРОС
    ;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;

    // Подготовка к заполнению выходных форм данными запроса
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Сформировать");
    // Заполнение полей "Заголовок"
    Таб.ВывестиСекцию("Заголовок");
    Состояние("Заполнение выходной таблицы...");
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
    Пока Запрос.Группировка(1) = 1 Цикл
        // Заполнение полей ТП
        Таб.ВывестиСекцию("ТП");
        Пока Запрос.Группировка(2) = 1 Цикл
            // Заполнение полей дкРасходнаяНакладная
            Таб.ВывестиСекцию("дкРасходнаяНакладная");
        КонецЦикла;
    КонецЦикла;
    // Заполнение полей "Итого"
    Таб.ВывестиСекцию("Итого");
    // Вывод заполненной формы
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Сформировать", "");
КонецПроцедуры

Когда выводит таблицу, нужно сделать так, чтобы одинаковые строки отображались только раз, а сумма продаж суммировалась, то есть:
Было:
Магазин1 500
Магазин2 300
магазин2 300

Нужно:
Магазин1 500
Магазин2 600
1 Злопчинский
 
26.08.15
10:51
ТП - тупая пилотка? - расшифруй уже смысл, потому что пример вывода информации не соответсвует тексту запроса - гле группировка, которая стоит над "магазинами"...?

Если все так как ты написал то группировка ТП детализирует пункты доставки и не дает им свернуться
2 aleksander1sk
 
26.08.15
10:54
(1) ТП - торговый представитель
3 Злопчинский
 
26.08.15
10:57
ну очевидно (?), что  с магазин2 работало два разных ТП - поэтому Магазин2 и не суммируется - так как относятся к разным ТП.
4 Злопчинский
 
26.08.15
10:58
сделай выгрузкой запроса тупую плоскую таблицу (ТЗ) вида:

ПредставительN МагазинX Сумма

и подсунь с передачей параметров в универсальный отчет по ТЗ: http://catalog.mista.ru/public/14794/

- и мышкой строй лбые отчеты с разным порядком группировок/шахматки
5 aleksander1sk
 
26.08.15
11:03
(3) Проблема в том, что это как раз 1 торговый представитель, и по нему не сумирует.
6 DCKiller
 
26.08.15
11:10
(5) Значит, было 2 разных накладных
7 Дотошный
 
26.08.15
11:12
Вот эта группировка
|Группировка дкРасходнаяНакладная упорядочить по дкРасходнаяНакладная.рПунктДоставки;
не вполне отвечает Вашим потребностям
ИМХО
8 aleksander1sk
 
26.08.15
11:14
(6) Правильно, нужно как то их свернуть в одну строку
9 Злопчинский
 
26.08.15
11:15
Приведи скриншот ОРИГИАНЛЬНОЙ печформы, получающейся по запросу
10 DCKiller
 
26.08.15
11:19
(8) Убери вторую группировку
11 aleksander1sk
 
26.08.15
11:27
http://joxi.ru/Vm65kGLIp6BqrZ
Если убираю вторую группировку, то не показывает точки доставки вообще.
12 Злопчинский
 
26.08.15
11:27
(5) Не верю!
13 Злопчинский
 
26.08.15
11:31
ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)

    |Период с ВыбНачПериода по ВыбКонПериода;
    |Сумма = Регистр.Продажи.Сумма;
    |ТП = Регистр.Продажи.ТП;
    |дкРасходнаяНакладная = Регистр.Продажи.ТекущийДокумент.дкРасходнаяНакладная.ТекущийДокумент;
    |Функция СуммаСумма = Сумма(Сумма);
    |Группировка ТП;
    |Группировка дкРасходнаяНакладная упорядочить по дкРасходнаяНакладная.рПунктДоставки;
    |Условие(ТП в ВыбТП);
    |Условие(Товар в ВыбТовар);
    |"//}}ЗАПРОС

- запускай вот такой, должно быть ок
14 aleksander1sk
 
26.08.15
11:31
(12) http://joxi.ru/Drl7EG6FgD4qAP если убрать вторую группировку
15 aleksander1sk
 
26.08.15
11:35
(13) http://joxi.ru/Y2Lp8bMF5z9j26
Все равно
16 Злопчинский
 
26.08.15
12:37
(15) ну, если не заборол и все плохо то стучись в скайп Zlopun после 18-00 и готовь ид/пароль для тима... должно же все работать...
17 Злопчинский
 
26.08.15
12:38
.. или я тупой - такое тоже нельзя сбрасывать со счетов...
.
тьфу я точно тупой глаз замылен
все понятно
18 Злопчинский
 
26.08.15
12:42
Группировка у тебя по РАСХОДНОМУ ДОКУМЕНТУ.
а по точкам доставки всего лишь СОРТИРОВКА
19 Злопчинский
 
26.08.15
12:44
|Период с ВыбНачПериода по ВыбКонПериода;
    |Сумма = Регистр.Продажи.Сумма;
    |ТП = Регистр.Продажи.ТП;
    |ТочкаДоставки= Регистр.Продажи.ТочкаДоставки; //здесь напи
    |Функция СуммаСумма = Сумма(Сумма);
    |Группировка ТП;
    |Группировка ТочкаДоставки упорядочить по ТочкаДоставки.Наименование;
    |Условие(ТП в ВыбТП);
    |"//}}ЗАПРОС
20 Злопчинский
 
26.08.15
12:44
пойду застрелюсь от стыда...