Имя: Пароль:
1C
1С v8
Как сгруппировать данные?
0 ParamPamPam
 
14.12.18
10:31
Есть запрос в ОтчетуПроизводстваЗаСмену по материалам
Столбцы: Номенклатура, СерияНоменклатуры, Количество и ЕдИзмерения

Необходимо настроить цикл так, что бы Паспорта Материалов (СерияНоменклатуры) сортировалась по Номенклатуре.

Т.е. 1 Номенклатуру входили все СерииНоменклатуры(Паспорта материалов) по этой номенклатуре. Сейчас реализовано через сотрудника, т.е. для каждого сотрудника отдельная номенклатура с сериями (https://c.radikal.ru/c07/1812/1a/3be699046280.png), а нужно что бы для всех сотрудников и их серий была 1 номенклатура.

Скриншоты:
Тут для одного сотрудника:
https://b.radikal.ru/b06/1812/e6/4494dda5851f.png
Тут для нескольких сотрудников:
https://a.radikal.ru/a25/1812/e8/11f886815353.png

Код:
ТаблСотрудникМИмя=ТабРезультатМатериалы.Скопировать();
    ТаблСотрудникМИмя.Свернуть("Сотрудник");
    
    ТаблСотрудникМ=ТабРезультатМатериалы.Скопировать();
    ТаблСотрудникМ.Свернуть("Сотрудник","Количество");
    
    ТаблНоменклатураМ=ТабРезультатМатериалы.Скопировать();
    ТаблНоменклатураМ.Свернуть("Сотрудник,Номенклатура,ЕдиницаИзмерения","Количество");
    
    ТаблНоменклатураСерияМатериалов=ТабРезультатМатериалы.Скопировать();
    ТаблНоменклатураСерияМатериалов.Свернуть("Сотрудник,Номенклатура,СерияНоменклатуры,ЕдиницаИзмерения","Количество");

Сам Цикл:

ТабДокумент.НачатьАвтогруппировкуСтрок();
    ОбластьСтрСотрудникСтолбСотрудник                =Макет.ПолучитьОбласть("СтрСотрудник|СтолбСотрудник");
    Для каждого СтрСотрудник из ТаблСотрудникМ Цикл
        ОбластьСтрСотрудникСтолбСотрудник.Параметры.Сотрудник        =    СтрСотрудник.Сотрудник;
        ТабДокумент.Присоединить(ОбластьСтрСотрудникСтолбСотрудник,0);
    КонецЦикла;
    
    Для каждого СтрНоменклатура из ТаблНоменклатураМ Цикл
        ОбластьНоменклатураМатериалыОбщий.Параметры.Материалы        =    СтрНоменклатура.Номенклатура;
        ОбластьНоменклатураМатериалыОбщий.Параметры.КоличествоМат        =    СтрНоменклатура.Количество;
        ОбластьНоменклатураМатериалыОбщий.Параметры.ЕдиницаИзмерения        =    СтрНоменклатура.ЕдиницаИзмерения;
        ТабДокумент.Вывести(ОбластьНоменклатураМатериалыОбщий,1);    
        СчМ1=СчМ1+СтрНоменклатура.Количество;
        Для каждого СтрМатериалы из ТаблНоменклатураСерияМатериалов.НайтиСтроки(Новый Структура("Сотрудник,Номенклатура",СтрНоменклатура.Сотрудник,СтрНоменклатура.Номенклатура)) Цикл
            ОбластьНоменклатураМатериалПаспортОбщий.Параметры.МатериалПаспорт            =    СтрМатериалы.СерияНоменклатуры;
            ОбластьНоменклатураМатериалПаспортОбщий.Параметры.КоличествоМатП                =    СтрМатериалы.Количество;
            ОбластьНоменклатураМатериалПаспортОбщий.Параметры.ЕдиницаИзмерения                    =    СтрМатериалы.ЕдиницаИзмерения;
            ТабДокумент.Вывести(ОбластьНоменклатураМатериалПаспортОбщий,2);
            СчМ2=СчМ2+СтрМатериалы.Количество;
        КонецЦикла;        
    КонецЦикла;         
    ТабДокумент.ЗакончитьАвтогруппировкуСтрок();
1 ParamPamPam
 
14.12.18
10:34
Скриншоты перепутал, там где для одно сотрудника - несколько, и наоборот
Программист всегда исправляет последнюю ошибку.