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

Группировка в печатной форме

Автор Tyshkan, 09 янв 2013, 17:06

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

Tyshkan

Есть печатная форма с областью "Строка"и с Полями: Код, Товар, Количество, Цена и Сумма. За ней идет Область "Производитель" с Полями : производитель и сумма. Необходимо сгруппировать по производителю и посчитать по каждому сумму...Помогите советом...

Yura063

:dfbbdrfb: вы хоть код выложите! от чего отталкиваться!
Помогли, отблагодари!

Tyshkan

Запрос = Новый Запрос;
   Запрос.Текст =
      "ВЫБРАТЬ РАЗЛИЧНЫЕ
      |   ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
      |   СУММА(ТоварыНаСкладахОстатки.КоличествоОстаток) КАК Количество,
      |   ТоварыНаСкладахОстатки.Склад КАК Склад,
      |   ТоварыНаСкладахОстатки.Номенклатура.Код КАК Код,
      |   ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
      |   ТоварыНаСкладахОстатки.Номенклатура.алкПроизводитель КАК Производитель,
      |   СУММА(ТоварыНаСкладахОстатки.КоличествоОстаток * ЦеныНоменклатурыСрезПоследних.Цена) КАК Сумма
      |ИЗ
      |   РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаОстатков, ) КАК ТоварыНаСкладахОстатки
      |      ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
      |      ПО ТоварыНаСкладахОстатки.Номенклатура.Ссылка = ЦеныНоменклатурыСрезПоследних.Номенклатура.Ссылка
      |ГДЕ
      |   ТоварыНаСкладахОстатки.Склад = &Склад
      |   И ТоварыНаСкладахОстатки.Номенклатура В ИЕРАРХИИ(&Номенклатура)
      |   И ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен
      |
      |СГРУППИРОВАТЬ ПО
      |   ТоварыНаСкладахОстатки.Номенклатура,
      |   ТоварыНаСкладахОстатки.Склад,
      |   ТоварыНаСкладахОстатки.Номенклатура.Код,
      |   ЦеныНоменклатурыСрезПоследних.Цена,
      |   ТоварыНаСкладахОстатки.Номенклатура.алкПроизводитель
      |
      |УПОРЯДОЧИТЬ ПО
      |   Производитель";

   Запрос.УстановитьПараметр("ДатаОстатков", ДатаОстатков);
   Запрос.УстановитьПараметр("Номенклатура", Группа);
   Запрос.УстановитьПараметр("Склад", Склад);
   Запрос.УстановитьПараметр("ТипЦен", ТипЦен);

   ТабДок = Новый ТабличныйДокумент;
   
   Если Коэффициент = 1 Тогда
      Макет = ПолучитьМакет("Макет1");
   Иначе
      Макет = ПолучитьМакет("Макет");
   КонецЕсли;   
   
   ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
   
   Если БезНДС = Истина Тогда
      ОбластьМакета.Параметры.ЗаголовокЦена = "Цена без НДС";
      ОбластьМакета.Параметры.ЗаголовокСумма = "Сумма без НДС";
   Иначе
      ОбластьМакета.Параметры.ЗаголовокЦена = "Цена с НДС";
      ОбластьМакета.Параметры.ЗаголовокСумма = "Сумма с НДС";
   КонецЕсли;   
   
   ОбластьМакета.Параметры.ДатаОстатков = Формат(ДатаОстатков,"ДФ=dd.MM.yy");
      
   ТабДок.Вывести(ОбластьМакета); 

   Выб = Запрос.Выполнить();
   ТЗ = Выб.Выгрузить();
      
   ФлагПрервать = 0;
   ИтогСумма = 0;
   ИтогЗалогСумма = 0;
   СуммаПроизводитель = 0;
   СуммаЗалогПроизводитель = 0;   
   
   Для Каждого Выборка из ТЗ Цикл
      Если Не Выборка.Цена = null или Не Выборка.Количество = null Тогда
         
      ОбластьМакета = Макет.ПолучитьОбласть("Строка");
      ОбластьМакета.Параметры.Код = Выборка.Код;
      ОбластьМакета.Параметры.Наименование = Выборка.Номенклатура;
      ОбластьМакета.Параметры.Количество = Выборка.Количество;
   
      Если БезНДС = Истина и Не Выборка.Цена = null Тогда
         ОбластьМакета.Параметры.Цена = Формат((Выборка.Цена/118*100),"ЧЦ=15; ЧДЦ=2");
      ИначеЕсли Не Выборка.Цена = null Тогда
         ОбластьМакета.Параметры.Цена = Формат((Выборка.Цена),"ЧЦ=15; ЧДЦ=2");
      КонецЕсли;   
      
      Если Не Выборка.Количество = null или Не Выборка.Цена = null Тогда
         Сумма = Формат(Число(Выборка.Количество*Выборка.Цена),"ЧЦ=15; ЧДЦ=2");
         ОбластьМакета.Параметры.Сумма = Сумма;
      КонецЕсли;   
      
      Если не Коэффициент = 1 и Не Сумма = Неопределено Тогда
         ОбластьМакета.Параметры.Коэффициент = Коэффициент;       
         ЗалогСумма =Формат(Сумма*Коэффициент,"ЧЦ=15; ЧДЦ=2");
         ОбластьМакета.Параметры.ЗалогСумма =ЗалогСумма;
      КонецЕсли;
      ТабДок.Вывести(ОбластьМакета);
      
      ОбластьМакета = Макет.ПолучитьОбласть("Производитель");
            
      ОбластьМакета.Параметры.ТекПроизводитель = Выборка.Производитель;       
      ОбластьМакета.Параметры.СуммаПроизводитель = Формат(СуммаПроизводитель+Сумма,"ЧЦ=15; ЧДЦ=2" );
      
      Если Не Коэффициент = 1 и не ЗалогСумма = Неопределено Тогда
         ОбластьМакета.Параметры.СуммаЗалогПроизводитель = Формат(СуммаЗалогПроизводитель+ЗалогСумма,"ЧЦ=15; ЧДЦ=2");
      КонецЕсли;
      
      ТабДок.Вывести(ОбластьМакета);
            
      ОбластьМакета = Макет.ПолучитьОбласть("Итог");
      ОбластьМакета.Параметры.ИтогСумма = ТЗ.Итог("Сумма");
      
      Если Не Коэффициент = 1 Тогда
         ОбластьМакета.Параметры.ИтогЗалогСумма = Формат(ИтогЗалогСумма+ЗалогСумма,"ЧЦ=15; ЧДЦ=2");
      КонецЕсли;   
            
      Если НеобходимаяСумма>0 Тогда
         Если НеобходимаяСумма<=ИтогСумма Тогда
            ФлагПрервать = 1;
            Прервать;
         КонецЕсли;
      КонецЕсли;
   КонецЕсли;
   
КонецЦикла;

   ТабДок.Вывести(ОбластьМакета);
   ТабДок.ТолькоПросмотр  = Истина;
   ТабДок.ОтображатьСетку = Ложь;
   ТабДок.Показать();

Yura063

В цикле по строкам поставь условие грубо
ОбластьПроизводитель = Макет.ПолучитьОбласть("Производитель");
Если Производитель1 <> Выборка.Производитель тогда
      ТабДок.Вывести(ОбластьПроизводитель); 
      Производитель1 = Выборка.Производитель;
КонецЕсли;
Помогли, отблагодари!

Tyshkan

а изначальное значение Производитель1 когда задавать??

Yura063

Можно в начале процедуры!
Производитель1="";
Добавлено: 09 янв 2013, 22:16


Главное перед циклом!
;)
Помогли, отблагодари!

Tyshkan

Спасибо, все получилось)))

Yura063

Помогли, отблагодари!

Теги:

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

Рейтинг@Mail.ru

Поиск