8.х Заголовки в построителе отчета

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Уфимская, 20 авг 2009.

  1. TopicStarter Overlay
    Уфимская
    Offline

    Уфимская

    Регистрация:
    5 июн 2007
    Сообщения:
    17
    Симпатии:
    0
    Баллы:
    1
    Искала во всех 1Совских форумах ответ на вопрос: КАК Переименовать заголовки в отчете, сделанного Построителем без использования макета. Вопросов кучу нашла, ответов - ни одного. Суть в том, что в построителе можно варьировать набор колонок отчета, и если не использовать макет, построитель сам выводит только"нужные" колонки". Но имена колонок он задает как псевдонимы из запроса, т.е. коряво, типа "ОбщаяСумма". Если использовать макет, то не работает фишка с настройкой колонок. То есть макет выводится как есть со всеми колонками, просто если в наборе доступных полей какое то поле удалено, что в отчет колонка для вывода этого поля все равно выводится, просто заполняется пустыми значениями.
    Уф, надеюсь, вы меня поняли. Я нашла свой выход из ситуации. Но мне кажется, он корявый. Кто что скажет? Есть более "правильное" решение?
    Код:
    ПостроительОтчетаРеестрПутевыхЛистов.Вывести(ЭлементыФормы.ПолеТабличногоДокумента);
    ОбластьНайдена = ЭлементыФормы.ПолеТабличногоДокумента.НайтиТекст("ВидПутевки");
    Если ОбластьНайдена <> Неопределено тогда
    ОбластьНайдена.Текст = "Форма пут. листа";
    КонецЕсли;     
    
    
    ВидПутевки это имя поля, которое выводится в колонку отчета. И колонка в отчете так и называется "ВидПутевки". Но в результате вышеуказанного кода производится замена текста "ВидПутевки" на "Форма пут. листа". Плох метод тем, что на проделывать это надо на каждую колонку (со строки "ОбластьНайдена..." естественно)
    // добавлено час спустя.

    По аналогии добавляю в заголовок период

    Код:
    ОбластьНайдена = ЭлементыФормы.ПолеТабличногоДокумента.НайтиТекст("Реестр путевых листов");
    Если ОбластьНайдена <> Неопределено тогда
    ОбластьНайдена.Текст = "Реестр путевых листов за "+ПредставлениеПериода(НачалоДня(ВыбНачДата), КонецДня(ВыбКонДата), "ФП = Истина");;
    КонецЕсли;	 
    
    и задаю формат шапки таблицы:

    Код:
    ОбластьНайдена = ЭлементыФормы.ПолеТабличногоДокумента.Области.Найти("ШапкаТаблицы");
    Если ОбластьНайдена <> Неопределено тогда
    ОбластьНайдена.РазмещениеТекста=ТипРазмещенияТекстаТабличногоДокумента.Переносить;
    ОбластьНайдена.ВертикальноеПоложение=ВертикальноеПоложение.Центр;
    ОбластьНайдена.ГоризонтальноеПоложение=ГоризонтальноеПоложение.Центр;
    КонецЕсли;	
    
  2. wiranata
    Offline

    wiranata Опытный в 1С

    Регистрация:
    21 янв 2009
    Сообщения:
    80
    Симпатии:
    0
    Баллы:
    26
    Что то вроде этого:

    Код:
    // Продолжить автоматическое формирование макета.
    Построитель.Макет = Неопределено;
    
    МакетПостроителя = Построитель.Макет;
    
    // Получить области заголовка и подвала.
    ОбластьЗаголовока = МакетПостроителя.Область("Заголовок");
    ОбластьПодвала = МакетПостроителя.Область("Подвал");
    
    // Вывести текст во вторую и третью строки области заголовка
    МакетПостроителя.Область("R"+ Строка(ОбластьЗаголовока.Верх + 1) + "C2").Текст = "Остатки товаров на складах";
    МакетПостроителя.Область("R"+ Строка(ОбластьЗаголовока.Верх + 2) + "C2").Текст = "по состоянию на " + ТекущаяДата();
    
    // Вывести текст в строку подвала
    МакетПостроителя.Область("R"+ Строка(ОбластьПодвала.Верх) + "C2").Текст = "отчет сформирован пользователем " + ИмяПользователя();
    
    // Установить построителю измененный макет.
    Построитель.Макет = МакетПостроителя;
    
    
    
  3. TopicStarter Overlay
    Уфимская
    Offline

    Уфимская

    Регистрация:
    5 июн 2007
    Сообщения:
    17
    Симпатии:
    0
    Баллы:
    1

    Это подойдет к заголовку макета. Но не для шапки таблицы, где набор колонок может быть разный по составу и порядку.

    Еще один мой кусок из "борьбы" с несовершенством выходных форм в Построителе.
    Вывод дат без времени.

    Код:
    	Для а=5 по ЭлементыФормы.ПолеТабличногоДокумента.ВысотаТаблицы цикл
    Для б=1 по ЭлементыФормы.ПолеТабличногоДокумента.ШиринаТаблицы цикл
    ОчереднаяОбласть = ЭлементыФормы.ПолеТабличногоДокумента.Область("R"+Формат(а,"Ч")+"C"+Формат(б,"Ч"));
    Если ОчереднаяОбласть <> Неопределено тогда
    Текст = ОчереднаяОбласть.Текст;
    Попытка
    ДатаТекста = Дата(Текст);
    Если ДатаТекста <> Дата("00010101") тогда
    ОчереднаяОбласть.Текст = Формат(ДатаТекста,"ДЛФ =Д");
    КонецЕсли;
    Исключение
    КонецПопытки;
    КонецЕсли;
    КонецЦикла;
    КонецЦикла;
    
    Кусок пишется тоже после метода
    ПостроительОтчета.Вывести()
    Счетчик а начинается с 5 потому как с 5 строки начинаются данные
  4. wiranata
    Offline

    wiranata Опытный в 1С

    Регистрация:
    21 янв 2009
    Сообщения:
    80
    Симпатии:
    0
    Баллы:
    26
    Обожди, а как ты получаеш данные в построитель? может тебе просто до передачи данных в построитель настроить алиасы в запросе?
    Или функцией обработать перед передачей в построитель полученные данные (названия стобцов, кстати не обязательна и функция, просто задай представления)?
  5. EvgDol
    Offline

    EvgDol

    Регистрация:
    3 сен 2008
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    Господа, извиняюсь за небольшой флуд, но 8.0 уже морально устарела, а в 8.1. есть Схема компоновки данных, в которой подобные проблемы уже решены.
  6. wiranata
    Offline

    wiranata Опытный в 1С

    Регистрация:
    21 янв 2009
    Сообщения:
    80
    Симпатии:
    0
    Баллы:
    26
    а кстати, девушка вроде не написала на какой версии она ставит опыты...
  7. TopicStarter Overlay
    Уфимская
    Offline

    Уфимская

    Регистрация:
    5 июн 2007
    Сообщения:
    17
    Симпатии:
    0
    Баллы:
    1
    в 8.1 ставлю опыты. вот именно, опыты, потому как с 8кой только начала общаться. А потому и ставлю вопрос о том, что, быть может, я велосипед изобретаю.
    EvgDol, что за системы компоновки?

    Получаю данные через запрос. Представления использовать в качестве заголовков имеет смысл только если они состоят из 1 слова. А если мне нужно задать имя столбца к примеру "Показания спидометра при выезде"?
  8. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Здраствуйте!

    1. Вы писали
    Ответ: Не системы компоновки данных, а схемы компоновки данных или кратко СКД.

    Пример СКД Вы найдете во вложенных файлах.

    2. Настройка заголовков для таб документа

    Код:
    Процедура ОформитьЗаголовок(ТабличныйДокумент)
    
    ОбластьЗаголовок = ТабличныйДокумент.Области.Найти("Заголовок");
    
    Если ТипЗнч(ОбластьЗаголовок) = Тип("ОбластьЯчеекТабличногоДокумента") Тогда
    
    ОбластьНазваниеОтчета = ТабличныйДокумент.Область(ОбластьЗаголовок.Верх, 2, ОбластьЗаголовок.Верх, 2);
    ОбластьНазваниеОтчета.Шрифт = Новый Шрифт(ОбластьНазваниеОтчета.Шрифт,, 12, Истина);
    
    КонецЕсли;
    
    КонецПроцедуры // ОформитьЗаголовок()
    
    
    Этот кусок кода взят из конфигурации УТ, объект - УниверсальныйОтчет.

    Вложения:

Поделиться этой страницей