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

Помогите пожалуйста понять...

Самописный отчёт. Вывожу таблицу значений в табличный документ через макет. Набор областей таков:

Шапка
ШапкаТаблицы
ТекущаяУлица
СтрокаТаблицы


На каждой странице повторяю ШапкаТаблицы. И сразу под шапкой ТекущаяУлица, для того чтобы в каждой строке не выводить улицу, чтобы не повторять в каждой строке одну и ту же улицу. Также ТекущаяУлица выводится когда по списку начинается другая улица. В цикле вывода СтрокаТаблицы при начале каждой итерации обновляю параметр отвечающий за значение параметра в области ТекущаяУлица текущей улицей из списка.


Так вот, проблема в том, что когда через конструкцию

ТабДок.ПовторятьПриПечатиСтроки = ТабДок.Область(4,,5,); // 4 - ШапкаТаблицы, 5 - ТекущаяУлица


то програмное изменение параметра отвечающего за значение в ТекущаяУлица не приводит к изменению. А повторяется только то, что было установлено в параметр перед конструкцией выше.

Как же это обойти ?

andrew76
Prana @ Сегодня, 14:49 необходимо зарегистрироваться для просмотра ссылки ,

Здравствуйте.
Маловато кода для анализа.
Prana
Цитата(andrew76 @ 25.10.24, 16:06) необходимо зарегистрироваться для просмотра ссылки
Здравствуйте.
Маловато кода для анализа.

Спасибо!
На данный момент код немного изменён, но всё равно нужный эффект не достигнут

&НаСервере
Процедура ВывестиНаПечать(ТабДок)
    
    ТабДОк.Очистить();
    
    ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
    ТабДок.РазмерСтраницы= "A4";
    ТабДок.АвтоМасштаб=Истина;                              
    
    
    Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет");
    
    ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
    ОбластьШапкаТаб = Макет.ПолучитьОбласть("ШапкаТаблицы");
    ОбластьУлицаТаб = Макет.ПолучитьОбласть("УлицаВТаблице");
    ОбластьСтрокаТаб = Макет.ПолучитьОбласть("СтрокаТаблицы");
    
    
    ОбластьШапка.Параметры.ТекущаяДата = Формат(ТекущаяДата(),"ДФ=dd.MM.yyyy");
    ОбластьШапка.Параметры.Период = ""+Формат(Объект.Период.ДатаНачала,"ДФ=dd.MM.yyyy")+" - "+Формат(Объект.Период.ДатаОкончания,"ДФ=dd.MM.yyyy");
    ТабДок.Вывести(ОбластьШапка);
    
        
    ПовторятьПриПечатиОбласть = ТабДок.Вывести(ОбластьШапкаТаб);
    ТабДок.ПовторятьПриПечатиСтроки = ПовторятьПриПечатиОбласть;
    
        
    ЭтаУлица="";
    
    сч=0;
    Для Каждого Стр ИЗ ТЗ Цикл
        //ТабДок.ПовторятьПриПечатиСтроки = ТабДок.Область(5,,5,);

        Уличка=""+НасПункт+", "+лев(Стр.ТипУлицы,3)+". "+Стр.Улица;
        ОбластьУлицаТаб.Параметры.НасПунктУлица = Уличка;
        ОбластьШапкаТаб.Параметры.НасПунктУлица = Уличка;
               
        Если ЭтаУлица<>Стр.КодУлицы  Тогда                                                        
                        
                        
            ТабДок.Вывести(ОбластьУлицаТаб);
                                    
        КонецЕсли;
                
        ОбластьСтрокаТаб.Параметры.ЛС = Стр.ЛС;        
        ОбластьСтрокаТаб.Параметры.Договор = Стр.Договор;
        ОбластьСтрокаТаб.Параметры.ФИОВладельца = ПреобразоватьФИОВИнициалы(Стр.ВладелецЛС);
        
        ЭтаУлица =  Стр.КодУлицы;
        ТабДок.Вывести(ОбластьСтрокаТаб);
                
                
    КонецЦикла;  
        
КонецПроцедуры


Макет
необходимо зарегистрироваться для просмотра ссылки

andrew76
Prana @ Сегодня, 18:47 необходимо зарегистрироваться для просмотра ссылки ,

Вот тут проблема ?

Если ЭтаУлица<>Стр.КодУлицы  Тогда                                                        
                        
       ТабДок.Вывести(ОбластьУлицаТаб);
                                    
КонецЕсли;


а если вот так ?

Если ЭтаУлица<>Стр.КодУлицы  Тогда                                                        
    
           ОбластьУлицаТаб.Параметры.НасПунктУлица = Уличка;                     
       ТабДок.Вывести(ОбластьУлицаТаб);
                                    
КонецЕсли;
Prana
Цитата(andrew76 @ 25.10.24, 16:57) необходимо зарегистрироваться для просмотра ссылки


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

нужно чтобы вот это выводилось под шапкой таблицы на каждой странице.
andrew76
Цитата(Prana @ 25.10.24, 14:49) необходимо зарегистрироваться для просмотра ссылки
то програмное изменение параметра отвечающего за значение в ТекущаяУлица не приводит к изменению. А повторяется только то, что было установлено в параметр перед конструкцией выше.


так получается , что выводится не совсем то что надо ?
в отладчике какое значение переменных "Уличка" и "ЭтаУлица" в блоке вывода ?
Prana
andrew76 @ Сегодня, 18:13 необходимо зарегистрироваться для просмотра ссылки ,
Да, текущая по циклу улица не выводится под шапкой на каждой странице.
УЛичка и ЭтаУлица штатно принимают значения согласно условий при каждой итерации.

Тут какая-та особенность метода ПовторятьПриПечатиСтроки...



Prana @ Сегодня, 20:26 необходимо зарегистрироваться для просмотра ссылки ,

поборол!

в этом месте
ТабДок.Вывести(ОбластьСтрокаТаб);


сдедал так

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

Если НЕ ТабДок.ПроверитьВывод(ОбластьСтрокаТаб)  Тогда
    ТабДок.Вывести(ОбластьУлицаТаб);
КонецЕсли;



щас проверяю все ли строки на месте...
Prana
Да, всё на месте. Колхоз, конечно, но работает.

andrew76, спасибо вам!
andrew76
Prana @ Сегодня, 0:08 необходимо зарегистрироваться для просмотра ссылки ,

Ну вот и хорошо.а на форуме (для спасибо) есть кнопка "c пальцем". smile.gif
Prana
andrew76 @ Сегодня, 5:12 необходимо зарегистрироваться для просмотра ссылки ,
есть
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.