Имя: Пароль:
1C
1С v8
Помогите написать проверку вывода
0 pele
 
01.03.13
16:50
Помогите написать проверку вывода, чтобы таб. док выводился  до средины а следующий таб док после средины, иначе если проверка вывода = ложь тогда вывести на весь лист...плииз!
1 Lama12
 
01.03.13
16:54
(0)Посмотри как табличные документы вроде накладной печатаются в стандартных конфах.
2 Reset
 
01.03.13
16:59
(0) Нечего не понял.
Напиши по русски.

",иначе" - иначе после "Если" пишут, как в русском языке, так в 1С. Иначе это бессмыслица ;p
"если проверка вывода = ложь" - какая проверка какого вывода??
"тогда выввести на весь лист" - что вывести на весь лист??
3 pele
 
01.03.13
17:14
Есть таб док его нужно вывести на первой половине листа, а следующий таб док на второй половине листа, если один из них не влазит то выводить на целую страницу. Так чтобы если сложить лист А4 было все норм.
4 Reset
 
01.03.13
17:25

Результат=Новый ТабличныйДокумент;
Результат.Вывести(ПервыйТабДок);
Если Не Результат.ПроверитьВывод(ВторойТабДок) тогда
  Результат.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
Результат.Вывести(ВторойТабДок);
5 Reset
 
01.03.13
17:26
А не,не так просто. Похоже надо после вывода первого добивать чем-то до "середины", чтобы "если сложить лист А4 было все норм"
6 pele
 
01.03.13
17:29
Вот в этом и проблема...(
7 Bober
 
01.03.13
17:34
(3) как его сложить? до A5?
8 pele
 
01.03.13
17:39
да!до А5
9 Reset
 
01.03.13
17:44

// Входные:  ПервыйТабдок,ВторойТабДок,ПустаяСтрока
// Пустую строку можно сделать узкой для более точной подгонки
Результат=Новый ТабличныйДокумент;
Тестовый=Новый ТабличныйДокумент;

Массив=Новый Массив;
Массив.Добавить(ВторойТабДок);
Массив.Добавить(ВторойТабДок);
ВторойВходит=Тестовый.ПроверитьВывод(Массив);// значит второй занимает половину или меньше половины страницы
Массив.Очистить();
Массив.Добавить(ПервыйТабдок);
Массив.Добавить(ПервыйТабдок);
ПервыйВходит=Тестовый.ПроверитьВывод(Массив);// значит первый занимает половину или меньше половины страницы
Массив.Очистить();
Массив.Добавить(ПустаяСтрока);
Массив.Добавить(ПустаяСтрока);

Если ПервыйВходит и ВторойВходит тогда // выводим два на одной
   // подсчитаем, сколько не хватает строк, чтобы добить до середины
   Счетчик=0;
   Пока Тестовый.ПроверитьВывод(Массив) цикл
       Тестовый.Вывести(ПустаяСтрока);
       Тестовый.Вывести(ПустаяСтрока);
       Счетчик=Счетчик+1;
   КонецЦикла;
   // Выводим первый
   Результат.Вывести(ПервыйТабДок);
   Пока Счетчик>0 цикл
       Результат.Вывести(ПустаяСтрока);
       Счетчик=Счетчик-1;
       // здесь можно при Счетчик=1 вывести для понту область с длинной пунктирной чертой
       // только один хрен она точно посредине не будет
   КонецЦикла;
Иначе
   // не входит, выводим на разных листах
   Результат.Вывести(ПервыйТабДок);
   Результат.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;

Результат.Вывести(ВторойТабДок);
10 pele
 
01.03.13
17:47
огромное спасибо!
11 Reset
 
01.03.13
17:49
(9) Disclaimer: не готов отвечать как за [не]оптимальность, работоспособность, так и соответствие требованиям.
Писалось для разгрузки мозга, не более ;)
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший