|
как работает функция ПроверитьВывод() | ☑ | ||
---|---|---|---|---|
0
margoigo
01.06.16
✎
07:09
|
Не пойму как с ней работать. Есть у меня табличный документ и кучка областей, которые выводятся в цикле, примерно так:
Пока ВыборкаИтог.Следующий() Цикл //начало Таб.Вывести(Область1); Выборка = ВыборкаИтог.Выбрать(); Пока Выборка.Следующий() Цикл Таб.Вывести(Область2); КонецЦикла; //конец КонецЦикла; Мне надо сделать так, чтобы выводились Область1 и Область2 на одном листе, если следующие Область1 и Область2 продолжают помещаться на первом листе, то там их и печатать, если нет, то вставлять разделитель на страницы. Я не могу понять куда впихнуть ПроверитьВывод() и как правильно ею воспользоваться. Объясните пожалуйста. |
|||
1
catena
01.06.16
✎
07:10
|
(0)Впихнуть после заполнения параметров, но перед выводом.
|
|||
2
margoigo
01.06.16
✎
07:22
|
Перед каким выводом? Я вывожу же 2 области, мне надо проверить перед выводом обеих, поместится ли следующий блок на лист.
|
|||
3
Mankubus
01.06.16
✎
07:43
|
В ПроверитьВывод вставляй массив областей
|
|||
4
Mankubus
01.06.16
✎
07:45
|
ТабличныйДокумент (SpreadsheetDocument)
ПроверитьВывод (CheckPut) Синтаксис: ПроверитьВывод(<Таблицы>) Параметры: <Таблицы> (обязательный) Тип: Массив; ТабличныйДокумент. Массив из проверяемых таблиц или табличный документ. Возвращаемое значение: Тип: Булево. Истина - умещаются; Ложь - в противном случае. Описание: Проверяет, умещаются ли переданные табличные документы на страницу при печати. Доступность: Сервер, толстый клиент, внешнее соединение. |
|||
5
margoigo
01.06.16
✎
07:51
|
все равно не понятно, массив то я создаю из областей, вставляю функцию после тела первого цикла, а не работает.
|
|||
6
catena
01.06.16
✎
07:53
|
(5)Что именно "не работает"? Почему после цикла, если вывод внутри цикла?
|
|||
7
margoigo
01.06.16
✎
07:54
|
Вот так не работает:
Пока ВыборкаИтог.Следующий() Цикл //начало Таб.Вывести(Область1); Выборка = ВыборкаИтог.Выбрать(); Пока Выборка.Следующий() Цикл Таб.Вывести(Область2); КонецЦикла; //конец массив = Новый массив; массив.добавить(область1); массив.добавить(область2); Если не ПроверитьВывод(массив) Тогда ТабДок.ВставитьГоризонтальныйРазделитель(); КонецЕсли; КонецЦикла; Вот если кто-то знает, напишите пожалуйста на примере. |
|||
8
catena
01.06.16
✎
08:00
|
(7)Ты сначала вывел все области, а потом проверяешь, поместится ли туда еще одна?
|
|||
9
catena
01.06.16
✎
08:02
|
Выборка = ВыборкаИтог.Выбрать();
Пока Выборка.Следующий() Цикл Если Таб.ПроверитьВывод(Область2) тогда Таб.Вывести(Область2); иначе Таб.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли; КонецЦикла; |
|||
10
margoigo
01.06.16
✎
08:22
|
(9) вот тут я так понимаю одна область проверяется и тут мне ясно, а вот когда надо проверить две области блоком, при чем вторая область выводится в цикле. Вот как тут проверять?
|
|||
11
Mankubus
01.06.16
✎
08:35
|
Пока ВыборкаИтог.Следующий() Цикл
//начало ТабДляПроверки = Новый ТабличныйДокумент; ТабДляПроверки.Вывести(Область1); Выборка = ВыборкаИтог.Выбрать(); Пока Выборка.Следующий() Цикл ТабДляПроверки.Вывести(Область2); КонецЦикла; //конец Если не Таб.ПроверитьВывод(ТабДляПроверки) Тогда Таб.ВставитьГоризонтальныйРазделитель(); КонецЕсли; таб.Вывести(ТабДляПроверки); КонецЦикла; |
|||
12
hhhh
01.06.16
✎
08:36
|
(10) ну значит вторых не 2, а 102. То есть формируй массив из 103х областей.
|
|||
13
FIXXXL
01.06.16
✎
08:45
|
(7) вместо ТабДляПроверки.Вывести(Область2); в цикле используй Присоединить
Т.е. сначала набери кусок для вывода, а потом проверь обе области на влезание |
|||
14
FIXXXL
01.06.16
✎
08:48
|
(13) сорри, не Присоединить, а ВставитьОбласть
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |