Имя: Пароль:
1C
1С v8
Вывод итогов в отчете
,
0 andrig
 
21.06.18
11:33
как вывести итоги по партнеру.
В середине закоммментил. не выходит из цикла    

РезультатЗапроса = Запрос.Выполнить();
    ТабЗн = РезультатЗапроса.Выгрузить();
    ТабЗн.Сортировать("Партнер,Номенклатура,Месяц");
    ТабЗн.Свернуть("Партнер,Номенклатура,Месяц","Количество,Сумма1");
    
    ТЗ1 = Новый ТаблицаЗначений;
    ТЗ1.Колонки.Добавить("Месяц");
    
    ТЗ2 = Новый ТаблицаЗначений;
    ТЗ2.Колонки.Добавить("Месяц");
    
    Д1 = НачалоМесяца(Период1.ДатаНачала);
    
    Пока Д1 <= НачалоМесяца(Период1.ДатаОкончания) Цикл
        
        НовСтр = ТЗ1.Добавить();
        НовСтр.Месяц = Д1;
        Д1 = ДобавитьМесяц(Д1,1);
        
    КонецЦикла;
    
    
    Д = НачалоМесяца(Период2.ДатаНачала);
    
    Пока Д <= НачалоМесяца(Период2.ДатаОкончания) Цикл
        
        НовСтр = ТЗ2.Добавить();
        НовСтр.Месяц = Д;
        Д = ДобавитьМесяц(Д,1);
        
    КонецЦикла;
    
    Если Не ТЗ1.Количество()= Тз2.Количество() Тогда
        Сообщить("Количество периодов не совпадает");       
        Возврат;
    КонецЕсли;
    
    ТзК = ТабЗн.Скопировать();
    ТЗк.Свернуть("Партнер,Номенклатура","Количество,Сумма1");
    ТЗк.Сортировать("Партнер,Номенклатура");
    Кол = Тз1.Количество();
    
    ТекКл = "";
    ПредКл = "";
    
    ТекНом = "";
    ПредНом = "";
    //ТзК.Сдвинуть(0,1);
    Для каждого Стр  Из ТЗк Цикл
        
        ТекКл = Стр.Партнер;
        ТекНом = Стр.Номенклатура;
        
        Если НЕ (ТекКл = ПредКл)Тогда
            Если не (ПредКл = "") Тогда
                ТабличныйДокумент.ЗакончитьГруппуСтрок();
            КонецЕсли;
                        ОбластьБаза = Макет.ПолучитьОбласть("База|Клиент");
            ОбластьБаза.Параметры.Клиент = стр.Партнер;
            ТабличныйДокумент.Вывести(ОбластьБаза);
            
            ТабличныйДокумент.НачатьГруппуСтрок();

            ОбластьБаза = Макет.ПолучитьОбласть("База|Клиент");
            ОбластьБаза.Параметры.Клиент = "";
            ТабличныйДокумент.Вывести(ОбластьБаза);
            
            //
            //    вывод значений по клиенту !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    //        
    //          ТзК = ТабЗн.Скопировать();
    //ТЗк.Свернуть("Партнер","Сумма1");
    //Кол = Тз1.Количество();
    //
    //ТекКл = "";
    //ПредКл = "";
    ////ТзК.Сдвинуть(0,1);
    //Для каждого Стр  Из ТЗк Цикл
    //    
    //    ТекКл = Стр.Партнер;
    //    
    //    //Выводим секцию 1 колонка - название Партнера
    //    Для Инд = 0 по кол - 1 Цикл
    //        
    //        пер1 = тз1.Получить(инд);
    //        пар = Новый Структура("Партнер,Месяц",стр.Партнер,пер1.Получить(0));
    //        
    //        Сум1 = Неопределено;
    //        Сум1 = ТабЗн.НайтиСтроки(пар);
    //        
    //        сумма1 = 0;
    //        сумма2 = 0;
    //        Итого1 = 0;
    //        Итого2 = 0;
    //        Если не сум1.Количество()= 0 Тогда
    //            Сумма1 = Сум1[0].сумма1;
    //        КонецЕсли;
    //        
    //        Пер2 = тз2.Получить(инд);
    //        
    //        пар = Новый Структура("Партнер,Месяц",стр.Партнер,пер2.Получить(0));
    //        
    //        Сум2 =  ТабЗн.НайтиСтроки(пар);
    //        
    //        Если не сум2.Количество() = 0 Тогда  
    //            Сумма2 = Сум2[0].сумма1;
    //        КонецЕсли;
    //        
    //        Если НЕ (ТекКл = ПредКл)Тогда
    //            
    //            ОбластьБаза = Макет.ПолучитьОбласть("База|Клиент");
    //            ОбластьБаза.Параметры.Клиент = стр.Партнер;
    //            ТабличныйДокумент.Вывести(ОбластьБаза);
    //            ПредКл = ТекКл;
    //            
    //        КонецЕсли;
    //        
    //        
    //        
    //        //Если пер1.Получить(0) = Период1.ДатаНачала Тогда
    //        
    //        ОбластьПер1 = Макет.ПолучитьОбласть("База|Пер1");
    //        //ОбластьПер1.Параметры.Кол = ;
    //        ОбластьПер1.Параметры.Сумм = Сумма1;
    //        ТабличныйДокумент.Присоединить(ОбластьПер1);
    //        
    //        
    //        
    //        ОбластьПер2 = Макет.ПолучитьОбласть("База|Пер2");
    //        //ОбластьПер2.Параметры.Кол = ;
    //        ОбластьПер2.Параметры.Сумм = Сумма2;
    //        ТабличныйДокумент.Присоединить(ОбластьПер2);
    //        
    //        
    //        
    //                    
    //        
    //    КонецЦикла;
    //    
    //    
    //КонецЦикла;

            //
            
            
            ОбластьБазаН = Макет.ПолучитьОбласть("База|Номенкл");
            ОбластьБазаН.Параметры.Ном = ТекНом;
            ТабличныйДокумент.присоединить(ОбластьБазаН);
            
            ПредКл = ТекКл;
            //продолжить;
        Иначе
            ОбластьБаза = Макет.ПолучитьОбласть("База|Клиент");
            ОбластьБаза.Параметры.Клиент = "";
            ТабличныйДокумент.Вывести(ОбластьБаза);
            
            
            ОбластьБазаН = Макет.ПолучитьОбласть("База|Номенкл");
            ОбластьБазаН.Параметры.Ном = ТекНом;
            ТабличныйДокумент.присоединить(ОбластьБазаН);
            
        КонецЕсли;
        //Выводим секцию 1 колонка - название Партнера
        Для Инд = 0 по кол - 1 Цикл
            
            
            пер1 = тз1.Получить(инд);
            пар = Новый Структура("Партнер,Номенклатура,Месяц",стр.Партнер,стр.Номенклатура,пер1.Получить(0));
            
            Сум1 = Неопределено;
            Колл1  = Неопределено;
            
            Сум1 = ТабЗн.НайтиСтроки(пар);
            Кол1 =  ТабЗн.НайтиСтроки(пар);
            
            сумма1 = 0;
            сумма2 = 0;
            Колл1 = 0;
            Колл2 =0;
            
            //Итого1 = 0;
            //Итого2 = 0;
            
            Если не сум1.Количество()= 0 Тогда
                Сумма1 = Сум1[0].сумма1;
                Колл1 = Кол1[0].Количество;
            КонецЕсли;
            
            Пер2 = тз2.Получить(инд);
            
            пар = Новый Структура("Партнер,Номенклатура,Месяц",стр.Партнер,стр.Номенклатура,пер2.Получить(0));
            
            
            Сум2 =  ТабЗн.НайтиСтроки(пар);
            Кол2 =  ТабЗн.НайтиСтроки(пар);
            
            Если не сум2.Количество() = 0 Тогда  
                Сумма2 = Сум2[0].сумма1;
                Колл2 = Кол2[0].Количество;
            КонецЕсли;
            
            
            //ПредКл = ТекКл;
            
            
            //Если пер1.Получить(0) = Период1.ДатаНачала Тогда
            
            ОбластьПер1 = Макет.ПолучитьОбласть("База|Пер1");
            ОбластьПер1.Параметры.Кол = Колл1;
            ОбластьПер1.Параметры.Сумм = Сумма1;
            ТабличныйДокумент.Присоединить(ОбластьПер1);
            
            
            
            ОбластьПер2 = Макет.ПолучитьОбласть("База|Пер2");
            ОбластьПер2.Параметры.Кол = Колл2;
            ОбластьПер2.Параметры.Сумм = Сумма2;
            ТабличныйДокумент.Присоединить(ОбластьПер2);
            
            //
            //
            //Итого1 = Итого1 + Сумма1;
            //Итого2 = Итого2 +  Сумма2;
            //
            
            
        КонецЦикла;
        
        
    КонецЦикла;
    ТабличныйДокумент.ЗакончитьГруппуСтрок();
1 hhhh
 
21.06.18
11:49
(0) спасибо
2 AlexKulikov
 
21.06.18
11:49
Эм, а самом запросе, есть же вкладка, где можно установить группировки, ну и подсчитать итог (Сумма)
3 dchumak
 
21.06.18
11:51
Итоги в запросе.
Обход результата запроса по группировкам.
Зачем изобретать велосипед?
4 AlexKulikov
 
21.06.18
11:54
Ну а дальше по стандарту, выводишь данные с помощью обхода по группировкам
5 AlexKulikov
 
21.06.18
11:54
А блин, уже написали)
6 andrig
 
21.06.18
12:36
[url=https://radikal.ru][img]https://a.radikal.ru/a08/1806/29/923b81e1d520.png[/img][/url]

Надо несколько периодов сравнения
7 andrig
 
21.06.18
12:40
8 novichok79
 
21.06.18
12:41
а группировка по колонкам в СКД не тянет уже?
9 andrig
 
21.06.18
12:47
а группировка по колонкам в СКД не тянет уже?

a можно поподробнее?
10 novichok79
 
21.06.18
12:49
(9) берете продажи, суете в СКД, делаете вывод в виде таблицы - строки контрагенты, колонки - период продаж.
11 novichok79
 
21.06.18
12:50
Партнер, Номенклатура - группировки строк
Месяц - группировка колонок
Количество, Сумма - ресурсы.
12 andrig
 
21.06.18
13:05
будет апр17,март17,июнь17....
а надо апр17,апр18,март17,март18 ...
13 hhhh
 
21.06.18
13:08
(12) это вы в сортировке решите, это другой вопрос, тут вопрос-то про итоги.
14 andrig
 
21.06.18
13:16
в скд с итогами понятно. вопрос в сортировке
15 novichok79
 
21.06.18
13:25
Делаете вычисляемые поля - номер месяца и год месяца, группировку делаете по месяцу, а сортировку делаете сначала по номеру месяца, потом по году
16 andrig
 
21.06.18
13:35
ок.
Запрос такой?
ВЫБРАТЬ
    РеализацияТоваровУслугТовары.Ссылка.Партнер КАК Партнер,
    РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
    СУММА(РеализацияТоваровУслугТовары.Количество) КАК Количество,
    СУММА(РеализацияТоваровУслугТовары.СуммаСНДС) КАК Сумма,
    НАЧАЛОПЕРИОДА(РеализацияТоваровУслугТовары.Ссылка.Дата, МЕСЯЦ) КАК Месяц,
    0 КАК Месяц1
ИЗ
    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
ГДЕ
    РеализацияТоваровУслугТовары.Ссылка.Проведен
    И РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &Дата1 И &Дата2
    И РеализацияТоваровУслугТовары.Ссылка.Партнер = &Партнер

СГРУППИРОВАТЬ ПО
    РеализацияТоваровУслугТовары.Номенклатура,
    РеализацияТоваровУслугТовары.Ссылка.Партнер,
    НАЧАЛОПЕРИОДА(РеализацияТоваровУслугТовары.Ссылка.Дата, МЕСЯЦ)

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

ВЫБРАТЬ
    РеализацияТоваровУслугТовары.Ссылка.Партнер,
    РеализацияТоваровУслугТовары.Номенклатура,
    СУММА(РеализацияТоваровУслугТовары.Количество),
    СУММА(РеализацияТоваровУслугТовары.СуммаСНДС),
    0,
    НАЧАЛОПЕРИОДА(РеализацияТоваровУслугТовары.Ссылка.Дата, МЕСЯЦ)
ИЗ
    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
ГДЕ
    РеализацияТоваровУслугТовары.Ссылка.Проведен
    И РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &Дата3 И &Дата4
    И РеализацияТоваровУслугТовары.Ссылка.Партнер = &Партнер

СГРУППИРОВАТЬ ПО
    РеализацияТоваровУслугТовары.Номенклатура,
    РеализацияТоваровУслугТовары.Ссылка.Партнер,
    НАЧАЛОПЕРИОДА(РеализацияТоваровУслугТовары.Ссылка.Дата, МЕСЯЦ)

УПОРЯДОЧИТЬ ПО
    Партнер,
    Номенклатура,
    Месяц
17 novichok79
 
21.06.18
13:37
(16) я не буду работать за вас, см. отчет ВыручкаИСебестоимостьПродаж в УТ 11
18 andrig
 
21.06.18
13:41
спасибо
19 novichok79
 
21.06.18
13:42
еще в УТ 11.4.3 есть отчеты "ПродажиСравнениеАналогичныхПериодов" и "ПродажиСравнениеДвухПериодов". я правда не смотрел как они работают.
20 andrig
 
21.06.18
13:44
я смотрел . все очень сложно
21 novichok79
 
21.06.18
13:48
(20) а типа в УТ 11 бывает просто? они и ковыряться в носу будут ректально.
22 andrig
 
21.06.18
13:56
согласен
23 andrig
 
22.06.18
08:21
и все таки кто нибудь может помочь с кодом без СКД?
24 novichok79
 
22.06.18
08:31
(23) а чего сложного? вывести колонки через присоединить?
25 andrig
 
22.06.18
09:54
еврейский ответ
26 hhhh
 
22.06.18
10:09
(25) ну заведите переменную ИтогПоклиенту, в нужный момент суммируйте. Заведите в макете секцию ИтогПоКлиенту, в нужный момент заполняйте полем ИтогПоКлиенту и вывести в табдок.

это же всё технически элементарно, скукота, никто не будет за вас просто тупо сидеть писать. Сделайте усилие над собой, минут за 20 всё сделаете.
27 andrig
 
22.06.18
10:14
я вас понимаю. скукота когда делал 20 раз. Когда первый раз то весело.
28 hhhh
 
22.06.18
10:18
(27) я это делал 10 лет назад. Поэтому подзабыл. Сейчас во времена скд - когда в 30 раз всё быстрее можно сделать и без всякого написания кода, неужеля я сейчас полезу эту дурь вспоминать.
29 andrig
 
22.06.18
10:35
Это я и хотел услышать. Значит в скд такой отчет можно сделать.
30 andrig
 
22.06.18
10:36
Еще вопрос. На этом форуме файлы нельзя прикреплять?
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.