Вход | Регистрация


1С:Предприятие ::

Метки: 

Вывод итогов в отчете

Я
   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;

            //

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

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

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

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

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

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

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

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

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



Список тем форума
  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует