1с построитель отчета не видны поля

Обновлено: 08.07.2024

Построитель отчетов — это объект, встроенного языка, предназначенный для динамического создания отчета в 1С 8.3 как программными, так и интерактивными средствами.

Основными областями применения построителя отчетов являются стандартные отчеты 1С и аналитические отчеты, произвольные выборки для обработки информации, создание отчетов пользователями без доработки в конфигурации.

В качестве источника данных для построителя отчета могут выступать: таблица значений, результаты запроса, область ячеек табличного документа, табличная часть, набор записей регистров (накопления, сведений, бухгалтерии, расчета).

1С Предприятие имеет особые расширения синтаксиса, предназначенные специально для построителя отчетов в 1С. Такие инструкции оформляются в фигурные скобки <. >. При обычном выполнении запроса они будут игнорироваться платформой. Механизм работы скобок прост: вне скобок прописывается текст запроса для построителя, в внутри – запрос для настроек.

2. Настройки из текста запроса 1С

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

Настройки включают в себя:

Можно предоставить пользователю возможность изменять настройки построителя отчета не с помощью табличных полей 1С 8.3, расположенных в форме, а с помощью полей ввода. Это может понадобиться, например, в тех случаях, когда пользователю нужно иметь возможность настроить лишь некоторые, заранее известные настройки построителя 1С. Например, даты формирования отчета в 1С, отбор по номенклатуре и т.д. В этом случае в форме можно разместить поля ввода и связать их со значениями соответствующих элементов отбора построителя отчета.

Для формирования табличного документа построитель отчета использует макет или созданный разработчиком, или генерируемый автоматически.

Построитель отчета 1С позволяет вывести данные в табличный документ или диаграмму.

Построитель отчетов может использоваться в тех случаях, когда СКД недоступна или существует вероятность, что она отработает неправильно.

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

3. Пример разработки отчета 1С


Наш отчет будет выводить данные в элемент формы – табличный документ, а также в элемент формы – диаграмму. В отчете с использованием табличного документа мы настроим отбор по номенклатуре и (или) по периоду.


То есть в отчете можно будет посмотреть остатки по номенклатуре 1С, по периоду (условие больше или равно), и по номенклатуре и по периоду.
Итак, начнем.

1. Объявляем создание нового объекта типа ПостроительОтчета;

2. Источником данных мы выберем текст запроса 1С.

| ОстаткиНоменклатурыОстатки.Номенклатура КАК Номенклатура,

| ОстаткиНоменклатурыОстатки.КоличествоОстаток КАК КоличествоОстаток,

| ОстаткиНоменклатурыОстатки.СуммаОстаток КАК СуммаОстаток

| РегистрНакопления.ОстаткиНоменклатуры.Остатки КАК ОстаткиНоменклатурыОстатки

|ИТОГИ СУММА(КоличествоОстаток), СУММА(СуммаОстаток) ПО

| Номенклатура КАК Номенклатура";

Конструкция ПостроительОтчета.ЗаполнитьНастройки(); Выполняет автоматическое заполнение настроек построителя из текста запроса.

Пример описания Таблицы значений в качестве источника данных.:

ПостроительОтчета.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТаблицаЗначенийРезультат);

3. Можно воспользоваться макетом, созданным разработчиком:

Или автоматически сформированным макетом, со своими настройками:

Макет.Область().ЦветФона = Новый Цвет(100,100,100);

Макет.Область().ЦветТекста = Новый Цвет(222,222,222);

// Установка макета построителя отчета

4. Настройка отбора, который связан с полями ввода формы: номенклатура и период

Программная доработка макета построителя отчета

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

Свойство построителя отчета "Макет"

Объект ПостроительОтчета имеет свойство Макет. Это свойство содержит макет - табличный документ, который будет использован для вывода отчета. В случае, когда данное свойство не установлено, построитель отчета генерирует макет автоматически при каждом доступе к значению данного свойства и использует сгенерированный макет для вывода отчета. Если программно изменить значение данного свойства, то построитель отчета перестает генерировать макет, а для вывода отчета будет использовать установленный макет. Для того чтобы построитель отчета продолжил автоматическую генерацию макета, необходимо "сбросить" свойство Макет, присвоив ему значение Неопределено.

Пример установки макета:

Пример сброса макета и получения автоматически сгенерированного макета:

Изменение сгенерированного макета

При необходимости доработки автоматически сгенерированного макета достаточно получить автоматически сгенерированный макет, произвести в нем необходимые изменения и установить его в качестве макета.

В данном примере были изменены цвет фона и цвет текста во всем макете.

Изменение оформительских свойств для определенных полей

Если необходимо доработать формат некоторого поля, выводимого в отчет, необходимо найти ячейку, в которой располагается данное поле, и изменить значение формата в данной ячейке.

В приведенном примере в макете ищется поле Количество и устанавливается формат поля - два знака после запятой.

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

Изменение полей для определенных группировок

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

Работа с макетом оформления

При необходимости использования макета оформления для доработанных макетов следует установить построителю отчета макет оформления после доработки маета и вызвать метод построителя ОформитьМакет(). В приведенном ранее примере следует перед указанным кодом сбросить макет оформления построителя отчета, присвоив ему значение Неопределено, а после доработки макета установить требуемый макет оформления и вызвать метод ОформитьМакет().

7. Оформление отчета
Свойство “Макет” содержит макет, который используется при выводе результата в табличный документ. Если Неопределенно, то макет генерируется автоматически.

Свойства “МакетЗаголовкаОтчета”, “МакетШапкиТаблицы”, “МакетДетальныхЗаписей”, “МакетОбщихИтогов”, “МакетПодвалаТаблицы” и “МакетПодвалаОтчета” содержат имя области в макете построителя отчета или отдельные макеты, используемые при выводе, соответственно, заголовка отчета, шапки таблицы, детальных записей, общих итогов, подвала таблицы и подвала отчета в табличный документ. Если имена областей соответствуют именам в макете построителя отчета, то свойства заполнять не требуется.

Свойство “МакетОформления” содержит макет, используемый для оформления макета построителя отчета. Оформление ячеек в макете оформления будет применено к ячейкам макета построителя отчета.

Для получения одного из стандартного вариантов оформления можно использовать метод глобального контекста “ПолучитьМакетОформления()”.

В случае, если свойству “Макет” построителя отчета был присвоен фиксированный макет, для его оформления требуется выполнить метод “ОформитьМакет()”.

Попробуйте местами поменять

Попробуйте это сделать через конструктор выходной формы с фиксированным макетом, потом этот макет замените на свой, а имена областей оставите старые.
Сделала,все выводится,но в сгенерированный макет,в мой не хочет

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

Нужно прописать еще что выделено жирным

(7) Сделала вот так,но данные не выводятся. Зато макет видит. Он вместо данных копирует поле контрагент,заказ покупателя
ПостроительОтчетаОтчет = Новый ПостроительОтчета;

ПостроительОтчетаОтчет.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ЗаказПокупателя.Ссылка КАК ЗаказПокупателя,
| ЗаказПокупателя.Контрагент КАК Контрагент
| | ЗаказПокупателя.*,
| Контрагент.*>
|ИЗ
| Документ.ЗаказПокупателя КАК ЗаказПокупателя
|ГДЕ
| ЗаказПокупателя.Проведен = ИСТИНА";

табДок=ЭлементыФормы.ПолеТабличногоДокумента1;
табДок.Очистить();
табДок.ТолькоПросмотр=Истина;
ПостроительОтчетаОтчет.Выполнить();

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

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

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

В качестве источника данных для вывода отчета могут быть использованы:

  • ТаблицаЗначений,
  • РезультатЗапроса,
  • ОбластьЯчеекТабличногоДокумента,
  • Табличная часть,
  • РегистрНакопленияНаборЗаписей ,
  • РегистрСведенийНаборЗаписей,
  • РегистрБухгалтерииНаборЗаписей,
  • РегистрРасчетаНаборЗаписей.

Для того чтобы построитель отчета выводил отчет для произвольного источника данных, достаточно установить описание источника данных в свойство построителя ИсточникДанных . Свойство построителя отчета ИсточникДанных может содержать значение типа ОписаниеИсточникаДанных . Объект ОписаниеИсточникаДанных содержит сам источник данных, а также содержит описание колонок источника данных. Каждое описание колонки источника данных содержит:

  • Имя - содержит имя колонки в источнике данных,
  • ПутьКДанным - содержит описание зависимости колонок друг от друга. Колонка, чей путь к данным получен через точку от пути к данным другого поля, считается реквизитом другой колонки. Если поле содержит через точку слово Представление, то данное поле считается представлением для колонки, от пути к данным которого получается представление. Примеры. Если колонка "Номенклатура" имеет путь к данным "Номенклатура", а колонка "Код" имеет путь к данным "Номенклатура.Код", то данная колонка будет считаться реквизитом колонки "Номенклатура". Колонка с путем к данным "Номенклатура.Представление" будет считаться представлением для колонки "Номенклатура",
  • Поле - признак того, что данная колонка может быть использована в качестве поля отчета,
  • Порядок - признак того, что по данной колонке возможно упорядочивание,
  • Отбор - признак того, что на данную колонку возможно накладывать отбор,
  • Измерение - признак того, что данная колонка может быть использовано как группировка отчета,
  • Итог - строка, содержащая выражение для расчета итога. Для построителя отчета выражение данной строки соответствует выражению для вычисления итога, используемому в языке запросов,

При установке источника данных объекту ОписаниеИсточникаДанных , описания колонок создаются и заполняются автоматически.

Объект ОписаниеИсточникаДанных имеет конструктор, в качестве параметра которого может быть передан источник данных, для которого создается описание, при этом свойство ИсточникДанных будет заполнено переданным источником данных, описания колонок будут заполнены информацией о колонках из источника данных.

Пример установки источника данных построителю отчета:

ПостроительОтчета.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТаблицаЗначенийРезультат);

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

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

Пример использования построителя отчета с произвольным источником данных можно найти в универсальной обработке "Консоль анализа журнала регистрации".

Читайте также: