Имя: Пароль:
1C
1C 7.7
v7: Программно получить номер страницы отчета
0 pcica
 
24.05.12
16:34
Перечитал все что отдал по запросу гугл. Все равно не получается :(
Помогите.
Задача следующая: нужно чтобы каждый заказ в отчете - бывет и 3 строчки бывает и на 2 страницы шел неразрывно с новой страницы. т.к. менеджер разрезает ножницами листик и отдает в цех.

Метод Сервис.ВысотаСтрокиТаблицы от FormEx приклеил к отчету. Взял высоту А4 как 297 мм и подсчитываю длину строк. как только набегает 297мм я вставляю разрыв страницы в то место где был ближайший начало заказ (символ "-") и начинаю отсчет заново.
Работает только тогда когда стоит масшат 100%. Но отчет "плавающи" по ширине поэтому не знаю что делать.
Не работает когда в параметрах страницы стоит "По ширине листа".
Отчет на страницы разбивается некорректно.
Вопрос: может есь возможность както автомасштаб одеть на расчет длины страницы?

ВОт кусочек того что сделано:
После формирования отчета вот такой кусок:


Сервис = СоздатьОбъект("Сервис");
Таб.Показать("Тест");
Сервис.ПрятатьТаблицу(Таб,1);
дл = 0;
длСтр = 297; // мм. А4
длНовЗак = 0;
ПозНоЗак = 0;

НомСтрНовСтр = 0;
Для инд = 1 по Таб.ВысотаТаблицы() Цикл
  дл = дл + Сервис.ВысотаСтрокиТаблицы(Таб, инд, 3);
  длНовЗак = длНовЗак + Сервис.ВысотаСтрокиТаблицы(Таб, инд, 3);
       
  Если дл > длСтр Тогда // перешли на другую страницу
     Таб.НоваяСтраница(НомСтрНовСтр);
     дл = длНовЗак;
  КонецЕсли;
       
  Если Таб.Область("R"+инд+"C1").Текст="-" Тогда
     ПозНоЗак = дл;
     НомСтрНовСтр = инд;
     длНовЗак = 0;
  КонецЕсли;
       
КонецЦикла;

Сервис.ПрятатьТаблицу(Таб,0);

Спасибо!!!
1 pcica
 
24.05.12
16:36
Уточню: видимо когда происходит масшабирование по "ширине страницы" параметра 297 мм для А4 уменьшается пропорционально "сжатию". Соответственно у меня все "плывет"
Правильно мыслю?
2 pcica
 
24.05.12
16:40
Еще уточнение: в коде ошибка. Не то скопировал - тренировался.
метод вызывается как
Сервис.ВысотаСтрокиТаблицы(Таб, инд, 1);
параметр 3 - я подбирал юниты - не помогло для разбивки.
3 Злопчинский
 
24.05.12
18:45
Сделай секции фиксированной высоты. а чтобы влазил тектс если он длинный - автоподбор шрифта Автоподбор шрифта
4 Злопчинский
 
24.05.12
18:46
хотя с другой стороны - и этого не надо:
какая проблема для каждого нового заказа просто тупо начинать с новой страницы? вопрос чисто в экономии бумаги..?
5 pcica
 
24.05.12
23:36
Ну да. Бывают заказы на 3-5 строчек. бывают на целый лист.
Начальство недовольно когда целый лист на 3-5 строчек тратится.
В принципе для этой цели и был сделан отдельный отчет, где бы манагеры могли отбирать группу заказов и делать им общую печать.

Перелопатил много всего за день и на данный момент решил проблему с помошью программы Йоксель. Отчет копируется в эксель через обработку йоеселя и там манагер уже сам разбивает на страницы печать.
6 Злопчинский
 
25.05.12
01:04
(5) еврейское решение.
7 Злопчинский
 
25.05.12
01:05
можно сделать  как в (3), а можно и даже без фикисрованной высоты - и вычислять...