Имя: Пароль:
1C
1С v8
Вывод ТЗ в печатную форму
0 Gera1t
 
12.09.16
22:05
Есть ТЗ типа
Товар     Колво     Упаковка
Товар1      3        Тара1
Товар1      2        Тара2
Товар1      5        Тара3
Товар2      1        Тара1
Товар       3        Тара4

Необходимо вывести в отчет вида
Товар     Колво      Тара1    Тара2    Тара3    Тара4

Чтобы выводил 1 товар в строку и раскидывал колво по разным колонкам упаковок.
Подскажите пожалуйста не соображу не как
1 zak555
 
12.09.16
22:06
ТЗ откуда получил ?
2 Gera1t
 
12.09.16
22:06
из запроса выгрузил
3 zak555
 
12.09.16
22:09
(2) так ты запросом сразу обойди, как тебе нужно

покажи запрос
4 Gera1t
 
12.09.16
22:09
Думал сравнить Товар с предыдущим и если он изменился то только тогда выводить новую строку, но как не соображу.
5 Gera1t
 
12.09.16
22:09
Запрос.Текст = "ВЫБРАТЬ
    |    
    |    РеализацияТоваровУслугТовары.Номенклатура как Номеклатура,
    |    РеализацияТоваровУслугТовары.Количество,
    |    СпецификацияУпаковок.КоличествоВИзделии как КоличествоВ1Изделии,
    |    РеализацияТоваровУслугТовары.Количество * СпецификацияУпаковок.КоличествоВИзделии КАК КоличествоВДокументе,
    |    ЕСТЬNULL(СпецификацияУпаковок.НаименованиеИсходной.ВидНоменклатуры, РеализацияТоваровУслугТовары.Номенклатура.ВидНоменклатуры) КАК ТипУпаковки
    |ИЗ
    |    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
    |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СпецификацияУпаковок КАК СпецификацияУпаковок
    |        ПО РеализацияТоваровУслугТовары.Номенклатура = СпецификацияУпаковок.Владелец
    |ГДЕ
    |    РеализацияТоваровУслугТовары.Ссылка = &ВыбДок
    |
    |УПОРЯДОЧИТЬ ПО
    |    НомерСтроки";
6 Gera1t
 
12.09.16
22:10
ТЗ = Запрос.Выполнить().Выгрузить();    // Собираем данные по товарам документа
    ТЗ.Свернуть("Номеклатура, ТипУпаковки", "КоличествоВ1Изделии, КоличествоВДокументе");
7 zak555
 
12.09.16
22:10
(5)ты в курсе, что у одного товара может быть больше одной спецификации ?
8 zak555
 
12.09.16
22:11
опиши суть задачи лучше
9 Gera1t
 
12.09.16
22:18
Долго объяснять.
Есть запрос который выводит данные как в первом посте в начале, Упаковка в столбце всего фиксировано 10 упаковок.
Нужно получить отчет, который бы выводил значение строк в столбце упаковка из запроса в столбцы отчета
10 Gera1t
 
12.09.16
22:20
Колонки не создаются динамически, а задаются жестко
    Для Каждого стр Из ТЗ Цикл
        ОбластьМакета.Параметры.НомерСтроки = н;
        ОбластьМакета.Параметры.Товар = стр.Номеклатура;
        Если Строка(стр.ТипУпаковки) = "Корпус" Тогда
            ОбластьМакета.Параметры.Корпус = стр.КоличествоВ1Изделии;
        ИначеЕсли Строка(стр.ТипУпаковки) = "Фасады" Тогда
            ОбластьМакета.Параметры.Фасады = стр.КоличествоВ1Изделии;            
        ИначеЕсли Строка(стр.ТипУпаковки) = "ДВП" Тогда
            ОбластьМакета.Параметры.ДВП = стр.КоличествоВ1Изделии;
        ИначеЕсли Строка(стр.ТипУпаковки) = "Фурнитура" Тогда
            ОбластьМакета.Параметры.Фурнитура = стр.КоличествоВ1Изделии;
        ИначеЕсли Строка(стр.ТипУпаковки) = "Стекло" Тогда
            ОбластьМакета.Параметры.Стекло = стр.КоличествоВ1Изделии;
        ИначеЕсли Строка(стр.ТипУпаковки) = "Столешница" Тогда
            ОбластьМакета.Параметры.Столешница = стр.КоличествоВ1Изделии;
        ИначеЕсли Строка(стр.ТипУпаковки) = "Направляющие" Тогда
            ОбластьМакета.Параметры.Направляющие = стр.КоличествоВ1Изделии;
        ИначеЕсли Строка(стр.ТипУпаковки) = "Матрас" Тогда
            ОбластьМакета.Параметры.Матрас = стр.КоличествоВ1Изделии;
        ИначеЕсли Строка(стр.ТипУпаковки) = "Комплектующие" Тогда
            ОбластьМакета.Параметры.Комплектующие = стр.КоличествоВ1Изделии;
        Иначе  
            ОбластьМакета.Параметры.Прочее = стр.КоличествоВ1Изделии;
        КонецЕсли;            
        
        ТабДокумент.Вывести(ОбластьМакета);
    КонецЦикла;
11 Gera1t
 
12.09.16
22:21
Как то можно проверить что значение в колонке Товар последнее, а значит нужно выводить строку на экран?
12 Gera1t
 
12.09.16
22:27
Вроде решил:

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