Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
29 июн 2024, 04:30

Группировка в отчёте

Автор Sinsinmin, 04 фев 2011, 11:44

0 Пользователей и 1 гость просматривают эту тему.

Sinsinmin

Как в отчёте сделанным в ручную, на макете слева сделать группировку по дате. Нажал на плюсик и раскрылись записа с датой. На минус и они закрылись.

progmikon

Ключевые слова: "НачатьАвтогруппировкуСтрок" и "ЗакончитьАвтогруппировкуСтрок".

Sinsinmin

не понял. Делается запрос, потом после определённых процедур он выводится в макет. Куда писать эти ключевые слова?

Klyacksa

Про эти ключевые слова надо читать в мануале.
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

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

progmikon

Если не разберетесь - запостите код отчета.

Sinsinmin

НачальнаяДатаЦикла = НачальнаяДата;
   ЧислоСтрокой = "00";
    Для N = 0 По 99 Цикл
        ЧислоСтрокой = ЧислоСтрокой + Формат(N,"ЧЦ=2; ЧВН=");
   КонецЦикла;
   Фильтр = "";
   Если Отливка <> Справочники.Отливки.ПустаяСсылка() тогда
      Фильтр = "Отливка = &Отливка И";
   КонецЕсли;
   ЗапросПоБраку = Новый Запрос;
   ЗапросПоБраку.текст = "ВЫБРАТЬ
                         |   БракСрезПоследних.Отливка,
                         |   СУММА(БракСрезПоследних.Количество) КАК Количество,
                         |   БракСрезПоследних.Регистратор.Дата,
                         |   ПОДСТРОКА(&ЧислоСтрокой, ДЕНЬ(БракСрезПоследних.Регистратор.Дата) * 2 + 1, 2) + ""."" + ПОДСТРОКА(&ЧислоСтрокой, МЕСЯЦ(БракСрезПоследних.Регистратор.Дата) * 2 + 1, 2) + ""."" + ВЫБОР
                         |      КОГДА ГОД(БракСрезПоследних.Регистратор.Дата) > 2000
                         |         ТОГДА ""20"" + ПОДСТРОКА(&ЧислоСтрокой, (ГОД(БракСрезПоследних.Регистратор.Дата) - 2000) * 2 + 1, 2)
                         |      ИНАЧЕ ""19"" + ПОДСТРОКА(&ЧислоСтрокой, (ГОД(БракСрезПоследних.Регистратор.Дата) - 1900) * 2 + 1, 2)
                         |   КОНЕЦ КАК ДатаБракаМакет,
                         |   БракСрезПоследних.Невыход КАК Невыход
                         |ИЗ
                         |   РегистрСведений.Брак.СрезПоследних(
                         |         , "+Фильтр+" Регистратор.ЦехИзготовитель= &ЦехИзготовитель И
                         |         Регистратор.Дата МЕЖДУ &НачальнаяДата И &КонечнаяДата
                         |            И (НЕ ВидБрака В ИЕРАРХИИ (&ИБК))) КАК БракСрезПоследних
                         |
                         |СГРУППИРОВАТЬ ПО
                         |   БракСрезПоследних.Отливка,
                         |   БракСрезПоследних.Регистратор.Дата,
                         |   БракСрезПоследних.Невыход
                         |
                         |УПОРЯДОЧИТЬ ПО
                         |   Невыход";
                   
   ЗапросПоБраку.УстановитьПараметр("ИБК", Справочники.Брак.НайтиПоНаименованию("ИБК"));
   ЗапросПоБраку.УстановитьПараметр("Отливка", Отливка);
   ЗапросПоБраку.УстановитьПараметр("НачальнаяДата", НачальнаяДата);
   ЗапросПоБраку.УстановитьПараметр("КонечнаяДата", КонечнаяДата+60*60*24);
   ЗапросПоБраку.УстановитьПараметр("ЧислоСтрокой", ЧислоСтрокой);
   ЗапросПоБраку.УстановитьПараметр("ЦехИзготовитель", ЦехИзготовитель);
   МассивПоБраку = ЗапросПоБраку.Выполнить().Выгрузить();
   //МассивПоБраку.Свернуть("РегистраторДата, Отливка, Невыход, ДатаБракаМакет", "Количество");
   //МассивПоБраку.Свернуть("РегистраторДата, Отливка, Количество, ДатаБракаМакет", "Невыход");
   МассивПоБраку.Свернуть("Отливка, Невыход, ДатаБракаМакет,РегистраторДата", "Количество");
   МассивПоБраку.Сортировать("Отливка,ДатаБракаМакет,Невыход");
   Макет = ЭтотОбъект.ПолучитьМакет("Макет");
   Шапка = Макет.ПолучитьОбласть("Шапка");
   ЭлементыФормы.ТабДок.Очистить();
   ЭлементыФормы.ТабДок.Вывести(Шапка);
   Область = Макет.ПолучитьОбласть("Область");
   

   КоличествоДней = (КонечнаяДата - НачальнаяДата)/86400;
   Пока КоличествоДней > 0 цикл

      КоличествоБрака = 0;
      КоличествоНевыхода = 0;
      КоличествоДней = КоличествоДней - 1;      
      Для каждого СтрокаБрака из МассивПоБраку цикл
         ДатаСтроки =Дата_(СтрокаБрака.ДатаБракаМакет);
         Если ДатаСтроки >= НачальнаяДатаЦикла и ДатаСтроки <  НачальнаяДатаЦикла + 86400 тогда
            Если СтрокаБрака.Невыход <> 0 тогда
               КоличествоБрака = СтрокаБрака.Количество;
               //Отливка = СтрокаБрака.отливка;
               ПроцентНевыхода = СтрокаБрака.Невыход;
               Область.Параметры.КоличествоНевыхода = КоличествоБрака;
               Область.Параметры.ПроцентНевыхода = ПроцентНевыхода;
               Область.Параметры.Дата = СтрокаБрака.ДатаБракаМакет;
               Область.Параметры.Отливка = СтрокаБрака.Отливка;
               ЭлементыФормы.ТабДок.Вывести(Область);
             КонецЕсли;
         КонецЕсли;   
       КонецЦикла;
   НачальнаяДатаЦикла = НачальнаяДатаЦикла + 86400;


   КонецЦикла;   
   
КонецПроцедуры

Процедура ПриОткрытии()
   // Вставить содержимое обработчика.
   НачальнаяДата = НачалоМесяца(ТекущаяДата());
   КонечнаяДата = ТекущаяДата()+60*60*24;
   ЦехИзготовитель = Справочники.Подразделения.НайтиПоКоду("62");
КонецПроцедуры

Klyacksa

Вы что, даже не потрудились ничего почитать???
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

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

leonlegion

Все просто, заходишь в настройки отчета перед его выведением и во вкладке группировка - делаешь по дате, по крайней мере в УТ 10.3 работает очень просто

Sinsinmin

Отчёт сделан вручную. Не через конструктор отчёта

Sinsinmin

Почитать то я потрудился, только вот там какие то уровни, а где их брать не понятно. Так я без уровней написал в начале и конце группировку и она не работает

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск