Имя: Пароль:
1C
1С v8
Обработка запроса в печатной форме
0 Dmitrii_VVV
 
18.08.23
09:55
Всем доброго!

Учебная конф-я

Делаю свою вторую печатную форму)

Проблемы:
1. При выводе на печать дублируется колонка Товар

2. В шапку необходимо вывести Контрагента, они лежат в справочнике, не понимаю как добавить

Код:


&НаКлиенте
Процедура Печать(Команда)
    
    ТабДок = Новый ТабличныйДокумент;
    ПечатьДок(ТабДок,ДокументСсылка);
    
    ТабДок.Показать();
    
КонецПроцедуры


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

    Выборка = РезультатЗапроса.Выбрать();
    
    СтрокиТаблицы = МакетОбработки.ПолучитьОбласть("СтрокаТаблицы");
    Пока Выборка.Следующий() Цикл
        СтрокиТаблицы.Параметры.Заполнить(Выборка);
        Табдок.Вывести(СтрокиТаблицы);
    КонецЦикла;
    
  КонецЦикла;
КонецЦикла;

    
    //Заполняем подвал
    ОбластьПодвал = МакетОбработки.ПолучитьОбласть("Подвал");
    ОбластьПодвал.Параметры.СуммаИтого = Ссылка.СписокНоменклатуры.Итог("Сумма");
    
    ТабДок.Вывести(ОбластьПодвал);

КонецПроцедуры

Скрины:

https://wampi.ru/image/RIhz88E

https://wampi.ru/image/RIhzOoP
1 vicof
 
18.08.23
10:05
1. Ошибка здесь
Выборка1 = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);      
      Пока   Выборка1.Следующий() цикл
              Выборка2 = Выборка1.Выбрать();
            Пока   Выборка2.Следующий() цикл
  
          

    Выборка = РезультатЗапроса.Выбрать();

2.  ОбластьШапка.Параметры.Контрагент = Ссылка.Контрагент;
2 Галахад
 
гуру
18.08.23
10:08
шапка.Контрагенты КАК Контрагенты,
заменить на
шапка.Контрагенты КАК Контрагент,
3 Dmitrii_VVV
 
18.08.23
11:27
(1) Спасибо! Ищу!
4 Donkey_hot
 
18.08.23
11:51
(3) Данные для заполнения шапки тоже получайте запросом. Ссылка.Номер, Ссылка.Дата - это два запроса к БД, а вы еще сейчас Ссылка.Контрагент добавите...
5 Мультук
 
гуру
18.08.23
12:00
(3)

-- А не @бнет ?
-- Обязательно @бнет ! (с)

|СГРУППИРОВАТЬ ПО
|    табчасть.Количество,
|    табчасть.Цена,


1) Есть отдельно шапка
Есть отдельно таб. часть
Зачем (цель ?) ты из join-ишь ?

2) Допустим в твоей таб.части будет три строки (строки б и в одинаковые, так бывает в жизни)

Наименование Цена колво сумма
а) Товар1 10 1 10
б) Товар2 20 1 20
в) Товар2 20 1 20

Вопросы
-- Сколько строк выведет на печать твой мегазапрос ?
-- Почему с суммой всё будет "более-менее", а с количеством беда ?
6 Dmitrii_VVV
 
22.08.23
10:57
(2) Неа,всё равно не работает
Что где ещё посмотреть нужно?
7 Dmitrii_VVV
 
22.08.23
11:00
(1) Убрал лишнею строку, помогло, спасибо!
Теперь другая беда, выводит не все строки в ТЧ


https://wampi.ru/image/RIWU6Ar

https://wampi.ru/image/RIWUb6I
8 Dmitrii_VVV
 
22.08.23
11:02
(1) 2.  ОбластьШапка.Параметры.Контрагент = Ссылка.Контрагент;

Это, к сожалению, не сработало
9 vicof
 
22.08.23
11:40
(8) Давай, ты сможешь включить отладку и посмотреть, что не так.
10 Dmitrii_VVV
 
22.08.23
14:45
(9) Отладка срабатывает только с начала обработки запроса

На Контрагент ругается, при нажатии на Печать

https://wampi.ru/image/RI0mbGY
11 vicof
 
22.08.23
16:30
Значит или у тебя в запросе этого поля нет, или оно не так называется, или нет такого параметра в шапке.
12 Dmitrii_VVV
 
22.08.23
16:59
(11) Спасибо! Выводится теперь как надо. Моя невнимательность, перепроверил, ошибка была в названии
13 Dmitrii_VVV
 
23.08.23
11:34
(4) Не совсем понял, я же уже и так в ТЧ вывожу номер и дату или что то другое имелось ввиду?

https://wampi.ru/image/RIHQLln
Ошибка? Это не ошибка, это системная функция.