Имя: Пароль:
1C
1С v8
Все та же трудность с Табличным документом
0 Gossar1C
 
21.08.13
14:52
Здравствуйте еще раз. К сожалению не могу понять как выводить количество номенклатуры для каждого заказа (если содержатся).

http://s019.radikal.ru/i607/1308/c8/4054bd6a5bea.jpg


&НаСервере
Процедура ВыполнитьФормированиеОтчета()
    
    Данные = ЗаполнитьДанныеДляОтчета();
    
    Макет  = ПолучитьОбщийМакет("МакетОтчетаПоСкладам");
    
    ДанныеЗаполнения = Данные.ТаблицаДанных.Выбрать();
    
    ТаблицаСкладов = Новый ТаблицаЗначений;
    ТаблицаСкладов.Колонки.Добавить("Склад");
    ТаблицаСкладов.Колонки.Добавить("Номенклатура");  
        
    
    Пока ДанныеЗаполнения.Следующий() Цикл  
        
        ДанныеЗаполненияПоСкладам = Неопределено;
        ДанныеЗаполненияПоСкладам = ДанныеЗаполнения.ТаблицаТоваров.Выгрузить();
        Для Каждого Элем Из ДанныеЗаполненияПоСкладам Цикл
            НоваяСтрока = ТаблицаСкладов.Добавить();
            НоваяСтрока.Склад =  Элем.Номенклатура.Склад;
            НоваяСтрока.Номенклатура = Элем.Номенклатура;
        КонецЦикла;
    КонецЦикла;    
    


    
    ТаблицаНоменклатуры = ТаблицаСкладов.Скопировать();
    
    ТаблицаСкладов.Свернуть("Склад");
    
    ОбластьШапкаТаблицыЗаказы = Макет.ПолучитьОбласть("R1C2:R2C6");
    Объект.ПолеОтчета.Вывести(ОбластьШапкаТаблицыЗаказы);
    
    ДанныеТаблицыСклад = Макет.ПолучитьОбласть("R3C2:R4C6");
    ДанныеТаблицыНоменклатура = Макет.ПолучитьОбласть("R5C2:R5C6");
    
    
    Уровень = 0;
    Стр = 0;
    
    Для Каждого ЭлементСклада ИЗ ТаблицаСкладов Цикл                  
        ДанныеТаблицыСклад.Параметры.Склад = ?(ЗначениеЗаполнено(ЭлементСклада.Склад),ЭлементСклада.Склад,"<не указан>");
        Объект.ПолеОтчета.Вывести(ДанныеТаблицыСклад,Стр);    
        
        СтруктураПоиска = Новый Структура;
        СтруктураПоиска.Вставить("Склад",ЭлементСклада.Склад);
        МассивНайденных = ТаблицаНоменклатуры.НайтиСтроки(СтруктураПоиска);
        
        Для Стр = 0 По МассивНайденных.Количество() Цикл
            Если Стр <> МассивНайденных.Количество() Тогда
                ДанныеТаблицыНоменклатура.Параметры.Номенклатура = МассивНайденных[Стр].Номенклатура;
                Объект.ПолеОтчета.Вывести(ДанныеТаблицыНоменклатура,Стр);
            КонецЕсли;
        КонецЦикла;
        
        
        
        Стр = Стр + 1;
    КонецЦикла;
    
    ДанныеЗаполненияШапки = Данные.ТаблицаДанных.Выбрать();
    
    ОбластьДанныеТаблицыЗаказы = Макет.ПолучитьОбласть("ДанныеТаблицыЗаказы");
    
    Пока ДанныеЗаполненияШапки.Следующий() Цикл  
        
        ГотоваяСтрока = Сред(Строка(ДанныеЗаполненияШапки.Ссылка),Найти(ДанныеЗаполненияШапки.Ссылка,"РН"),11);
        
        ОбластьДанныеТаблицыЗаказы.Параметры.Ссылка = ГотоваяСтрока;
                
        Объект.ПолеОтчета.Вывести(ОбластьДанныеТаблицыЗаказы,ДанныеЗаполненияШапки.Уровень());
        
    КонецЦикла;
    
КонецПроцедуры
1 Gossar1C
 
21.08.13
14:56
Вот пример того что получается сейчас

http://s48.radikal.ru/i121/1308/e4/51cc38ce584f.jpg

склады и номенклатура с заказами ставятся нормально
2 Gossar1C
 
21.08.13
15:16
похоже опять печалька =\ и помощи я не дождусь
3 Zamestas
 
21.08.13
15:24
(0) Запросом выбрать не?
4 Gossar1C
 
21.08.13
15:25
(3) да запросом понятно, я не понимаю как на табличный документ это залить, ведь тут же пересечение идет
5 Gossar1C
 
21.08.13
15:28
(3) просто как уровень задавать на пересечении? если допустим область вертикальная то он будет выводить данные по вертикали если горизонтальная то наоборот
6 Gossar1C
 
22.08.13
09:48
up
7 Crush
 
22.08.13
10:53
В скд в настройках вида отчета добавь таблицу и сделай группировки по строкам и по колонкам. Вот тебе и пересечение будет