Имя: Пароль:
1C
1С v8
ПроверитьВывод() очень странное поведение!
, ,
0 DmitryNN
 
30.01.17
09:51
Бьюсь 3 дня, перерыл интернет - ничего похожего не нашел.

Вывожу ТабДок, код простой.

//Выводим области
ТабДок.Вывести(ОбластьШапкаНаправление);        
ТабДок.Вывести(ОбластьШапкаКонтрагент);

ОбластьАдресДоставки.Параметры.АдресДоставки = СтрокаНа2Строки;
//ТУТ БУДЕТ ИСТИНА
Проверка1 = ТабДок.ПроверитьВывод(ОбластьАдресДоставки);
//КОЛИЧЕСТВО СТРАНИЦ БУДЕТ 1
КоличествоСтраниц1 = ТабДок.КоличествоСтраниц();


ОбластьАдресДоставки.Параметры.АдресДоставки = СтрокаНа3Строки;
//ТУТ БУДЕТ ЛОЖЬ
Проверка2 = ТабДок.ПроверитьВывод(ОбластьАдресДоставки);
//КОЛИЧЕСТВО СТРАНИЦ БУДЕТ СНОВА 1
КоличествоСтраниц1 = ТабДок.КоличествоСтраниц();
                    
ТабДок.Вывести(ОбластьАдресДоставки);
    
ТабДок.Показать();

Функция ПроверитьВывод() упорно возвращает Ложь  длиннее 2 строк (автовысота стоит). НО если вывести последний параметр на 3 строки то он прекрасно влазит! Функция ТабДок.КоличествоСтраниц() работает правильно.

Все параметры ТабДока по высоте полей и колонтитулам в Предварительном просмотре подхватываются правильно. КлючПараметровПечати не используется. Автомаштаб стоит.
1 IlyaSR
 
30.01.17
10:01
как вариант попробовать создать другой макет для тестинга с одним параметром "АдресДоставки" и в цикле попробуйте вывести 100 раз
2 Defender aka LINN
 
30.01.17
10:17
"КлючПараметровПечати не используется."
Так используй
3 DmitryNN
 
30.01.17
10:21
Если использовать он подхватывает настройки принтера пользовательские, тогда все начинает искажаться в зависимости от того под кем ты сидишь.
4 DmitryNN
 
30.01.17
10:23
ТабДок = Новый ТабличныйДокумент;
    ТабДок.АвтоМасштаб                     = Истина;
    ТабДок.ОтображатьСетку                 = Ложь;
    ТабДок.Защита                         = Истина;
    ТабДок.ТолькоПросмотр                 = Истина;
    ТабДок.ОтображатьЗаголовки             = Ложь;    
    ТабДок.ПолеСверху                     = 1;
    ТабДок.ПолеСнизу                     = 1;
    ТабДок.ПолеСлева                     = 1;
    ТабДок.ПолеСправа                     = 4;
    ТабДок.РазмерКолонтитулаСверху         = 0;
    ТабДок.РазмерКолонтитулаСнизу         = 0;
    ТабДок.ОриентацияСтраницы             = ОриентацияСтраницы.Ландшафт;                        
    ТабДок.ВысотаСтраницы                 = 49;
    ТабДок.ШиринаСтраницы                 = 124;
        
    Макет = ПолучитьМакет("Макет");
    Область1     = Макет.ПолучитьОбласть("Область1");
            
    СтрокаПараметра = "";
    
    Сч = 0;
    Пока Сч < 500 Цикл
        
        Сч = Сч + 1;
        
        Если ТабДок.ПроверитьВывод(Область1) Тогда
            ТекущийПараметр = "1";
        Иначе
            ТекущийПараметр = "0";
        КонецЕсли;
        
        СтрокаПараметра = ТекущийПараметр;
        Область1.Параметры.АдресДоставки = СтрокаПараметра;
        ТабДок.Вывести(Область1);
        
    КонецЦикла;
    
    ТабДок.Вывести(Область1);
    ТабДок.Показать();

Написал вот такой незамысловатый код... и он работает... "0" всегда в начале новой страницы.
Может быть проблема именно в автовысоте строки...
5 DmitryNN
 
30.01.17
10:37
Макет = ПолучитьМакет("Макет");
    Область1     = Макет.ПолучитьОбласть("Область1");
            
    СтрокаПараметра = "";
    
    Сч = 0;
    Пока ТабДок.ПроверитьВывод(Область1) Цикл
        
        Сч = Сч + 1;
                
        СтрокаПараметра = СтрокаПараметра + "Й";
        Область1.Параметры.АдресДоставки = СтрокаПараметра;
                
    КонецЦикла;
    
    ТабДок.Вывести(Область1);
    ТабДок.Показать();

Но когда переписал на такой, при определенных размерах шрифтов опять на одну строчку меньше
6 Mkonst
 
30.01.17
10:41
Если не путаю, то перед формированием макета принтер должен быть уже определен..
7 DmitryNN
 
30.01.17
10:42
Тут один принтер и он стоит по умолчанию
8 Mkonst
 
30.01.17
10:47
ТабДокумент.ИмяПринтера  - может что-то ни то установлено?
9 Defender aka LINN
 
30.01.17
10:49
(3) Вообще-то, так и должно быть. проверитьВывод проверяет, поместится ли область на лист ПРИ ПЕЧАТИ.
10 DmitryNN
 
30.01.17
10:51
Учитывая (4) и (5) я думаю принтер правильно подхватывается
11 IlyaSR
 
30.01.17
10:51
(3) так и надо, пользователь сам выбирает как ему печатать и это сохраняется в КлючПараметровПечати... так сделано во всех типовых
12 DmitryNN
 
30.01.17
10:53
(11) согласен что так правильно, но у них уже настроено у всех по разному, а мне нужно чтобы все печатали с моими настройками.
13 IlyaSR
 
30.01.17
10:56
ТабДок.ВысотаСтраницы = 49;
ТабДок.ШиринаСтраницы = 124;
что это за особый формат бумаги???
14 DmitryNN
 
30.01.17
10:59
Наклейки на коробку
15 IlyaSR
 
30.01.17
11:02
принтер этикеток?
16 DmitryNN
 
30.01.17
11:02
Да
17 IlyaSR
 
30.01.17
11:03
ЭЭЭ, тогда в принтере настраивай размер и делай его по умолчанию
18 DmitryNN
 
30.01.17
11:04
Он слетает почему то... А если в коде то нормально подхватывается