1с печать

1. user1582389 13.04.21 10:46 Сейчас в теме
Помогите, пож, вывести корректную печатную форму.
Мой код см. ниже. На первом изображ. что у меня получается, на втором - что должно быть
Процедура Печать(ТабДок, Ссылка) Экспорт
	Макет = Документы.РеализацияТоваровИУслуг.ПолучитьМакет("Печать");
	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
	|	РеализацияТоваровИУслугТовары.Наименование КАК Наименование,
	|	РеализацияТоваровИУслугТовары.Количество КАК Количество,
	|	РеализацияТоваровИУслугТовары.Цена КАК Цена,
	|	РеализацияТоваровИУслугТовары.Сумма КАК Сумма
	|ИЗ
	|	Документ.РеализацияТоваровИУслуг.Товары КАК РеализацияТоваровИУслугТовары
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ
	|	РеализацияТоваровИУслугУслуги.Наименование,
	|	РеализацияТоваровИУслугУслуги.Количество,
	|	РеализацияТоваровИУслугУслуги.Цена,
	|	РеализацияТоваровИУслугУслуги.Сумма
	|ИЗ
	|	Документ.РеализацияТоваровИУслуг.Услуги КАК РеализацияТоваровИУслугУслуги";
	Запрос.Параметры.Вставить("Ссылка", Ссылка);
	Выборка = Запрос.Выполнить().Выбрать();

	ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
	ОбластьТоварыШапка = Макет.ПолучитьОбласть("ТоварыШапка");
	ОбластьТовары = Макет.ПолучитьОбласть("Товары");
	ОбластьУслугиШапка = Макет.ПолучитьОбласть("УслугиШапка");
	ОбластьУслуги = Макет.ПолучитьОбласть("Услуги");
	ТабДок.Очистить();

	ВставлятьРазделительСтраниц = Ложь;
	Пока Выборка.Следующий() Цикл
		Если ВставлятьРазделительСтраниц Тогда
			ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
		КонецЕсли;

		ТабДок.Вывести(ОбластьЗаголовок);

		ТабДок.Вывести(ОбластьТоварыШапка);
		ОбластьТовары.Параметры.Заполнить(Выборка);
		ТабДок.Вывести(ОбластьТовары);
		
		ВставлятьРазделительСтраниц = Истина;
	КонецЦикла;
КонецПроцедуры
Показать
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
6. Nubsdale 13.04.21 13:54 Сейчас в теме
(1) у вас в цикле только товары. а нужно всю шапку в цикл ввести
2. DenisCh 13.04.21 10:47 Сейчас в теме
А почему ты "ТабДок.Вывести(ОбластьТоварыШапка);" делаешь в цикле обхода выборки?
DenisVol; +1 Ответить
3. user1582389 13.04.21 11:00 Сейчас в теме
(2)
Процедура Печать(ТабДок, Ссылка) Экспорт
Макет = Документы.РеализацияТоваровИУслуг.ПолучитьМакет("Печать");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РеализацияТоваровИУслугТовары.Наименование КАК Наименование,
| РеализацияТоваровИУслугТовары.Количество КАК Количество,
| РеализацияТоваровИУслугТовары.Цена КАК Цена,
| РеализацияТоваровИУслугТовары.Сумма КАК Сумма
|ИЗ
| Документ.РеализацияТоваровИУслуг.Товары КАК РеализацияТоваровИУслугТовары
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| РеализацияТоваровИУслугУслуги.Наименование,
| РеализацияТоваровИУслугУслуги.Количество,
| РеализацияТоваровИУслугУслуги.Цена,
| РеализацияТоваровИУслугУслуги.Сумма
|ИЗ
| Документ.РеализацияТоваровИУслуг.Услуги КАК РеализацияТоваровИУслугУслуги";
Запрос.Параметры.Вставить("Ссылка", Ссылка);
Выборка = Запрос.Выполнить().Выбрать();

ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьТоварыШапка = Макет.ПолучитьОбласть("ТоварыШапка");
ОбластьТовары = Макет.ПолучитьОбласть("Товары");
ОбластьУслугиШапка = Макет.ПолучитьОбласть("УслугиШапка");
ОбластьУслуги = Макет.ПолучитьОбласть("Услуги");
ТабДок.Очистить();

ВставлятьРазделительСтраниц = Ложь;
Показать

ТабДок.Вывести(ОбластьТоварыШапка); - сюда надо?
Пока Выборка.Следующий() Цикл
Если ВставлятьРазделительСтраниц Тогда
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;

ТабДок.Вывести(ОбластьЗаголовок);

ОбластьТовары.Параметры.Заполнить(Выборка);
ТабДок.Вывести(ОбластьТовары);

ВставлятьРазделительСтраниц = Истина;
КонецЦикла;
КонецПроцедуры
Показать
4. DenisCh 13.04.21 11:03 Сейчас в теме
Блин... Такие вещи изучают на первом месяце курсов по 1с...
Да и банальная логика может подсказать, когда и что выводить...
Может, книжки почитаешь для начала? Хотя бы Митичкина (с)...
5. DenisVol 3 13.04.21 11:26 Сейчас в теме
Как сказали выше вынесите вывод заголовка за цикл! Сейчас выводя строки документа вы каждый раз выводите заголовок документа
8. user1582389 14.04.21 08:40 Сейчас в теме
7. BomjBandit 13.04.21 17:39 Сейчас в теме
Держи
Процедура Печать(ТабДок, Ссылка) Экспорт
	
	Макет = Документы.РеализацияТоваровИУслуг.ПолучитьМакет("Печать");
	
	ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
	ТабДок.Вывести(ОбластьЗаголовок);
	
	ОбластьТоварыШапка = Макет.ПолучитьОбласть("ТоварыШапка");
	ТабДок.Вывести(ОбластьТоварыШапка);
	
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    РеализацияТоваровИУслугТовары.Наименование КАК Наименование,
    |    РеализацияТоваровИУслугТовары.Количество КАК Количество,
    |    РеализацияТоваровИУслугТовары.Цена КАК Цена,
    |    РеализацияТоваровИУслугТовары.Сумма КАК Сумма
    |ИЗ
    |    Документ.РеализацияТоваровИУслуг.Товары КАК РеализацияТоваровИУслугТовары
	|ГДЕ
	|	 РеализацияТоваровИУслугТовары.Ссылка = &Ссылка";
	
	Запрос.Параметры.Вставить("Ссылка", Ссылка);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	Выборка = РезультатЗапроса.Выбрать();
	
	Пока Выборка.Следующий() Цикл
		
		ОбластьУслуги = Макет.ПолучитьОбласть("Услуги");
		ОбластьУслуги.Параметры.Заполнить(Выборка);
        ТабДок.Вывести(ОбластьУслуги);
		
	КонецЦикла;
	
	ОбластьУслугиШапка = Макет.ПолучитьОбласть("УслугиШапка");
	ТабДок.Вывести(ОбластьУслугиШапка);
	
    Запрос.Текст = "ВЫБРАТЬ
    |    РеализацияТоваровИУслугУслуги.Наименование,
    |    РеализацияТоваровИУслугУслуги.Количество,
    |    РеализацияТоваровИУслугУслуги.Цена,
    |    РеализацияТоваровИУслугУслуги.Сумма
    |ИЗ
    |    Документ.РеализацияТоваровИУслуг.Услуги КАК РеализацияТоваровИУслугУслуги";
	|ГДЕ
	|	 РеализацияТоваровИУслугУслуги.Ссылка = &Ссылка";
	
    РезультатЗапроса = Запрос.Выполнить();
	
	Выборка = РезультатЗапроса.Выбрать();
	
	Пока Выборка.Следующий() Цикл
		
		ОбластьУслуги = Макет.ПолучитьОбласть("Услуги");
		ОбластьУслуги.Параметры.Заполнить(Выборка);
        ТабДок.Вывести(ОбластьУслуги);
		
	КонецЦикла;
	
КонецПроцедуры
Показать

Вообще можешь одним запросом получить товары и услуги просто раскидать их на 2 пакета
9. user1582389 14.04.21 08:40 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот