Имя: Пароль:
1C
1С v8
группировка товара по наименованию
0 nemel09
 
04.08.17
11:29
Добрый день. Помогите понять что не правильно делаю. У документа есть печатная форма, в которой происходит группировка по Наименованию. Если наименование сменилось, то подводится итог. Так же группируются характеристики наименования, если они разные то тоже должны выводится.
1 nemel09
 
04.08.17
11:30
Вот код печати.



Функция ПолучитьТабДок() Экспорт
    
    ТабДокумент = Новый ТабличныйДокумент;
    
    ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Спецификация";
        ПараметрыПечати = ПолучитьПараметрыПечати();
    
    Макет = ПолучитьМакет("Макет");
    
    Заголовок = Макет.ПолучитьОбласть("Заголовок");
    Заголовок.Параметры.Заполнить(ПараметрыПечати);
    ТабДокумент.Вывести(Заголовок);
    
    ШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
    ТабДокумент.Вывести(ШапкаТаблицы);
    
    ПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
    ПодвалТаблицы.Параметры.Заполнить(ПараметрыПечати);    
    
    ТабДокумент.НачатьАвтогруппировкуСтрок();
    ГруппировкаНоменклатуры = Макет.ПолучитьОбласть("ГруппировкаНоменклатуры");
    ИтогПоНоменклатуре        = Макет.ПолучитьОбласть("ИтогПоНоменклатуре");
    ТабДокумент.НачатьАвтогруппировкуСтрок();
    Сч = 0;
    //++Р
    ЦенаВывод = 0;
    СуммаВывод = 0;
    в = 0;
    Количество = 0;
    НМодели = "";
    Ткань = "";
    //--Р
    Для Каждого ПараметрыПозиции Из ПараметрыПечати.Позиции Цикл
        в = 0;
        ГруппировкаНоменклатуры.Параметры.Заполнить(ПараметрыПозиции);
        ТабДокумент.Вывести(ГруппировкаНоменклатуры, 1);
        Для  каждого ПараметрыДетПозиции Из ПараметрыПозиции.ДетальныеДанные Цикл
            //++Р
            Если не ЦенаВывод = ПараметрыДетПозиции.Цена и не в = 0 Тогда
                ТабДокумент.Вывести(ИтогПоНоменклатуре);
                ЦенаВывод = 0;
                СуммаВывод = 0;
                Количество = 0;
            КонецЕсли;
            
            ЦенаВывод = ПараметрыДетПозиции.Цена;
            СуммаВывод = СуммаВывод + ЦенаВывод*ПараметрыДетПозиции.Количество;
            Количество = Количество + ПараметрыДетПозиции.Количество;
            ИтогПоНоменклатуре.Параметры.Цена = ЦенаВывод;
            ИтогПоНоменклатуре.Параметры.Сумма = СуммаВывод;
            ИтогПоНоменклатуре.Параметры.Количество = Количество;
            //--Р
            
            РасшифровкаНоменклатуры = Макет.ПолучитьОбласть("РасшифровкаНоменклатуры");
            РасшифровкаНоменклатуры.Параметры.Заполнить(ПараметрыДетПозиции);
            //++Р
            Если ПараметрыДетПозиции.НомерМодели = НМодели тогда
                РасшифровкаНоменклатуры.Параметры.НомерМодели = "";
            КонецЕсли;
            Если ПараметрыДетПозиции.ВидТкани = Ткань тогда
                РасшифровкаНоменклатуры.Параметры.ВидТкани = "";
            КонецЕсли;
            //--Р
            ТабДокумент.Вывести(РасшифровкаНоменклатуры, 2);
            Сч = Сч + 1;
            //++Р
            в = 1;
            Если не ПараметрыДетПозиции.НомерМодели = "" Тогда
                НМодели = ПараметрыДетПозиции.НомерМодели;
            Конецесли;
            Если не ПараметрыДетПозиции.ВидТкани = "" Тогда
                Ткань = ПараметрыДетПозиции.ВидТкани;
            Конецесли;
            //--Р
        КонецЦикла;
        
        //ИтогПоНоменклатуре.Параметры.Заполнить(ПараметрыПозиции);
        Если Сч = ПараметрыПечати.ВсегоПозиций Тогда
            Если НЕ ТабДокумент.ПроверитьВывод(ПодвалТаблицы) Тогда
                ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
            КонецЕсли;
        КонецЕсли;    
        
        ТабДокумент.Вывести(ИтогПоНоменклатуре, 1);
        //++Р
        ЦенаВывод = 0;
        СуммаВывод = 0;
        Количество = 0;
        //--Р
            
    КонецЦикла;
    ТабДокумент.ЗакончитьАвтогруппировкуСтрок();
    
    ТабДокумент.Вывести(ПодвалТаблицы);
    
    Возврат ТабДокумент;
    
КонецФункции
2 nemel09
 
04.08.17
11:32
3 nemel09
 
04.08.17
11:34
(2) Вот что получается. http://s018.radikal.ru/i516/1708/43/26f901d2fcca.jpg

Ткань должна быть также проставлена как и цвет.
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.