|
Групповая печать капризничает 🠗 (Волшебник 24.08.2022 17:50) | ☑ | ||
---|---|---|---|---|
0
04Karik
24.08.22
✎
16:45
|
Здравствуйте. Суть задачи: Разработать печатную форму документа Оказание услуг по образцу...Задача должна решаться силами ОБХОДА ИТОГОВ В ЗАПРОСЕ...
Т.е. макет разбит на Товары и Услуги, всё работает, однако при групповой печати все данные рассовываются по этим таблицам, однако для каждого документа должна создаваться своя печатная форма. Куда бы ни засовывал ВставлятьРазделительСтраниц, ведёт себя двумя способами: либо не отражает этот разделитель, либо ставит его между таблиц. Подскажите пожалуйста, что не так делаю. модуль менеджера: Процедура Печать(ТабДок, Ссылка) Экспорт Макет = Документы.ОказаниеУслуги.ПолучитьМакет("Печать"); Запрос = Новый Запрос; Запрос.Текст = ("ВЫБРАТЬ | ОказаниеУслуги.Дата КАК Дата, | ОказаниеУслуги.Номер КАК Номер |ИЗ | Документ.ОказаниеУслуги КАК ОказаниеУслуги |ГДЕ | ОказаниеУслуги.Ссылка В(&Ссылка) |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ОказаниеУслугиПереченьНоменклатуры.Номенклатура КАК Номенклатура, | ОказаниеУслугиПереченьНоменклатуры.Количество КАК Количество, | ОказаниеУслугиПереченьНоменклатуры.Цена КАК Цена, | ОказаниеУслугиПереченьНоменклатуры.Сумма КАК Сумма, | ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидНоменклатуры КАК ВидНоменклатуры |ИЗ | Документ.ОказаниеУслуги.ПереченьНоменклатуры КАК ОказаниеУслугиПереченьНоменклатуры |ГДЕ | ОказаниеУслугиПереченьНоменклатуры.Ссылка В(&Ссылка) | |УПОРЯДОЧИТЬ ПО | Номенклатура |ИТОГИ ПО | ВидНоменклатуры КАК ВидНоменклатуры"); Запрос.Параметры.Вставить("Ссылка", Ссылка); Пакет = Запрос.ВыполнитьПакет(); ВыборкаГруппировок = Пакет[1].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Данные = Пакет[0].Выбрать(); Данные.Следующий(); ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок"); Шапка = Макет.ПолучитьОбласть("Шапка"); ШапкаТовары = Макет.ПолучитьОбласть("ШапкаТовары"); НоменклатураТовары = Макет.ПолучитьОбласть("НоменклатураТовары"); ОбластьИтогТовары = Макет.ПолучитьОбласть("ВсегоТовары"); ШапкаУслуги = Макет.ПолучитьОбласть("ШапкаУслуги"); НоменклатураУслуги = Макет.ПолучитьОбласть("НоменклатураУслуги"); ОбластьИтогУслуги = Макет.ПолучитьОбласть("ВсегоУслуги"); Шапка.Параметры.Заполнить(Данные); ТабДок.Очистить(); ТабДок.Вывести(ОбластьЗаголовок); ТабДок.Вывести(Шапка); ВставлятьРазделительСтраниц = Ложь; Пока ВыборкаГруппировок.Следующий() Цикл Если ВставлятьРазделительСтраниц Тогда ТабДок.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли; //ВставлятьРазделительСтраниц = Истина; разделитель посередине СуммаПоТоварам = 0; СуммаПоУслугам = 0; Если ВыборкаГруппировок.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Товар Тогда ВыборкаТовары = ВыборкаГруппировок.Выбрать(); ТабДок.Вывести(ШапкаТовары, ВыборкаТовары.Уровень()); Пока ВыборкаТовары.Следующий() Цикл НоменклатураТовары.Параметры.Заполнить(ВыборкаТовары); ТабДок.Вывести(НоменклатураТовары, ВыборкаТовары.Номенклатура.Уровень()); СуммаПоТоварам = СуммаПоТоварам + ВыборкаТовары.Сумма; //ВставлятьРазделительСтраниц = Истина; разделитель посередине КонецЦикла; ОбластьИтогТовары.Параметры.ВсегоПоТоварам = СуммаПоТоварам; ТабДок.Вывести(ОбластьИтогТовары); //ВставлятьРазделительСтраниц = Истина; разделитель между таблицами Иначе ВыборкаУслуги = ВыборкаГруппировок.Выбрать(); ТабДок.Вывести(ШапкаУслуги, ВыборкаУслуги.Уровень()); Пока ВыборкаУслуги.Следующий() Цикл НоменклатураУслуги.Параметры.Заполнить(ВыборкаУслуги); ТабДок.Вывести(НоменклатураУслуги, ВыборкаУслуги.Номенклатура.Уровень()); СуммаПоУслугам = СуммаПоУслугам + ВыборкаУслуги.Сумма; КонецЦикла; ОбластьИтогУслуги.Параметры.ВсегоПоУслугам = СуммаПоУслугам; ТабДок.Вывести(ОбластьИтогУслуги); //ВставлятьРазделительСтраниц = Истина; нет разделителя КонецЕсли; //ВставлятьРазделительСтраниц = Истина; разделитель между таблицами КонецЦикла; //ВставлятьРазделительСтраниц = Истина; нет разделителя КонецПроцедуры |
|||
1
Волшебник
24.08.22
✎
17:02
|
Вместо "ВставлятьРазделительСтраниц = Истина"
надо ТабДок.ВывестиГоризонтальныйРазделительСтраниц(); |
|||
2
04Karik
24.08.22
✎
17:27
|
(1) В конце кода, перед КонецПроцедуры? разделитель появился, но проблему групповой печати это не решает.
|
|||
3
Йохохо
24.08.22
✎
17:43
|
есть еще ВозвратнаяТара, переписывайте с 0, логика где то близко
|
|||
4
Kassern
24.08.22
✎
17:49
|
(0) Вам самим нравится с такими портянками в процедуре работать? Разбейте код на блоки, тогда, возможно сами догадаетесь, как правильно сделать.
Что вы понимаете под термином "Групповая печать"? Для меня это печать сразу нескольких печатных форм. Где это у вас в коде? "Задача должна решаться силами ОБХОДА ИТОГОВ В ЗАПРОСЕ" - Я так понимаю, это учебная задача, в этом случае спросите у своего наставника. |
|||
5
04Karik
24.08.22
✎
17:57
|
(4) печать нескольких документов по одной форме.
|
|||
6
04Karik
24.08.22
✎
17:58
|
(3) и безвозвратная, если логика верна
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |