Имя: Пароль:
1C
1С v8
Объединение ячеек в табличной части при выводе на печать
0 Ly_Alena
 
27.10.14
07:53
Помогите объединить ячейки НомерЛота

Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);
    Запрос.Текст ="ВЫБРАТЬ
                  |    ЗаказПокупателяТовары.ЗапрашиваемоеНаименование,
                  |    ЗаказПокупателяТовары.Номенклатура,
                  |    ЗаказПокупателяТовары.Номенклатура.БазоваяЕдиницаИзмерения КАК ЕдИзм,
                  |    СУММА(ЗаказПокупателяТовары.Количество) КАК Количество,
                  |    СРЕДНЕЕ(ЗаказПокупателяТовары.ПлановаяСебестоимость) КАК ПлановаяСебестоимость,
                  |    СРЕДНЕЕ(ЗаказПокупателяТовары.ЦенаБезНДС) КАК ЦенаБезНДС,
                  |    СУММА(ЗаказПокупателяТовары.СуммаБезНДС) КАК СуммаБезНДС,
                  |    СРЕДНЕЕ(ЗаказПокупателяТовары.Цена) КАК Цена,
                  |    СУММА(ЗаказПокупателяТовары.Сумма) КАК Сумма,
                  |    СУММА(ЗаказПокупателяТовары.Транспортные) КАК Транспортные,
                  |    СУММА(ЗаказПокупателяТовары.Накладные) КАК Накладные,
                  |    СУММА(ЗаказПокупателяТовары.УслПостоянные) КАК УслПостоянные,
                  |    СУММА(ЗаказПокупателяТовары.Прибыль) КАК Прибыль,
                  |    СРЕДНЕЕ(ЗаказПокупателяТовары.Рентабельность) КАК Рентабельность,
                  |    ЗаказПокупателяТовары.НовоеНаименование,
                  |    СУММА(ЗаказПокупателяТовары.СуммаПлановойСебестоимости) КАК СуммаСебестоимости,
                  |    ЗаказПокупателяТовары.НомерЛота КАК НомерЛота,
                  |    ЗаказПокупателяТовары.КоличествоВПроизводство
                  |ИЗ
                  |    Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
                  |ГДЕ
                  |    ЗаказПокупателяТовары.Ссылка = &ТекущийДокумент
                  |
                  |СГРУППИРОВАТЬ ПО
                  |    ЗаказПокупателяТовары.ЗапрашиваемоеНаименование,
                  |    ЗаказПокупателяТовары.Номенклатура,
                  |    ЗаказПокупателяТовары.НовоеНаименование,
                  |    ЗаказПокупателяТовары.Номенклатура.БазоваяЕдиницаИзмерения,
                  |    ЗаказПокупателяТовары.НомерЛота,
                  |    ЗаказПокупателяТовары.КоличествоВПроизводство
                  |
                  |УПОРЯДОЧИТЬ ПО
                  |    НомерЛота";
                  
                                   

    РезультатЗапросаТовары = Запрос.Выполнить();
    
    Если НЕ РезультатЗапросаТовары.Пустой() Тогда
    
        Индекс = 0;
        Область = Макет.ПолучитьОбласть("Товары");
        Обход = РезультатЗапросаТовары.Выбрать();
        ОбходТовары = РезультатЗапросаТовары.Выбрать();
        Пока Обход.Следующий() Цикл
        
            Если Обход.Количество = 0 Тогда
                Продолжить;
            КонецЕсли;
                
            Если Не ЗначениеЗаполнено(Обход.Номенклатура) Тогда
                Сообщить("В одной из строк не заполнено значение номенклатуры - строка при печати пропущена.", СтатусСообщения.Важное);
                Продолжить;
            КонецЕсли;
            
            Индекс = Индекс + 1;
            Область.Параметры.НомерСтроки = Индекс;
            Область.Параметры.НомерЛота = Обход.НомерЛота;
            Область.Параметры.ЗапрашиваемоеНаименование = Обход.ЗапрашиваемоеНаименование;
            Если ЗначениеЗаполнено(Обход.НовоеНаименование) Тогда
            Область.Параметры.НовоеНаименование = Обход.НовоеНаименование;
            Иначе Область.Параметры.НовоеНаименование = Обход.Номенклатура;
            КонецЕсли;
            Область.Параметры.Номенклатура = Обход.Номенклатура;
            Область.Параметры.ЕдИзм = Обход.ЕдИзм;
            Область.Параметры.Количество = Обход.Количество;
            Область.Параметры.Себестоимость = Обход.ПлановаяСебестоимость;
            Область.Параметры.СуммаСебестоимости = Обход.СуммаСебестоимости;
            Область.Параметры.ЦенаБезНДС = Обход.ЦенаБезНДС;
            Область.Параметры.СуммаБезНДС = Обход.СуммаБезНДС;
            Область.Параметры.Цена = Обход.Цена;
            Область.Параметры.Сумма = Обход.Сумма;
            Область.Параметры.Транспортные = Обход.Транспортные;
            Область.Параметры.Накладные = Обход.Накладные;
            Область.Параметры.УслПостоянные = Обход.УслПостоянные;
            Область.Параметры.Прибыль = Обход.Прибыль;
            Область.Параметры.Рентабельность = Обход.Рентабельность;
                        
            ТабДокумент.Вывести(Область);
            
        КонецЦикла;
        
    КонецЕсли;
1 wraithik
 
27.10.14
07:55
Метод Объединить чем не устраивает? И как ты хочешь их клеить?
2 Ly_Alena
 
27.10.14
08:00
(1) с "Объединить" у меня никак не получается.

№лота  Наименование Кол-во
№1       Патчкорд   12
№1        Коннектор 24

Надо чтобы было

№лота    Наименование Кол-во
№1        Патчкорд      12
           Коннектор    24
3 Ly_Alena
 
27.10.14
08:30
Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);
    Запрос.Текст ="ВЫБРАТЬ
                  |    ЗаказПокупателяТовары.ЗапрашиваемоеНаименование,
                  |    ЗаказПокупателяТовары.Номенклатура,
                  |    ЗаказПокупателяТовары.Номенклатура.БазоваяЕдиницаИзмерения КАК ЕдИзм,
                  |    СУММА(ЗаказПокупателяТовары.Количество) КАК Количество,
                  |    СРЕДНЕЕ(ЗаказПокупателяТовары.ПлановаяСебестоимость) КАК ПлановаяСебестоимость,
                  |    СРЕДНЕЕ(ЗаказПокупателяТовары.ЦенаБезНДС) КАК ЦенаБезНДС,
                  |    СУММА(ЗаказПокупателяТовары.СуммаБезНДС) КАК СуммаБезНДС,
                  |    СРЕДНЕЕ(ЗаказПокупателяТовары.Цена) КАК Цена,
                  |    СУММА(ЗаказПокупателяТовары.Сумма) КАК Сумма,
                  |    СУММА(ЗаказПокупателяТовары.Транспортные) КАК Транспортные,
                  |    СУММА(ЗаказПокупателяТовары.Накладные) КАК Накладные,
                  |    СУММА(ЗаказПокупателяТовары.УслПостоянные) КАК УслПостоянные,
                  |    СУММА(ЗаказПокупателяТовары.Прибыль) КАК Прибыль,
                  |    СРЕДНЕЕ(ЗаказПокупателяТовары.Рентабельность) КАК Рентабельность,
                  |    ЗаказПокупателяТовары.НовоеНаименование,
                  |    СУММА(ЗаказПокупателяТовары.СуммаПлановойСебестоимости) КАК СуммаСебестоимости,
                  |    ЗаказПокупателяТовары.НомерЛота КАК НомерЛота,
                  |    ЗаказПокупателяТовары.КоличествоВПроизводство
                  |ИЗ
                  |    Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
                  |ГДЕ
                  |    ЗаказПокупателяТовары.Ссылка = &ТекущийДокумент
                  |
                  |СГРУППИРОВАТЬ ПО
                  |    ЗаказПокупателяТовары.ЗапрашиваемоеНаименование,
                  |    ЗаказПокупателяТовары.Номенклатура,
                  |    ЗаказПокупателяТовары.НовоеНаименование,
                  |    ЗаказПокупателяТовары.Номенклатура.БазоваяЕдиницаИзмерения,
                  |    ЗаказПокупателяТовары.НомерЛота,
                  |    ЗаказПокупателяТовары.КоличествоВПроизводство
                  |
                  |УПОРЯДОЧИТЬ ПО
                  |    НомерЛота";
                  
                                   

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

            Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);
    Запрос.УстановитьПараметр("НомерЛота", Стр.НомерЛота);
    Запрос.Текст ="ВЫБРАТЬ
                  |    ЗаказПокупателяТовары.ЗапрашиваемоеНаименование,
                  |    ЗаказПокупателяТовары.Номенклатура,
                  |    ЗаказПокупателяТовары.Номенклатура.БазоваяЕдиницаИзмерения КАК ЕдИзм,
                  |    СУММА(ЗаказПокупателяТовары.Количество) КАК Количество,
                  |    СРЕДНЕЕ(ЗаказПокупателяТовары.ПлановаяСебестоимость) КАК ПлановаяСебестоимость,
                  |    СРЕДНЕЕ(ЗаказПокупателяТовары.ЦенаБезНДС) КАК ЦенаБезНДС,
                  |    СУММА(ЗаказПокупателяТовары.СуммаБезНДС) КАК СуммаБезНДС,
                  |    СРЕДНЕЕ(ЗаказПокупателяТовары.Цена) КАК Цена,
                  |    СУММА(ЗаказПокупателяТовары.Сумма) КАК Сумма,
                  |    СУММА(ЗаказПокупателяТовары.Транспортные) КАК Транспортные,
                  |    СУММА(ЗаказПокупателяТовары.Накладные) КАК Накладные,
                  |    СУММА(ЗаказПокупателяТовары.УслПостоянные) КАК УслПостоянные,
                  |    СУММА(ЗаказПокупателяТовары.Прибыль) КАК Прибыль,
                  |    СРЕДНЕЕ(ЗаказПокупателяТовары.Рентабельность) КАК Рентабельность,
                  |    ЗаказПокупателяТовары.НовоеНаименование,
                  |    СУММА(ЗаказПокупателяТовары.СуммаПлановойСебестоимости) КАК СуммаСебестоимости,
                  |    ЗаказПокупателяТовары.НомерЛота КАК НомерЛота,
                  |    ЗаказПокупателяТовары.КоличествоВПроизводство
                  |ИЗ
                  |    Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
                  |ГДЕ
                  |    ЗаказПокупателяТовары.Ссылка = &ТекущийДокумент
                  |    И ЗаказПокупателяТовары.НомерЛота = &НомерЛота
                  |
                  |СГРУППИРОВАТЬ ПО
                  |    ЗаказПокупателяТовары.ЗапрашиваемоеНаименование,
                  |    ЗаказПокупателяТовары.Номенклатура,
                  |    ЗаказПокупателяТовары.НовоеНаименование,
                  |    ЗаказПокупателяТовары.Номенклатура.БазоваяЕдиницаИзмерения,
                  |    ЗаказПокупателяТовары.НомерЛота,
                  |    ЗаказПокупателяТовары.КоличествоВПроизводство
                  |
                  |УПОРЯДОЧИТЬ ПО
                  |    НомерЛота";

            ЗапросПоХарактеристикам = Запрос.Выполнить().Выгрузить();
            
            Для Каждого Стр1 из ЗапросПоХарактеристикам Цикл
            Область.Параметры.Заполнить(Стр1);
            //ОбластьДанныхХарактеристика.Параметры.ХарактеристикаНомеклатуры  = Стр1.Характеристика;
            ТабДокумент.Вывести(Область);
            КонецЦикла;
            
            //Индекс = Индекс + 1;
            //Область.Параметры.НомерСтроки = Индекс;
            //Область.Параметры.НомерЛота = Обход.НомерЛота;
            //Область.Параметры.ЗапрашиваемоеНаименование = Обход.ЗапрашиваемоеНаименование;
            //Если ЗначениеЗаполнено(Обход.НовоеНаименование) Тогда
            //Область.Параметры.НовоеНаименование = Обход.НовоеНаименование;
            //Иначе Область.Параметры.НовоеНаименование = Обход.Номенклатура;
            //КонецЕсли;
            //Область.Параметры.Номенклатура = Обход.Номенклатура;
            //Область.Параметры.ЕдИзм = Обход.ЕдИзм;
            //Область.Параметры.Количество = Обход.Количество;
            //Область.Параметры.Себестоимость = Обход.ПлановаяСебестоимость;
            //Область.Параметры.СуммаСебестоимости = Обход.СуммаСебестоимости;
            //Область.Параметры.ЦенаБезНДС = Обход.ЦенаБезНДС;
            //Область.Параметры.СуммаБезНДС = Обход.СуммаБезНДС;
            //Область.Параметры.Цена = Обход.Цена;
            //Область.Параметры.Сумма = Обход.Сумма;
            //Область.Параметры.Транспортные = Обход.Транспортные;
            //Область.Параметры.Накладные = Обход.Накладные;
            //Область.Параметры.УслПостоянные = Обход.УслПостоянные;
            //Область.Параметры.Прибыль = Обход.Прибыль;
            //Область.Параметры.Рентабельность = Обход.Рентабельность;
                        
            //ТабДокумент.Вывести(Область);


Что значит ошибка "{Документ.ЗаказПокупателя.МодульОбъекта(606)}: Итератор для значения не определен
            Для Каждого Стр из    РезультатЗапросаТовары Цикл
"
4 Dmitry1c
 
27.10.14
08:33
Мы не ищем легких путей!
5 Aevarandi
 
27.10.14
08:35
Ошибка означает, что для РезультатЗапросаТоварыЦикл итератор не определен. Надо или тип поменять, или обходить результат иначе.
6 Ly_Alena
 
27.10.14
08:35
(4) Да мне бы уже хоть как-то...
7 Ly_Alena
 
27.10.14
08:44
И снова тишина ((
SOS!
8 Мимохожий Однако
 
27.10.14
08:48
Фигней занимаешься.
9 Ly_Alena
 
27.10.14
08:48
(4) как проще?
10 Ly_Alena
 
27.10.14
08:50
(8) я обратилась за помощью. А вместо этого постоянно получаю ботинком по мордам. ) Подскажите как не заниматься фигней в этом случае?
11 kosts
 
27.10.14
08:58
Добавить итоги в запрос по "НомерЛота"
без общих

В своей выборке сделай вложенную выборку.
Первая выборка будет выводить НомерЛота
Вторая(вложенная) все остальные данные.
12 Ly_Alena
 
27.10.14
09:04
(11) спасибо, сейчас попробую
13 kosts
 
27.10.14
09:14
(0)
Если Обход.Количество = 0 Тогда
    Продолжить;
КонецЕсли;

Это желательно в запросе отсеять
14 kosts
 
27.10.14
09:16
Если Не ЗначениеЗаполнено(Обход.Номенклатура) Тогда
                Сообщить("В одной из строк не заполнено значение номенклатуры - строка при печати пропущена.", СтатусСообщения.Важное);
                Продолжить;
            КонецЕсли;

С такой проблемой надо не при печати бороться, а например, при проведении (т.е. запрещать проведение). Печатать желательно "как есть".
15 kosts
 
27.10.14
09:17
Область.Параметры.Номенклатура = Обход.Номенклатура;
            Область.Параметры.ЕдИзм = Обход.ЕдИзм;
            Область.Параметры.Количество = Обход.Количество;
            Область.Параметры.Себестоимость = Обход.ПлановаяСебестоимость;
            Область.Параметры.СуммаСебестоимости = Обход.СуммаСебестоимости;
            Область.Параметры.ЦенаБезНДС = Обход.ЦенаБезНДС;
            Область.Параметры.СуммаБезНДС = Обход.СуммаБезНДС;
            Область.Параметры.Цена = Обход.Цена;
            Область.Параметры.Сумма = Обход.Сумма;
            Область.Параметры.Транспортные = Обход.Транспортные;
            Область.Параметры.Накладные = Обход.Накладные;
            Область.Параметры.УслПостоянные = Обход.УслПостоянные;
            Область.Параметры.Прибыль = Обход.Прибыль;
            Область.Параметры.Рентабельность = Обход.Рентабельность;

Вместо всего этого можно написать (вроде так)

Область.Параметры.Заполнить(Обход);
16 kosts
 
27.10.14
09:22
Область.Параметры.Номенклатура = Обход.Номенклатура;

Тут хорошо бы выводить не Номенклатуру, а в запросе получить наименование номенклатуры.
Как-то так

Область.Параметры.НоменклатураНаименование = Обход.НоменклатураНаименование;
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой