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

Внешний отчет группировка

Автор Shohana, 16 мая 2019, 12:44

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

Shohana

Добрый день имеется внешний отчет с запросом ,нужна группировка по 3 столбцу(Свойство→значение) как ее реализовать?

Процедура СформироватьНажатие(Элемент)
   ТабДок = ЭлементыФормы.ТабДок;
   
   Макет = ПолучитьМакет("Макет");
    ОбластьШапка= Макет.ПолучитьОбласть("Шапка");
   ОбластьДанныеТЧ1= Макет.ПолучитьОбласть("ДанныеТЧ1");
   ОбластьДанныеТЧ2= Макет.ПолучитьОбласть("ДанныеТЧ2");
    ТабДок.Очистить();

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


Теги:

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

Рейтинг@Mail.ru

Поиск