Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ПовторятьПриПечатиСтроки - повторяет не то что нужно
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
Stemesseder
Здравствуйте, я не программист, есть возможность и желание менять ту конфигурацию что имею к лучшему.
Начинаю так сказать этот процесс. Пока на повестке есть такой вопрос. Помогите пожалуйста понять что не так.

В печатной форме с таблицей которая может иметь разный размер нужно повторить заголовок таблицы, при продолжении табличной части на следующей странице.
Для этого после получения и вывода заголовка таблицы дописал следующее:

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


В результате на следующей станице повторяется не заголовок к таблице а первые 2 строки самой таблицы.
podcast
Stemesseder @ Сегодня, 12:22 необходимо зарегистрироваться для просмотра ссылки ,
    Если Не ТабДокумент.ПроверитьВывод(ПоследняяОбласть) Тогда 
        // ПоследняяОбласть не вмещается.
        ТабДокумент.ПовторятьПриПечатиСтроки = Макет.Область("ЗаголовокТаблицы")
    КонецЕсли;
Stemesseder
podcast @ Сегодня, 13:34 необходимо зарегистрироваться для просмотра ссылки ,

Спасибо но ПроверитьВывод не работал в этом документе и раньше и сейчас не срабатывает. Вернее срабатывает с ошибкой:

{Документ.ТТН.МодульОбъекта(1577)}: Ошибка при вызове метода контекста (ПроверитьВывод)
Если ТабДокумент.ПроверитьВывод("Строка") тогда
по причине:
Несоответствие типов (параметр номер '1')

Написано было так:
    ОбластьМакета = Макет.ПолучитьОбласть("Строка");
    Если Документы.Количество() > 0 Тогда
НомерСтроки = 0;
        Для каждого Строка из ТЗ Цикл

            ОбластьМакета.Параметры.Заполнить(Строка);
            НомерСтроки = НомерСтроки + 1;
            ОбластьМакета.Параметры.КодПродукции = НомерСтроки;
            ТабДокумент.Вывести(ОбластьМакета);
                       Если Не ТабДокумент.ПроверитьВывод("Строка") тогда

                сообщить("1"); //просто проверяю

            КонецЕсли;


У документа в начале установлено
ТабДокумент.АвтоМасштаб             = Истина;
Bernet
Stemesseder @ Сегодня, 14:14 необходимо зарегистрироваться для просмотра ссылки ,
Проверить вывод немного не то делает, туда не строка передается. Выдержка из Синтаксис-помощника:
Цитата
Синтаксис:

ПроверитьВывод(<Таблицы>)
Параметры:

<Таблицы> (обязательный)

Тип: Массив; ТабличныйДокумент.
Массив из проверяемых таблиц или табличный документ.
Возвращаемое значение:

Тип: Булево.
Истина - умещаются; Ложь - в противном случае.
Описание:

Проверяет, умещаются ли переданные табличные документы на страницу при печати.

Доступность:

Сервер, толстый клиент, внешнее соединение.
Примечание:

При возникновении проблем с получением информации о текущем принтере (например, в системе не установлено ни одного принтера), будет вызвано исключение.
Следует учитывать, если для табличного документа установлены поля, размер которых меньше размера полей, установленных для принтера, на котором документ будет напечатан, то при печати содержимое некоторых строк может не уместиться на странице, даже если метод возвращает значение Истина.
Пример:

Т.Добавить(ШапкаДокумента);
Т.Добавить(СтрокаДокумента);
Т.Добавить(ПодвалДокумента);
Если Не ТабДок.ПроверитьВывод(Т) Тогда
Сообщить("Документ не умещается на страницу!");
КонецЕсли;
Stemesseder
Bernet @ Вчера, 14:41 необходимо зарегистрироваться для просмотра ссылки ,

Переделал так

МассивОбластей = Новый массив;

ОбластьМакета = Макет.ПолучитьОбласть("Шапка"); //много всего написано - получена область "шапка", заполнена и после ее вывода помещена в массив областей документа

ТабДокумент.Вывести(ОбластьМакета);
МассивОбластей.Добавить(ОбластьМакета.Область("Шапка"));//заполнение массива

//Аналогично по области макета "ЗаголовокТаблицы"

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

//Аналогично по области макета "строка"

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


//т.к именно помещается или нет область "строка" меня интересует то так написано:

Если Не ТабДокумент.ПроверитьВывод(МассивОбластей) тогда
                сообщить("1");
Иначе
                Сообщить("2");
КонецЕсли


В результате
{Документ.ТТН.МодульОбъекта(1571)}: Ошибка при вызове метода контекста (ПроверитьВывод)
Если Не ТабДокумент.ПроверитьВывод(МассивОбластей) тогда
по причине:
Несоответствие типов (параметр номер '1')

Не получается
logist
МассивОбластей должен быть массив элементов типа ТабличныйДокумент, а у вас там тип ОбластьЯчеекТабличногоДокумента
Stemesseder
logist @ 01.09.17, 20:39 необходимо зарегистрироваться для просмотра ссылки ,

Подскажите как заполнить в моем случае массив, так что бы тип элементов был правильный с сработала проверка.
logist
Возможно так:
Если Не ТабДокумент.ПроверитьВывод(ТабДокумент) тогда
Stemesseder
logist @ Сегодня, 11:51 необходимо зарегистрироваться для просмотра ссылки ,

О, спасибо, прогресс наметился - ПроверитьВывод срабатывает, однако и в случае 1 страницы сообщает "1" и в случае 2-х страниц тоже сообщает "1"

Значит массив не правильно заполняется ?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.