|
Повторение области печати на каждой странице | ☑ | ||
---|---|---|---|---|
0
KoalaJustKoala
24.05.21
✎
07:36
|
Доброго времени суток!
Создал вот такую вот область печати, которую нужно выводить на каждой странице: https://prnt.sc/13bz459 Пытался сделать через ТабДокумент.ПовторятьПриПечатиСтроки = Макет.ПолучитьОбласть("ПовторениеСреза"); Или: ТабДокумент.ПовторятьПриПечатиКолонки = Макет.ПолучитьОбласть("ПовторениеСреза"); Так же сейчас пробовал через ПроверитьВывод(): Если ТабДокумент.ПроверитьВывод(ТабДокумент) Тогда Сообщить("1"); Иначе ТабДокумент.ПовторятьПриПечатиСтроки ОбластьМакетаСрез = Макет.ПолучитьОбласть("ПовторениеСреза"); ТабДокумент.Вывести(ОбластьМакетаСрез); Сообщить("2") КонецЕсли; Выдает что-то такое: https://prnt.sc/13bz9id https://prnt.sc/13bz9v3 https://prnt.sc/13bza41 Хотя если убрать это если: https://prnt.sc/13bzc0r https://prnt.sc/13bzc6l Помогите с повторением на каждой странице, пожалуйста( Не понимаю, что и где я пишу не так( |
|||
1
KoalaJustKoala
24.05.21
✎
07:58
|
Добавляю код с момента выполнения запроса, т.к. сам запрос не важен:
ВыборкаСтрокТовары = Запрос1.Выполнить().Выбрать(); ТабДокумент = Новый ТабличныйДокумент; ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПеремещениеТоваров_Накладная"; Макет = ПолучитьМакет("Накладная"); // Выводим шапку накладной ОбластьМакета = Макет.ПолучитьОбласть("Заголовок"); ОбластьМакета.Параметры.ТекстЗаголовка = ОбщегоНазначения.СформироватьЗаголовокДокумента(Шапка, "Накладная на перемещение"); ТабДокумент.Вывести(ОбластьМакета); ОбластьМакета = Макет.ПолучитьОбласть("Поставщик"); ОбластьМакета.Параметры.ПредставлениеПоставщика = Шапка.Поставщик; ОбластьМакета.Параметры.Поставщик = Шапка.СкладОтправитель; ОбластьМакета.Рисунки.ШтрихкодРисунок.Объект.ТипКода = "4"; ОбластьМакета.Рисунки.ШтрихкодРисунок.Объект.КонтрольныйСимвол = ""; ОбластьМакета.Рисунки.ШтрихкодРисунок.Объект.Сообщение = ?(ПустаяСтрока(""),Штрихкод,""); ОбластьМакета.Рисунки.ШтрихкодРисунок.Объект.ТекстКода = Штрихкод; ТабДокумент.Вывести(ОбластьМакета); ОбластьМакета = Макет.ПолучитьОбласть("Покупатель"); ОбластьМакета.Параметры.ПредставлениеПолучателя = Шапка.Покупатель; ОбластьМакета.Параметры.Получатель = Шапка.СкладПолучатель; ТабДокумент.Вывести(ОбластьМакета); // Вывести табличную часть ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить(); Если ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда ВыводитьКоды = Истина; Колонка = "Артикул"; ИначеЕсли ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Код Тогда ВыводитьКоды = Истина; Колонка = "Код"; Иначе ВыводитьКоды = Ложь; КонецЕсли; ВыводитьЦены = Истина; ИмяШапки = "ШапкаТаблицыСЦенами"; ИмяСтроки = "СтрокаСЦенами"; ИмяРазделителя = "Разделитель"; ОбластьНомера = Макет.ПолучитьОбласть(ИмяШапки + "|НомерСтроки"); ОбластьКодов = Макет.ПолучитьОбласть(ИмяШапки + "|КолонкаКодов"); ОбластьДанных = Макет.ПолучитьОбласть(ИмяШапки + "|Данные"); ТабДокумент.Вывести(ОбластьНомера); Если ВыводитьКоды Тогда ОбластьКодов.Параметры.ИмяКолонкиКодов = Колонка; ТабДокумент.Присоединить(ОбластьКодов); КонецЕсли; ТабДокумент.Присоединить(ОбластьДанных); ОбластьКолонкаТовар = Макет.Область("Товар"); Если Не ВыводитьКоды Тогда ОбластьКолонкаТовар.ШиринаКолонки = ОбластьКолонкаТовар.ШиринаКолонки + Макет.Область("КолонкаКодов").ШиринаКолонки; КонецЕсли; ОбластьНомера = Макет.ПолучитьОбласть(ИмяСтроки + "|НомерСтроки"); ОбластьКодов = Макет.ПолучитьОбласть(ИмяСтроки + "|КолонкаКодов"); ОбластьДанных = Макет.ПолучитьОбласть(ИмяСтроки + "|Данные"); ОбластьНомераР = Макет.ПолучитьОбласть(ИмяРазделителя + "|НомерСтроки"); ОбластьКодовР = Макет.ПолучитьОбласть(ИмяРазделителя + "|КолонкаКодов"); ОбластьДанныхР = Макет.ПолучитьОбласть(ИмяРазделителя + "|Данные"); Ном = 0; ФлЕстьКоличествоМест = ложь; Всего = 0; Предыдущий = 11; // Выборка товаров Пока ВыборкаСтрокТовары.Следующий() Цикл Если Не ЗначениеЗаполнено(ВыборкаСтрокТовары.Номенклатура) Тогда Сообщить("В одной из строк не заполнено значение номенклатуры - строка при печати пропущена.", СтатусСообщения.Важное); Продолжить; КонецЕсли; Ном = Ном + 1; ФлЕстьКоличествоМест = ложь; ОбластьНомера.Параметры.НомерСтроки = Ном; Если Предыдущий <> ВыборкаСтрокТовары.Сортировка тогда ТабДокумент.Вывести(ОбластьНомераР); ТабДокумент.Присоединить(ОбластьКодовР); ТабДокумент.Присоединить(ОбластьДанныхР); КонецЕсли; предыдущий = ВыборкаСтрокТовары.Сортировка; ТабДокумент.Вывести(ОбластьНомера); Если ВыводитьКоды Тогда Если Колонка = "Артикул" Тогда ОбластьКодов.Параметры.Артикул = ВыборкаСтрокТовары.Артикул; Иначе ОбластьКодов.Параметры.Артикул = ВыборкаСтрокТовары.Код; КонецЕсли; ТабДокумент.Присоединить(ОбластьКодов); КонецЕсли; ОбластьДанных.Параметры.Заполнить(ВыборкаСтрокТовары); ОбластьДанных.Параметры.Товар = СокрЛП(ВыборкаСтрокТовары.Товар) + УниверсальныеМеханизмы.ПредставлениеХарактеристик(ВыборкаСтрокТовары); ОбластьДанных.Параметры.Производитель=ВыборкаСтрокТовары.ХарактеристикаНоменклатуры.Производитель.Наименование + ", "+ВыборкаСтрокТовары.ХарактеристикаНоменклатуры.Производитель.СтранаПроисхождения; ОбластьДанных.Параметры.Штрихкод = ""; ЗапросНаКатегориюУслуги = Новый Запрос; ЗапросНаКатегориюУслуги.Текст = "ВЫБРАТЬ | КатегорииОбъектов.Объект |ИЗ | РегистрСведений.КатегорииОбъектов КАК КатегорииОбъектов |ГДЕ | КатегорииОбъектов.Категория = &Категория | И КатегорииОбъектов.Объект = &Объект"; ЗапросНаКатегориюУслуги.Параметры.Вставить("Категория", Справочники.КатегорииОбъектов.НайтиПоНаименованию("Услуги")); ЗапросНаКатегориюУслуги.Параметры.Вставить("Объект", СсылкаНаОбъект.СкладПолучатель.Магазин); Если Не ЗапросНаКатегориюУслуги.Выполнить().Пустой() Тогда ЗапросНаШтрихкод = Новый Запрос; ЗапросНаШтрихкод.Текст = "ВЫБРАТЬ | Штрихкоды.Штрихкод |ИЗ | РегистрСведений.Штрихкоды КАК Штрихкоды |ГДЕ | Штрихкоды.Владелец = &Владелец"; ЗапросНаШтрихкод.Параметры.Вставить("Владелец", ВыборкаСтрокТовары.Номенклатура); ВыборкаЗапросаНаШтрихкод = ЗапросНаШтрихкод.Выполнить().Выбрать(); Если ВыборкаЗапросаНаШтрихкод.Следующий() Тогда ОбластьДанных.Параметры.Штрихкод = "Штрихкод: " + ВыборкаЗапросаНаШтрихкод.Штрихкод; КонецЕсли; КонецЕсли; //ОбластьДанных.Параметры.Серия=ВыборкаСтрокТовары.ХарактеристикаНоменклатуры.Наименование //+ " № сертификата: "+ВыборкаСтрокТовары.ХарактеристикаНоменклатуры.ТипСертификата.Наименование //+" "+ВыборкаСтрокТовары.ХарактеристикаНоменклатуры.СертификатСтрока+" действ. до: " //+Формат(ВыборкаСтрокТовары.ХарактеристикаНоменклатуры.СертификатСрокГодности,"ДФ=dd.MM.yy"); ОбластьДанных.Параметры.Серия=ВыборкаСтрокТовары.ХарактеристикаНоменклатуры.Наименование + " № Заключения о безопасности и качестве: "+ВыборкаСтрокТовары.ХарактеристикаНоменклатуры.ТипСертификата.Наименование +" "+ВыборкаСтрокТовары.ХарактеристикаНоменклатуры.СертификатСтрока+" действ. до: " +Формат(ВыборкаСтрокТовары.ХарактеристикаНоменклатуры.СертификатСрокГодности,"ДФ=dd.MM.yy"); ТабДокумент.Присоединить(ОбластьДанных); Всего = Всего + ВыборкаСтрокТовары.Сумма; Если ТабДокумент.ПроверитьВывод(ТабДокумент) Тогда Сообщить("1"); Иначе ОбластьМакетаСрез = Макет.ПолучитьОбласть("ПовторениеСреза"); ТабДокумент.Вывести(ОбластьМакетаСрез); Сообщить("2") КонецЕсли; КонецЦикла; // Вывести подвал ОбластьНомера = Макет.ПолучитьОбласть("Подвал|НомерСтроки"); ОбластьКодов = Макет.ПолучитьОбласть("Подвал|КолонкаКодов"); ОбластьДанных = Макет.ПолучитьОбласть("Подвал|Данные"); ОбластьДанных.Параметры.Всего = Всего; ТабДокумент.Вывести(ОбластьНомера); Если ВыводитьКоды Тогда ТабДокумент.Присоединить(ОбластьКодов); КонецЕсли; ТабДокумент.Присоединить(ОбластьДанных); // Вывести подписи. ОбластьМакета = Макет.ПолучитьОбласть("Подписи"); ОбластьМакета.Параметры.Заполнить(Шапка); ТабДокумент.Вывести(ОбластьМакета); Возврат ТабДокумент; |
|||
2
KoalaJustKoala
24.05.21
✎
08:23
|
Переиграл и уничтожил, хехехе
https://prnt.sc/13c114r На всякий случай расскажу тут как, мало ли кому понадобится: Я создал массив который опирается на мои строки с данным: ПоследниеСтроки = Новый Массив; ПоследниеСтроки.Добавить(ОбластьДанных); Создал его перед циклом с заполнением строк! После чего в самом цикле, почти в конце добавил Проверку на вывод: Если НЕ ТабДокумент.ПроверитьВывод(ПоследниеСтроки) Тогда ОбластьМакетаСрез = Макет.ПолучитьОбласть("ПовторениеСреза"); ТабДокумент.Вывести(ОбластьМакетаСрез); КонецЕсли; В итоге и получилась такая вот красота :3 Хехехе :3 |
|||
3
SiAl-chel
24.05.21
✎
08:26
|
(2) Молодец.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |