Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
16 апр 2024, 15:55

Сбой

Автор dasha4, 02 июл 2015, 15:20

0 Пользователей и 1 гость просматривают эту тему.

dasha4

Здравствуйте. Я вообще-то уже обращалась с этой темой, но у меня похоже произошел какой-то сбой и она упорно не хочет считать
Если ДокументРезультат.КоличествоСтраниц() > 1 Тогда
В МодулеОбъекта, Процедура ПриКомпоновкеРезультата
Для того, чтобы если количество страниц больше одной выводить Колонтитулы и копировать Шапку на другие страницы.
В ответ на это условие мне сейчас выводится Ложь.
Я не знаю может Настройки какие-нибудь кто-то поменял? Принтер, он узнает и выводит как основной, ТолстыйКлиент
1С 8.2.15

vitasw

Проверяете после вывода в макет или перед?

dasha4

Цитата: vitasw от 02 июл 2015, 15:22
Проверяете после вывода в макет или перед?
Я не понимаю отчего это зависит? Неужели от порядка в котором создаешь? Я в Отчете убрала МакетОформления и Макет. И все пошло! Потом заново создала два этих макета, и все заработало!
Добавлено: 03 июл 2015, 11:48


Блин. Я условие забыла поменять. У меня стояло =Ложь. А как только я сделала >1 - все перестало работать.
И когда я убрала макеты, тоже не заработало.

vitasw

Вам помощь нужна? или просто поговорить? ответе на вопрос
Цитата: vitasw от 02 июл 2015, 15:22Проверяете после вывода в макет или перед?


dasha4

Цитата: vitasw от 03 июл 2015, 11:53
Вам помощь нужна? или просто поговорить? ответе на вопрос
Цитата: vitasw от 02 июл 2015, 15:22Проверяете после вывода в макет или перед?
И после и перед

vitasw

Покажите код

Kironten

Цитата: dasha4 от 03 июл 2015, 13:15
Цитата: vitasw от 03 июл 2015, 11:53
Вам помощь нужна? или просто поговорить? ответе на вопрос
Цитата: vitasw от 02 июл 2015, 15:22Проверяете после вывода в макет или перед?
И после и перед
А какой смысл?
Проверять надо в самом конце, после заполнения и вывода областей в табличный документ, но перед возвратом на показ. Примерно так:

ТабДок.Вывести(ОбластьПодписи);

Если ТабДок.КоличествоСтраниц > 1 Тогда
    ТабДок.НижнийКолонтитул.НачальнаяСтраница = 1;
    ТабДок.НижнийКолонтитул.ВертикальноеПоложение = ВертикальноеПоложение.Низ;
    ТабДок.НижнийКолонтитул.ТекстВЦентре = "Страниц " + "[&НомерСтраницы]" + " из " + "[&СтраницВсего]";
    ТабДок.НижнийКолонтитул.Выводить = Истина;
КонецЕсли;

Возврат ТабДок;

dasha4

Цитата: Kironten от 03 июл 2015, 13:29
Цитата: dasha4 от 03 июл 2015, 13:15
Цитата: vitasw от 03 июл 2015, 11:53
Вам помощь нужна? или просто поговорить? ответе на вопрос
Цитата: vitasw от 02 июл 2015, 15:22Проверяете после вывода в макет или перед?
И после и перед
А какой смысл?
Проверять надо в самом конце, после заполнения и вывода областей в табличный документ, но перед возвратом на показ. Примерно так:

ТабДок.Вывести(ОбластьПодписи);

Если ТабДок.КоличествоСтраниц > 1 Тогда
    ТабДок.НижнийКолонтитул.НачальнаяСтраница = 1;
    ТабДок.НижнийКолонтитул.ВертикальноеПоложение = ВертикальноеПоложение.Низ;
    ТабДок.НижнийКолонтитул.ТекстВЦентре = "Страниц " + "[&НомерСтраницы]" + " из " + "[&СтраницВсего]";
    ТабДок.НижнийКолонтитул.Выводить = Истина;
КонецЕсли;

Возврат ТабДок;

У меня Отчет строится через СКД, а не ручным кодом. Поэтому когда я добавляю в Модуль Менеджера эти строчки, ничего не происходит.
Колонтитулы и повтор сирок у меня записаны в МодулеОбъекта:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
ДокументРезультат.ПолеСлева=35;
ДокументРезультат.ПолеСнизу=30;
ДокументРезультат.ПолеСверху=20;
ДокументРезультат.ПолеСправа=7;
ДокументРезультат.Автомасштаб = Истина;
Если ДокументРезультат.КоличествоСтраниц() > 1 Тогда
  ДокументРезультат.ПовторятьПриПечатиСтроки = ДокументРезультат.Область("R3:R4");
  ДокументРезультат.НижнийКолонтитул.Выводить = ИСТИНА;
  ДокументРезультат.НижнийКолонтитул.ТекстСлева = "-------------------------------------------------------------------------------------------------------------------------------------------"+Символы.ПС+"Лист [&НомерСтраницы] [&Дата]         [&Время]";
  ДокументРезультат.НижнийКолонтитул.Шрифт = Новый Шрифт("Times",10,,Ложь);                                                                                                                                                                                                                         
КонецЕсли; 
КонецПроцедуры

Все вроде правильно, а вылает число ноль

vitasw

Нет конечно, неправильно.
У вас всегда будет 0, потому-что вы проверяете пустой документ и после этого СКД формирует результат.
Цитата: dasha4 от 03 июл 2015, 15:41Поэтому когда я добавляю в Модуль Менеджера эти строчки,

А причем тут модуль менеджера?

Kironten

Цитата: dasha4 от 03 июл 2015, 15:41
У меня Отчет строится через СКД, а не ручным кодом.
Ну и делайте через СКД, кто мешает?
Выводите программно.
Просто проведите проверку после:
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных)
Тогда у Вас будет количество страниц получено из заполненного табличного документа.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск