Имя: Пароль:
1C
 
Нумерация страниц в отчете 1с (7.7)
0 REMREM
 
09.01.06
10:12
Подскажите,пожалуйста, как получить информацию о количестве выведенных страниц отчета в теле модуля формы без принудительного разбиения на страницы. Мне нужно знать хотя бы больше одной или нет.
Функция
Перем Номстр;
Функция счетчик()
Номстр=Номстр+1;
Возврат Номстр;
КонецФункции
Номстр=0;
Вставленная в колонтитул почему-то не срабатывает.
1 ТестПопытка
 
09.01.06
10:15
плодишь ветки?
Програмирование в 1С V7.7
2 REMREM
 
09.01.06
10:22
Но я не нашел ответа
3 Мулька
 
09.01.06
10:26
У тебя в вопросе ответ уже есть: "без принудительного разбиения на страницы".
Не взлетит.
4 REMREM
 
09.01.06
10:26
Печально
5 smaharbA
 
09.01.06
10:28
Взлетит
6 REMREM
 
09.01.06
10:28
Как
7 skunk
 
09.01.06
10:29
иметь номер страницы...
8 skunk
 
09.01.06
10:30
даже проще...

заводишь глобальную переменую... делаешь секцию... в секции пишешь

ТвояПеременая = ТвояПеременая + 1...

секцию делаешь выводить на каждой странице
9 REMREM
 
09.01.06
10:34
Это я понимаю, но объем отчета формируется не за счет фиксированных секций типа "Шапки", а за счет строк, которых много. Куда вставлять-то.
Повторение при печати фиксированных строк ведь не прокатит.
10 skunk
 
09.01.06
10:35
(9)1С сама его вставит на каждую страницу...
11 REMREM
 
09.01.06
10:35
Вот тут подробние пожалуйста.
12 skunk
 
09.01.06
10:49
ПовторятьПриПечатиСтроки(<?>,);
RepeatRowsWhilePrinting(<?>,);
Синтаксис:
ПовторятьПриПечатиСтроки(<НачСтрока>,<КонСтрока>)
Назначение:
Задать строки результирующей таблицы, повторяющиеся при печати в начале каждой страницы.
Параметры:
<НачСтрока> - номер первой строки повторения.
<КонСтрока> - номер последней строки повторения.
Замечание:
Метод может использоваться при работе с таблицей в режиме ввода данных.
13 REMREM
 
09.01.06
10:52
Да нет это я слава богу наизусть знаю.
Достатосно ли этого для достижения цели -получения номеров страниц. Мне кажется нет. Может я ошибаюсь?
14 skunk
 
09.01.06
10:56
(13)более чем достаточно... пробовано мин нет..
15 REMREM
 
09.01.06
10:58
Пробую
16 REMREM
 
09.01.06
11:02
Вставил в "шапку" отчета фукцию Счетчик().

Перем Номстр;
Функция счетчик()
Номстр=Номстр+1;
Возврат Номстр;
КонецФункции
Номстр=0;

Повтряю шапку при печати на каждой странице. Выводи везде 1. Что не так?
17 lisss
 
09.01.06
11:16
(16)Номстр не объявил как глобальную переменную....
18 skunk
 
09.01.06
11:16
var Page;

//*******************************************
function NumPage()
   Page = Page + 1;
endfunction

//*******************************************
procedure Make()
   Page = 0;
   tabReport = createobject("table");
   tabReport.SourceTable("Table") ;
   for x = 1 to 10 do
       tabReport.PutSection("Example");
   enddo;
   tabReport.Show();
   message(Page)
endprocedure
           


в секции Example ... в любой ячейки в свойствах указываешь ... выражение ... в тексте NumPage()
19 REMREM
 
09.01.06
11:19
(16)Объявил, объявил.
20 skunk
 
09.01.06
11:33
(19)ты (18) внимательно посмотрел... особенно то что надо сделать в ячейки секции
21 REMREM
 
09.01.06
11:38
(18) С примером все понятно, но tabReport.PutSection("Example"); я не знаю когда вызвать, т.к. у есть цикл, допустим, обхода(печати) большого справочника
"Номенклатура", а реальнее табличной части "расходной накладной", количество строк может не поместится на странице, названия могут быть длинными, т.е. строки таблицы будут иметь разную высоту. Как узнать сколько сраниц я уже напечатал? Вот в чем проблема. А вывод tabReport.PutSection("Example"); равносилен тому, что ты знаешь где кончилась страница. Как это узнать? Вот в чем проблема.
22 lisss
 
09.01.06
11:45
(21)тебе надо узнавать количество напечатанных страниц в процессе печати????
23 REMREM
 
09.01.06
11:50
Мне нужно знать когда я вывожу в цикле секцию, допустим "строка", которая соответсвует строке документа(элементу справочника), в результирующую таблицу, т.е. формирую эту таблицу(конечно физически еще не печатаю), скольким страницам соответствует объем выведенной информации в результирующую таблицу.
24 skunk
 
09.01.06
11:52
//*******************************************
procedure Make()
   Page = 0;
   tabReport = createobject("table");
   tabReport.SourceTable("Table") ;
   tabReport.RepeatRowsWhilePrinting("Example");
   // .... бла ... бла ...бла
   tabReport.Show();
   message(Page)
endprocedure
25 REMREM
 
09.01.06
12:03
(24)Я уже говорил(16),что повторение печати фиксированной секции, в которую вставленна функция счетчик():
Перем Номстр;// объявление глобальной переменной

Функция счетчик()
Номстр=Номстр+1;
Возврат Номстр;
КонецФункции

Номстр=0;//начальное значение(тело модуля)
Приводит к выводу на всех-всех страница цифры 1.
26 skunk
 
09.01.06
12:07
(25)смыль свой отчет на skunk_ dog mail.ru
27 REMREM
 
09.01.06
12:17
В Этом нет смысла, я приведу условный пример:
Таб=СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Пример");
Номенклатура=СоздатьОбъект("Справочник.Номенклатура");
Номенклатура.ВыбратьЭлементы();
Пока Номенклатура.ПолучитьЭлемент()=1 Цикл
Товар=Номенклатура.ТекущийЭлемент();
Таб.ВывестиСекцию("Строка");
КонецЦикла;
Допустим в справочнике 10000 элементов, как мне узнать номер текущей страницы в результирующей таблице. Повторяю, у меня задача уже- узнать есть одна страница или более.
28 skunk
 
09.01.06
12:25
с этого и надо было начинать... при выводе отчета ... и при формировании отчета ... это разные вещи...

в твоем варианте только подсчитывать... "руками"... при формировании отчета
29 smaharbA
 
09.01.06
14:09
Вывести отчет два раза...
30 lexa
 
09.01.06
15:58
31 mikecool
 
09.01.06
16:53
Или я туго въезжаю, или развели демагогию на пустом месте...
Разве методы ВысотаСекции(), ВысотаТаблицы() и ВысотаСтроки() отменяли?
32 skunk
 
09.01.06
16:55
(31)нет не въезжаешь... они не везде работают...
33 NiGMa
 
09.01.06
17:02
(31) ВысотаСтроки() не работает, ежели она "Авто"
И не возвращает реальную высоту при переносе по словам.