helpf.pro
Регистрация

v8: Макет

Gowa
31.01.2013 19:17Прочитано: 2893
Добрый день .
У меня такая ситуация, есть макет в котором построчно выводится сотрудник в табличный документ
Код 1C v 8.х
 ТабДокумент.Вывести(ОбластьМакета);   

потом проверяется влезет ли получившеся на печать
Код 1C v 8.х
 ВывестиПодвалЛиста = Не ТабДокумент.ПроверитьВывод(ВыводимыеОбласти);   

при этом ВыводимыеОбласти- это ранее созданый масив для проверки
Код 1C v 8.х
 ВыводимыеОбласти = Новый Массив();
ВыводимыеОбласти.Добавить(ОбластьМакета);
ВыводимыеОбласти.Добавить( ОбластьИтог);

если строка влазит т.е. ВывестиПодвалЛиста =Ложь то тогда идет проверка является ли это последней строкой и если это последняя строка к масиву ВыводимыеОбласти добавляется область подвала и снова проверяется влазит ли все это на страницу
Код 1C v 8.х
 Если Не ВывестиПодвалЛиста и ВыведеноСтрок = ВсегоСтрокДокумента Тогда
ВыводимыеОбласти.Добавить(ОбластьМакетаПодвал);
ВывестиПодвалЛиста = Не ТабДокумент.ПроверитьВывод(ВыводимыеОбласти);
КонецЕсли;

как видно если подвал не влазит то ВывестиПодвалЛиста = Истина (такоеже значение еслибы строка не влезла и не была последней )
после идет блок который вставляет разделитель страниц если строка не влезла или если строка влезла а подвал не влез
Код 1C v 8.х
 Если ВывестиПодвалЛиста Тогда
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;

чтобы не запутывать сведу все эти части в единый код
Код 1C v 8.х
 
ВыводимыеОбласти = Новый Массив();
ВыводимыеОбласти.Добавить(ОбластьМакета);
ВыводимыеОбласти.Добавить( ОбластьИтог);

ТабДокумент.Вывести(ОбластьМакета)
ВывестиПодвалЛиста = Не ТабДокумент.ПроверитьВывод(ВыводимыеОбласти);
Если Не ВывестиПодвалЛиста и ВыведеноСтрок = ВсегоСтрокДокумента Тогда
ВыводимыеОбласти.Добавить(ОбластьМакетаПодвал);
ВывестиПодвалЛиста = Не ТабДокумент.ПроверитьВывод(ВыводимыеОбласти);
КонецЕсли;
Если ВывестиПодвалЛиста Тогда
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ТабДокумент.Вывести(ОбластьМакетаПодвал);

это упрощенный код без цыклов и некоторых сум в которых считаются такие переменные как ВыведеноСтрок и ВсегоСтрокДокумента . Проблема в том что если последняя строка влазит на лист а подписи(подвал) не помещается то они печатаются на отдельной странице, если же сделать так чтобы подпись и последняя строка печатались всегда вместе то получается ситуация когда последняя строка и подпись влазят на лист но всеравно переносятся. Подскажите пожалуста как организовать логику чтобы только в том случае если подвал не влазит а последняя строка влазит последняя строка, она переносилась на следующую страницу. У меня вышло это сделать только печатая 2 раза последнюю строку с подвалом и в конце таблицы, так вышло изза того что я не могу узнать сколько занимает последняя строка не выводя ее, а вывести и потом удалить с помощью
Код 1C v 8.х
 ТабДокумент.УдалитьОбласть(область,Смещать);   

у меня не вышло. ПАМАГИИТЕ пожалуста *16
Изменено 01.02.13 12:28:53
Yandex
Возможно, вас также заинтересует
Реклама на портале
E_Migachev
01.02.2013 12:40Ответ № 1
хмммм... лучше сразу объедени подвал с последней строкой
Gowa
01.02.2013 16:11Ответ № 2
вы имеете ввиду в самом начале добавить в масив ВыводимыеОбласти ?
E_Migachev
03.02.2013 16:36Ответ № 3
(2) Gowa, да, только в массив надо добавлять при выводе последней строки
Gowa
04.02.2013 14:36Ответ № 4
Код 1C v 8.х
 Если Не ВывестиПодвалЛиста и ВыведеноСтрок = ВсегоСтрокДокумента Тогда
ВыводимыеОбласти.Добавить(ОбластьМакетаПодвал);
ВывестиПодвалЛиста = Не ТабДокумент.ПроверитьВывод(ВыводимыеОбласти);
КонецЕсли;

но подвал и так добавляется только при выводе последней строки
Изменено 04.02.13 14:38:16
Подсказка: Вы получили ответ на свой вопрос - закройте вопрос!
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.