Имя: Пароль:
1C
1С v8
автомасштаб по высоте
0 alexsandrinia
 
21.05.12
10:00
необходимо вывести табличную часть на одну страницу. при малом количестве строк - всё нормально, но вот если строк много...как можно сделать, чтоб масштаб уменьшался?
1 Капитан О
 
21.05.12
10:03
даже не знаю, что предложить...
2 Cube
 
21.05.12
10:07
Думаю, надо курить ПроверитьВывод() и МасштабПечати.
3 golden-pack
 
21.05.12
10:08
разместить на 1 страницу
4 golden-pack
 
21.05.12
10:09
в настройках принтера. Нафига тут еще кодить.
5 alexsandrinia
 
21.05.12
10:10
(4) в настройках принтера надо постоянно указывать определённый масштаб, в то время как размер документа каждый раз меняется
6 Balabass
 
21.05.12
10:10
Масштаб - по ширине листа.
7 Cube
 
21.05.12
10:12
(6) )))
8 alexsandrinia
 
21.05.12
10:16
(2)
9 alexsandrinia
 
21.05.12
10:16
что даст ПроверитьВывод() ?
10 Cube
 
21.05.12
10:19
(9) В СП есть полное описание, скопипастить?))
11 alexsandrinia
 
21.05.12
10:22
(10) там же идёт только проверка, если Ложь, тогда не выведется,
а мне надо чтоб выводилось в этом случае, подогнав масштаб под страницу
12 Cube
 
21.05.12
10:24
(11) Проверить, уменьшить масштаб, проверить, уменьшить масштаб и т.д. Не?
13 alexsandrinia
 
21.05.12
10:26
(12) хм...что-то похоже на правду...
получается, это в конце проверять надо?
14 Cube
 
21.05.12
10:27
(13) Не, это надо проверять в процедуре ПриНачалеРаботыСистемы() :)
15 alexsandrinia
 
21.05.12
10:28
(14)не, серьёзно, где?
16 Cube
 
21.05.12
10:29
(15) Ну перед тем, как показать ТабДокумент пользователю...
17 alexsandrinia
 
21.05.12
10:31
(15)ааа...понятно теперь.
вот вопрос ещё - как 2 РКО на одну страницу вывести? можно ли 2 раза в макете отобразить области, или через цикл?
18 ErrorEd88
 
21.05.12
10:32
(15) Если типовая, то лучше в общей форме печати документов - в функции печати документа - ничего не даст.
19 Cube
 
21.05.12
10:39
(17) Выведи первую, потом также выведи вторую в этот же ТабДокумент.
20 alexsandrinia
 
21.05.12
10:42
(19) а код примерно подскажешь?
21 Cube
 
21.05.12
10:44
(20) Конечно! Что мне, жалко что ли))

ТабДокумент = Новый ТабличныйДокумент;

//Выводим печатную форму 1

//Выводим печатную форму 2

ТабДокумент.Показать();
22 alexsandrinia
 
21.05.12
10:45
(24) Печатная форма одна и та же
23 hhhh
 
21.05.12
10:47
(22) тогда только так

ТабДокумент = Новый ТабличныйДокумент;

//Выводим печатную форму


//Выводим печатную форму


ТабДокумент.Показать();
24 Cube
 
21.05.12
10:50
(23) Черт, опередил!!!))
25 alexsandrinia
 
21.05.12
10:51
(23)
просто счётчик поставлю и всё?)))
26 Cube
 
21.05.12
10:53
(25) Нет, придется два счетчика ставить: для холодной воды и для горячей воды...
27 alexsandrinia
 
21.05.12
10:56
(26)остряк!)))
28 Cube
 
21.05.12
10:57
(27) А чо я? Я ни чо... :)
29 hhhh
 
21.05.12
11:03
(27) если как в (23) нужно просто скопипастить кусок текста, два нажатия мышкой. А если вы начнете счетчики устанавливать, какие-то куски программы дописывать-переписывать, оно вам надо? Эти счетчики?
30 alexsandrinia
 
21.05.12
11:05
(29) а если после каждой области
ТабДокумент.Вывести(ОбластьМакета);
тогда как сделать?
ТабДокумент.Вывести("макет"); -так?
31 hhhh
 
21.05.12
11:07
почему, пишите

ТабДокумент.Вывести(ОбластьМакета);
32 Cube
 
21.05.12
11:07
(30) Чо?)
33 alexsandrinia
 
21.05.12
11:11
(31), (32) в макете есть несколько областей. и каждая область выводится
ТабДокумент.Вывести(ОбластьМакета);
если так писать 2 раза , то понятно что получится - будет задваиваться документ с областями. а надо 2 отдельных документа
можно как-нибудь сразу всё вывести целиком?
34 Cube
 
21.05.12
11:13
(33) Тебе же сказали - нет. Читай (23).
35 alexsandrinia
 
21.05.12
11:25
(34)получается, что

       ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
   ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
   ТабДокумент.Вывести(ОбластьМакета);

   ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");
   ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
   ТабДокумент.Вывести(ОбластьМакета);

   ОбластьМакета = Макет.ПолучитьОбласть("Покупатель");
   ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
   ТабДокумент.Вывести(ОбластьМакета);

нужно продублировать после каждой ТабДокумент.Вывести(ОбластьМакета);
строку ТабДокумент.Вывести(ОбластьМакета); ?
правильно я понимаю?
36 Cube
 
21.05.12
11:35
(35) Ну ладно, пожую за тебя, расти лентяем:

   ТабДокумент = Новый ТабличныйДокумент;

   //Выводим печатную форму
   ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
   ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
   ТабДокумент.Вывести(ОбластьМакета);

   ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");
   ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
   ТабДокумент.Вывести(ОбластьМакета);

   ОбластьМакета = Макет.ПолучитьОбласть("Покупатель");
   ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
   ТабДокумент.Вывести(ОбластьМакета);


   //Выводим печатную форму
   ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
   ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
   ТабДокумент.Вывести(ОбластьМакета);

   ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");
   ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
   ТабДокумент.Вывести(ОбластьМакета);

   ОбластьМакета = Макет.ПолучитьОбласть("Покупатель");
   ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
   ТабДокумент.Вывести(ОбластьМакета);

   ТабДокумент.Показать();


Ну что, похоже на (23)?))
37 alexsandrinia
 
21.05.12
11:39
(36) слишком большой код получится)))
38 alexsandrinia
 
21.05.12
11:39
лучше тогда цикл)))
39 Cube
 
21.05.12
11:40
(38) Ну тогда читай (26) :))
40 hhhh
 
21.05.12
15:02
(38) зато цикл по времени в 2 раза дольше будет выполняться. Юзер заснет за экраном с этим циклом.
41 alexsandrinia
 
22.05.12
09:54
(12) по уменьшению масштаба...

Сч = 1;
Если Не ТабДокумент.ПроверитьВывод(ОбластьМакета) Тогда
       
       ТабДокумент.МасштабПечати=100-10*Сч;
       //Сообщить ("Документ не умещается на страницу!");
       Сч = Сч +1;    
   КонецЕсли;

делаю так, но в одну страницу всё равно не умещается...остаётся пару строчек на второй странице
и текст то не очень большой...
42 Cube
 
22.05.12
10:15
(41) Цикл используй. В твоем варианте минимальный масштаб 90%...
43 alexsandrinia
 
22.05.12
10:33
(41) подскажешь как?
44 Cube
 
22.05.12
10:43
(43) Вот ты мне скажи, тебе что самому не интересно разобраться? Ведь тут даже синтаксис 1С знать не надо - чистая логика...

ТекущийМасштаб = 100;
Пока ТекущийМасштаб > 50 Цикл
   Если ТабДокумент.ПроверитьВывод(ОбластьМакета) Тогда
       Прервать;
   Иначе
       ТекущийМасштаб = ТекущийМасштаб - 5;
       ТабДокумент.МасштабПечати = ТекущийМасштаб;
   КонецЕсли;
КонецЦикла;
45 alexsandrinia
 
22.05.12
10:44
интересно, но меня постоянно отвлекают и не дают сконцентрироваться...
46 alexsandrinia
 
22.05.12
10:51
странно, но почему-то всё равно выходит 2 страницы...может, убрать автоформат по ширине страницы?
47 Cube
 
22.05.12
10:59
(46) Само-собой!))
48 Cube
 
22.05.12
11:01
+(44) Наверное, красивее будет так:

ТабДокумент.МасштабПечати = 100;
Пока ТабДокумент.МасштабПечати > 50 Цикл
   Если ТабДокумент.ПроверитьВывод(ОбластьМакета) Тогда
       Прервать;
   Иначе
       ТабДокумент.МасштабПечати = ТабДокумент.МасштабПечати - 5;
   КонецЕсли;
КонецЦикла;
49 alexsandrinia
 
22.05.12
11:18
делаю настройки при печати (ставлю 85%), но каждый раз автоматом выходит на значении 95%...
50 Cube
 
22.05.12
11:32
(49) Чо?)
Кстати, у тебя ТабДокумент.АвтоМасштаб равно ЛОЖЬ?
51 alexsandrinia
 
22.05.12
11:38
(50)да, так стоит