Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
21 июн 2021, 19:04

Перенос области в макете

Автор Fedor_Safonchik, 31 авг 2016, 12:48

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

Fedor_Safonchik

Доброго времени суток !

Есть цикл, который выводит постепенно всю область на макет, затем необходимо проверить, помещается ли данная область на странице, если нет - тогда необходимо перенести всю область.

Вот код

// ИЗ ТАБЛИЦЫ ЗНАЧЕНИЙ "КОНТАКТНОЙ ИНФОРМАЦИИ" ЗАПОЛНЯЕМ ПАРАМЕТРЫ В ПЕЧ. ФОРМЕ \\
НомерСтроки = 1;
Для каждого ТекСтрокаКонтактнойИнформации ИЗ ТЗКонтактнойИнформации Цикл
ОбластьКонтактыТехническихСлужбЗначения.Параметры.НомерСтроки = "3." + НомерСтроки;
НомерСтроки = НомерСтроки + 1;
ОбластьКонтактыТехническихСлужбЗначения.Параметры.ФИОАбонента = ТекСтрокаКонтактнойИнформации.ФИОАбонента;
ОбластьКонтактыТехническихСлужбЗначения.Параметры.ТелефонАбонента = ТекСтрокаКонтактнойИнформации.ТелефонАбонента;
ОбластьКонтактыТехническихСлужбЗначения.Параметры.EmailАбонента = ТекСтрокаКонтактнойИнформации.EmailАбонента;
ОбластьКонтактыТехническихСлужбЗначения.Параметры.ФИООператора = ТекСтрокаКонтактнойИнформации.ФИООператора;
ОбластьКонтактыТехническихСлужбЗначения.Параметры.ТелефонОператора = ТекСтрокаКонтактнойИнформации.ТелефонОператора;
ОбластьКонтактыТехническихСлужбЗначения.Параметры.EmailОператора = ТекСтрокаКонтактнойИнформации.EmailОператора;
ТабличныйДокумент.Вывести(ОбластьКонтактыТехническихСлужбЗначения);
КонецЦикла;

cska-fanat-kz

Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Fedor_Safonchik

/////////////////////////// ВСТАВЛЯЕТ ГОРИЗОНТАЛЬНЫЙ РАЗДЕЛИТЕЛЬ СТРАНИЦ ПЕРЕД ОБЛАСТЬЮ КОНТАКТНОЙ ИНФОРМАЦИИ
// НЕ ОСУЩ. ПЕРЕНОС (ПЕРЕПИСАТЬ)
МассивОбластей = Новый Массив;
МассивОбластей.Добавить(ОбластьШапка);
МассивОбластей.Добавить(ОбластьОсновнаяИнформация);
МассивОбластей.Добавить(ОбластьТехническиеУсловия);
МассивОбластей.Добавить(ОбластьСогласиеНаОбработкуНСИИстина);
МассивОбластей.Добавить(ОбластьТарифныйПланШапка);
МассивОбластей.Добавить(ОбластьТарифныйПланЗначения);
МассивОбластей.Добавить(ОбластьКонтактыТехническихСлужбШапка);
МассивОбластей.Добавить(ОбластьКонтактыТехническихСлужбЗначения);

        Если НЕ ТабличныйДокумент.ПроверитьВывод(МассивОбластей) Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
, я понимаю вот такой код Вы примерно имели ввиду, все области прошлые заносим в массив и его проверяем, затем как мне вставить разделитель страниц уже перед шапкой области контактных данных?

LexaK

немного по другому строится проверка вывода

1.формируете промежуточный таб док
2.проверяете вывод
3.при необходимости вставляете разделитель
4.выводите подготовленный в п.1 таб док

вот как это примерно выглядит в коде с вашим примером, попробуйте



// ИЗ ТАБЛИЦЫ ЗНАЧЕНИЙ "КОНТАКТНОЙ ИНФОРМАЦИИ" ЗАПОЛНЯЕМ ПАРАМЕТРЫ В ПЕЧ. ФОРМЕ \\

табДокКИ = Новый ТабличныйДокумент;  //промежуточный ТД
НомерСтроки = 0;
Для каждого ТекСтрокаКонтактнойИнформации ИЗ ТЗКонтактнойИнформации Цикл

//можно одной командой заполнить все параметры
ОбластьКонтактыТехническихСлужбЗначения.Параметры.Заполнить(ТекСтрокаКонтактнойИнформации);

//заполняем номер
НомерСтроки = НомерСтроки + 1;
ОбластьКонтактыТехническихСлужбЗначения.Параметры.НомерСтроки = "3." + НомерСтроки;

//формируем промежуточный ТД
табДокКИ.Вывести(ОбластьКонтактыТехническихСлужбЗначения);

//ОбластьКонтактыТехническихСлужбЗначения.Параметры.НомерСтроки = "3." + НомерСтроки;
//НомерСтроки = НомерСтроки + 1;
//ОбластьКонтактыТехническихСлужбЗначения.Параметры.ФИОАбонента = ТекСтрокаКонтактнойИнформации.ФИОАбонента;
//ОбластьКонтактыТехническихСлужбЗначения.Параметры.ТелефонАбонента = ТекСтрокаКонтактнойИнформации.ТелефонАбонента;
//ОбластьКонтактыТехническихСлужбЗначения.Параметры.EmailАбонента = ТекСтрокаКонтактнойИнформации.EmailАбонента;
//ОбластьКонтактыТехническихСлужбЗначения.Параметры.ФИООператора = ТекСтрокаКонтактнойИнформации.ФИООператора;
//ОбластьКонтактыТехническихСлужбЗначения.Параметры.ТелефонОператора = ТекСтрокаКонтактнойИнформации.ТелефонОператора;
//ОбластьКонтактыТехническихСлужбЗначения.Параметры.EmailОператора = ТекСтрокаКонтактнойИнформации.EmailОператора;
//ТабличныйДокумент.Вывести(ОбластьКонтактыТехническихСлужбЗначения);   

КонецЦикла;

//проверяем вывод КИ
Если НЕ ТабличныйДокумент.ПроверитьВывод(табДокКИ) Тогда
//выводим разделитель
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
//при необходимости выводим заголовок таблицы
//ТабличныйДокумент.Вывести(ЗаголовокТаблицы);
КонецЕсли;

//выводим КИ
ТабличныйДокумент.Вывести(табДокКИ);   

ответ Понравился? (в смысле пригодился?)

Fedor_Safonchik

LexaK, получается, в промежуточный табДокИ мне необходимо вывести все предыдущие области ?
Добавлено: 31 авг 2016, 14:30


LexaK, большое спасибо, всё получилось, благодарю !

LexaK

Цитировать
получается, в промежуточный табДокИ мне необходимо вывести все предыдущие области ?
нет, только то что надо проверить в основном ТД (вот в нем все предыдущие области)
ответ Понравился? (в смысле пригодился?)

Теги:

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

Рейтинг@Mail.ru Rambler's Top100

Поиск