«При печати рвутся подписи!» или «Как проверить вывод данных при печати?»
Статья адресуется тем, кто только начинает изучать 1С 8.x.
К вам обращается клиент, «Так не пойдет, если счет не помещается на одном листе, то все итоги подписи следует перенести на следующий лист».
Подписи "порвались", ответственный должен один расписываться на другом листе.
Так должно быть:
Если что-то не помещается, то все итоги и подписи переходят на следующий лист.
Вопрос как это сделать? Один документ имеет 2 товара, а другой 13 товаров.
Ответ – используй метод табличного документа ПроверитьВывод()
Опишем порядок действий
//Объявляем таблицу для шапки документа и таблицы товаров ТабДокумент = Новый ТабличныйДокумент; ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет; //Объявляем таблицу для итогов и подписей ТабПодвал = Новый ТабличныйДокумент; ТабПодвал.ОриентацияСтраницы = ОриентацияСтраницы.Портрет; //Объявляем таблицу для проверки вывода на страницу ПромТабДок = Новый ТабличныйДокумент; ПромТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Портрет; Макет = ПолучитьМакет("СчетЗаказ"); // Выводим шапку накладной //Выводим на печать товар Для каждого Стр Из Товары Цикл //Выводим строку с товаром в таблицу ТабДокумент.Вывести(ОблТовар); КонецЦикла; //Выводим итоги и подписи в другую таблицу ТабПодвал.Вывести(ОблИтоги); ТабПодвал.Вывести(ОблПодписи); //Выполняем проверку вывода на страницу МассивТаблиц = Новый Массив; МассивТаблиц.Добавить(ТабДокумент); МассивТаблиц.Добавить(ТабПодвал); Если Не ПромТабДок.ПроверитьВывод(МассивТаблиц) Тогда //Не помещается. Выводим разделитель ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли; ТабДокумент.Вывести(ТабПодвал); ТабДокумент.Показать();
Для вывода используются 2 табличных документа для основной части ТабДокумент, а для итогов и подписей ТабПодвал. Затем с помощью служебного табличного документа проверяется вывод обеих частей документа. Если не помещается на лист выводим разделитель. Вот собственно и вся премудрость.