Имя: Пароль:
1C
1С v8
Макет Построителя отчета
0 antiteror91
 
05.08.13
13:10
Изучаю построитель отчета. Вижу макет в котором есть именованные облости. В предприятии макет красиво заполняется, но есть одно НО. Я не нахожу в конфигураторе где происходит заполнение этих областей, т.е. даже обращения не вижу к этим областям. Подскажите пожалуйста как происходит процесс заполнения макета. Я создал свой макет для моего отчета но не знаю каким образом и какие задать наименование областей чтобы макет заполнялся. Спасибо!
1 Михаил Козлов
 
05.08.13
13:13
В зависимости от конфигурации. Обычно в модуле "общего" отчета (УниверсальныйОтчет, ОтчетСписокКроссТаблица, ОтчетОстаткиИОбороты).
2 antiteror91
 
05.08.13
13:17
(1) да нет отет сделан вручную: вот что есть в модулях:

СтруктураПредставлениеПолей = Новый Структура("ФизЛицоНаименование,Физлицо,ИмяВидаРасчета,Организация,ПодразделениеОрганизации",
    "Работник",
    "Работник",
    "Вид расчета",
    "Организация",
    "Подразделение");
    
    УправлениеОтчетами.ЗаполнитьПредставленияПолей(СтруктураПредставлениеПолей, ПостроительОтчета);
    
    ПостроительОтчета.Отбор.Добавить("Организация");
    ПостроительОтчета.Отбор.Добавить("ПодразделениеОрганизации");
    ПостроительОтчета.ВыводитьОбщиеИтоги = Истина;
    
    ПостроительОтчета.МакетОформления = ПолучитьМакетОформления(СтандартноеОформление.Интерфейс);
    ПостроительОтчета.Макет = ПолучитьМакет("Макет");
    
    ПостроительОтчета.ИзмеренияСтроки.Добавить("Организация");
    ПостроительОтчета.ИзмеренияСтроки.Добавить("ПодразделениеОрганизации");
    ПостроительОтчета.ИзмеренияСтроки.Добавить("Физлицо");
    ПостроительОтчета.ИзмеренияКолонки.Добавить("Группа");
    ПостроительОтчета.ИзмеренияКолонки.Добавить("ИмяВидаРасчета");
    
    ПостроительОтчета.РазмещениеИзмеренийВКолонках = ТипРазмещенияИзмерений.Вместе;
    ПостроительОтчета.РазмещениеИзмеренийВСтроках = ТипРазмещенияИзмерений.Вместе;
    
    ПустаяСтруктура = Новый Структура;

это настроики. текст запроса не представляю.
ну и процедура формирования отчета:

ДокументРезультат.Очистить();
    
    Макет = ПолучитьМакет("Макет");
    ЗаголовокОтчета = Макет.ПолучитьОбласть("Заголовок");
    ЗаголовокОтчета.Параметры.Период = "Период: " + ПредставлениеПериода(ДатаНач, ДатаКон, "ФП = Истина");
    Если ПостроительОтчета.Отбор.Организация.Использование Тогда
        
        ЗаголовокОтчета.Параметры.Организация = "Организация: " + ПостроительОтчета.Отбор.Организация.Значение;
    КонецЕсли;
    
    Если ТолькоЗаголовок Тогда
        
        ДокументРезультат.Вывести(ЗаголовокОтчета);
        Возврат;
    КонецЕсли;
    
    СписокСчетаНалогов = Новый СписокЗначений;
    СписокСчетаНалогов.Добавить(ПланыСчетов.Хозрасчетный.КДЗПоПФ);
    СписокСчетаНалогов.Добавить(ПланыСчетов.Хозрасчетный.ОбязательстваПоМедСтрахованию);
    СписокСчетаНалогов.Добавить(ПланыСчетов.Хозрасчетный.ОбязательстваПоПНФизЛиц);
    
    ПостроительОтчета.МакетЗаголовкаОтчета = ЗаголовокОтчета;
                                                                
    ПостроительОтчета.Параметры.Вставить("Прием",                        Перечисления.ПричиныИзмененияСостояния.ПриемНаРаботу);
    ПостроительОтчета.Параметры.Вставить("НачалоПериода",                НачалоДня(ДатаНач));
    ПостроительОтчета.Параметры.Вставить("КонецПериода",                КонецДня(ДатаКон));
    ПостроительОтчета.Параметры.Вставить("ВнутреннееСовместительство",    Перечисления.ВидыЗанятостиВОрганизации.ВнутреннееСовместительство);
    ПостроительОтчета.Параметры.Вставить("парамСписокСчетаНалогов"   ,  СписокСчетаНалогов);    
    
    ПостроительОтчета.Выполнить();
    ПостроительОтчета.ОформитьМакет();
    ПостроительОтчета.Вывести(ДокументРезультат);
    
    Ширина = ДокументРезультат.ШиринаТаблицы;
    ВысотаЗаголовка = 4;
    
    // удалим из документа итог по строкам - последняя колонка отчета
    Область = ДокументРезультат.Область(, Ширина, ВысотаЗаголовка + 1, Ширина);
    ДокументРезультат.УдалитьОбласть(Область, ТипСмещенияТабличногоДокумента.ПоГоризонтали);

    Для сч = 1 По Ширина Цикл
        
        Если ДокументРезультат.Область(ВысотаЗаголовка + 1, сч, ВысотаЗаголовка + 1, сч).Текст = "Я" Тогда
            // удалим из документа колонку "Я", соответствующую виртуальному виду расчета "Конечное сальдо"
            Область = ДокументРезультат.Область(, сч + 1, ВысотаЗаголовка + 1, сч + 1);
            Область.Разгруппировать();
            Область = ДокументРезультат.Область(, сч, ВысотаЗаголовка + 1, сч);
            Область.Разгруппировать();            
            Область = ДокументРезультат.Область(, сч, ВысотаЗаголовка + 1, сч);
            ДокументРезультат.УдалитьОбласть(Область, ТипСмещенияТабличногоДокумента.ПоГоризонтали);
        КонецЕсли;        
        
    КонецЦикла;    
    
    Если ДокументРезультат.Область(ВысотаЗаголовка + 1, 3, ВысотаЗаголовка + 1, 3).Текст = "А" Тогда
        // удалим из документа колонку "А", соответствующую виртуальному виду расчета "Начальное сальдо"
        Область = ДокументРезультат.Область(, 4, ВысотаЗаголовка + 1, 4);
        Область.Разгруппировать();
        Область = ДокументРезультат.Область(, 3, ВысотаЗаголовка + 1, 3);
        Область.Разгруппировать();
        ДокументРезультат.УдалитьОбласть(Область, ТипСмещенияТабличногоДокумента.ПоГоризонтали);
    КонецЕсли;
    
    ДокументРезультат.ФиксацияСверху = ВысотаЗаголовка + 1;
3 Михаил Козлов
 
05.08.13
13:23
Надо полагать в ПостроительОтчета.Вывести(...).
4 antiteror91
 
05.08.13
13:26
(3) ну у меня тоже такое предположение, но тогда возникает другой вопрос: если ПостроительОтчета.Вывести(...) стандартная операция, по какому принципу необходимо формировать наименования облостей чтоб отчет заполнился???
5 Михаил Козлов
 
05.08.13
13:28
Посмотрите макет "Макет" (ПолучитьМакет("Макет") и по аналогии.
6 antiteror91
 
05.08.13
13:34
(5) т.е. посмотреть макет генерируемый построителем??
7 Михаил Козлов
 
05.08.13
13:42
Нет, макет уже должен быть - посмотрите, как он устроен. Там должны быть несколько областей ("Заголовок", "ШапкаТаблицы", "ОформлениеИзмерений", "ОформлениеДеталей" и пр.).