Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Вывод ТЗ в печатную форму

Вывод ТЗ в печатную форму
Я
   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 товар в строку и раскидывал колво по разным колонкам упаковок.
Подскажите пожалуйста не соображу не как
 
 
   zak555
 
1 - 12.09.16 - 22:06
ТЗ откуда получил ?
   Gera1t
 
2 - 12.09.16 - 22:06
из запроса выгрузил
   zak555
 
3 - 12.09.16 - 22:09
(2) так ты запросом сразу обойди, как тебе нужно

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

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

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует