<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>1C-Book &#187; Построитель отчета</title>
	<atom:link href="http://1c-book.ru/category/razrabotka-v-sisteme-1spredpriyatie-8-0-s-a-mitichkin-ooo-1s-pablishing-2003g/postroitel-otcheta/feed/" rel="self" type="application/rss+xml" />
	<link>http://1c-book.ru</link>
	<description>1С Предприятие 8.0. Справочно-Информационная Система</description>
	<lastBuildDate>Wed, 04 Nov 2009 12:01:48 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Построитель отчета</title>
		<link>http://1c-book.ru/postroitel-otcheta/</link>
		<comments>http://1c-book.ru/postroitel-otcheta/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 13:23:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Построитель отчета]]></category>

		<guid isPermaLink="false">http://1c-book.ru/?p=251</guid>
		<description><![CDATA[В 1С:Предпритии 8.0 появился новый объект ПостроительОтчета,   предназначенный для быстрой разработки сложных, настраиваемых пользователем   отчетов.
Построитель отчета использует запрос как основу для формирования   отчета. Фактически, запрос — это единственное, что требуется запрограммировать,   остальное сделает построитель отчета.
Конечно, разработчик имеет средства влиять на этот процесс,   например, задать макет [...]]]></description>
			<content:encoded><![CDATA[<p align="left">В 1С:Предпритии 8.0 появился новый объект <strong>ПостроительОтчета</strong>,   предназначенный для быстрой разработки сложных, настраиваемых пользователем   отчетов.</p>
<p align="left"><strong>Построитель отчета </strong>использует запрос как основу для формирования   отчета. Фактически, запрос — это единственное, что требуется запрограммировать,   остальное сделает <strong>построитель отчета</strong>.</p>
<p align="left">Конечно, разработчик имеет средства влиять на этот процесс,   например, задать макет для формирования отчета. <em></p>
<h3>Общая схема</h3>
<p></em></p>
<p align="left">Следующая схема показывает входные и выходные данные для   построителя отчета:</p>
<p align="left">Цифрами на схеме обозначены следующие действия:</p>
<p align="left">1. На вход <strong>построителя </strong>отчета подается исходный текст запроса на   расширенном языке запросов. Из этого текста могут быть автоматически   сформированы доступные отборы, измерения, условия упорядочивания и доступные   поля.</p>
<p align="left">2. Пользователь с помощью табличных полей, расположенных в   форме, может настроить текущие условия отбора и сортировки, измерения отчета и   выводимые поля.</p>
<p align="left">3. Для хорошего визуального представления отчета на вход   подается макет или несколько макетов для каждой области отчета.</p>
<p align="left">4. Используя исходный текст запроса, настройки пользователя и   макеты, построитель отчета формирует табличный документ, диаграмму или сводную   таблицу.</p>
<p align="left">5. Расшифровки отчета передаются в построитель отчета, он   корректирует свой запрос и формирует новый отчет.</p>
<p align="left">6. Результат запроса может быть получен в отдельную переменную.</p>
<p align="left">7. Запрос также может быть получен в переменную.</p>
<p align="left">8. Настройки построителя могут быть сохранены в специальном   объекте и затем восстановлены. У объекта НастройкиПостроителяОтчета нет свойств   и методов, он нужен только для хранения настроек построителя. <em></p>
<h3>Простой пример</h3>
<p></em></p>
<p align="left">Приведем пример использования <strong>построителя отчета </strong>для   конструирования отчета по регистру оборотов Продажи, имеющего два измерения   (Контрагент и Номенклатура) и один ресурс (Сумма).</p>
<p align="left">1. Создайте новый отчет (или внешнюю обработку).</p>
<p align="left">2. Создайте у него реквизит Построитель и укажите тип   ПостроительОтчета.</p>
<p align="left">3. В модуле объекта (не в модуле формы) напишите следующий текст   запроса:</p>
<p align="left">
<div>
<pre><span style="color: #008000;">Построитель.Текст = "</span></pre>
</div>
<div>
<pre><span style="color: #008000;">| ВЫБРАТЬ</span></pre>
</div>
<div>
<pre><span style="color: #008000;">| ПродажиОбороты.Контрагент КАК Контрагент,</span></pre>
</div>
<div>
<pre><span style="color: #008000;">| ПродажиОбороты.СуммаОборот КАК СуммаОборот,</span></pre>
</div>
<div>
<pre><span style="color: #008000;">| ПродажиОбороты.Товар КАК Товар</span></pre>
</div>
<div>
<pre><span style="color: #008000;">|ИЗ</span></pre>
</div>
<div>
<pre><span style="color: #008000;">| РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты</span></pre>
</div>
<div>
<pre><span style="color: #008000;">| (ИТОГИ СУММА(СуммаОборот) ПО</span></pre>
</div>
<div>
<pre><span style="color: #008000;">| Контрагент,</span></pre>
</div>
<div>
<pre><span style="color: #008000;">| Товар</span></pre>
</div>
<div>
<pre><span style="color: #008000;">| АВТОУПОРЯДОЧИВАНИЕ";</span></pre>
</div>
<div>
<pre><span style="color: #008000;">//сформировать автоматически настройки построителя,</span></pre>
</div>
<div>
<pre><span style="color: #008000;">//исходя из текста запроса</span></pre>
</div>
<div>
<pre><span style="color: #008000;">Построитель.ЗаполнитьНастройки();</span></pre>
</div>
<div><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"> </span></span></span></span></span></span></span></span></span></span></span></span></p>
<pre><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"> </span></span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<p align="left">4. Создайте форму отчета (обработки).</p>
<p align="left">5. Для кнопки Выполнить создайте процедуру-обработчик события   Нажатие. В этой процедуре напишите следующий текст:</p>
<p align="left"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"> </span></span></span></span></span></span></span></span></span></span></span></span></p>
<div><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"> </span></span></span></span></span></span></span></span></span></span></span></span></p>
<pre><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #008000;"><span style="color: #008000;">Построитель.Выполнить();</span></span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<div><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"> </span></span></span></span></span></span></span></span></span></span></span></span></p>
<pre><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #008000;"><span style="color: #008000;">Построитель.Вывести();</span></span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<p align="left"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"> </span></span></span></span></span></span></span></span></span></span></span></span></p>
<p align="left">В результате будет сформирован следующий отчет с группировками.</p>
<p align="left">Это простейший пример использования <strong>построителя отчетов</strong>, который, тем не менее, демонстрирует, с какой легкостью   можно сформировать отчет с двумя измерениями. Теперь предоставим пользователю возможность настройки   отчета. Можно не бояться сложности задачи, это   делается несколькими щелчками мыши! В форме   необходимо разместить табличные поля и указать им свойство Данные в одно из   следующих значений.</p>
<ul><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"></p>
<li>
<p align="left">Построитель.Порядок — условия сортировки данных;</p>
</li>
<li>
<p align="left">Построитель.Отбор — условия отбора (фильтры);</p>
</li>
<li>
<p align="left">Построитель.ИзмеренияСтроки — измерения отчета по строкам,     например, Номенклатура;</p>
</li>
<li>
<p align="left">Построитель ИзмеренияКолонки — измерения отчета по колонкам,     например, Контрагент.Вид;</p>
</li>
<li>
<p align="left">Построитель.ДоступныеПоля — все поля, доступные для выбора;</p>
</li>
<li>
<p align="left">Построитель.ВыбранныеПоля — выбранные поля для вывода в отчет.</p>
</li>
<p></span></span></span></span></span></span></span></span></span></span></span></span></ul>
<p align="left">Ниже приведена простая форма, позволяющая управлять настройками   построителя отчета:</p>
<p align="left">
<p align="left">Пользователь может сконструировать требуемый ему отчет, указав   все необходимые настройки построителя отчета. Остальное  сделает система, от разработчика фактически больше ничего не требуется.</p>
<p align="left">Например, сделаем поле Контрагент измерением колонки, а не строки, тогда будет сформирован следующий <strong>кросс-отчет</strong>:<span style="color: #000000;"><strong><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"> </span></span></span></span></span></span></span></span></span></span></span></strong></span></p>
<p><span style="color: #000000;"><em><span><span><span><span><span><span><span><span><span><span><span><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"></p>
<h3>Настройки построителя</h3>
<p></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></em></span></p>
<p><span style="color: #000000;"><span><span><span><span><span><span><span><span><span><span><span><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"> </span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p align="left">Разработчик может управлять <strong>построителем </strong>отчетов средствами встроенного языка. Например, он может установить отбор или сортировку, задать параметры формирования запроса, отключить вывод шапки, подвала, детальных записей, задать общий макет для <strong>построителя </strong>отчета, а также макет для каждой области.</p>
<p align="left">В самом тексте запроса можно явно указать настройки построителя   (см. ниже «расширение языка запросов»), но обычно они   формируются автоматически после указания текста запроса  (свойство Текст), для чего необходимо вызвать метод  ЗаполнитьНастройки.</p>
<p align="left">Из доступных настроек построителя пользователь интерактивно указывает только те, которые ему нужны. Но настройки   построителя также поддаются изменению средствами встроенного языка через соответствующие свойства:</p>
<ul>
<li>
<p align="left">Текст — исходный текст запроса,</p>
</li>
<li>
<p align="left">Параметры — коллекция параметров для запроса,</p>
</li>
<li>
<p align="left">Порядок — объект, содержащий условия сортировки,</p>
</li>
<li>
<p align="left">Отбор — объект, содержащий условия отбора,</p>
</li>
<li>
<p align="left">ИзмеренияСтроки — коллекция измерений по строкам,</p>
</li>
<li>
<p align="left">ИзмеренияКолонки — коллекция измерений по колонкам,</p>
</li>
<li>
<p align="left">ДоступныеПоля — коллекция всех доступных для выбора полей,</p>
</li>
<li>
<p align="left">ВыбранныеПоля — коллекция всех выбранных полей для вывода в отчет.</p>
</li>
</ul>
<p align="left">Два метода <em>ПолучитьНастройки </em>и <em>УстановитьНастройки </em>позволяют   запомнить или восстановить <strong>настройки построителя</strong>, используя специальный объект <em> НастройкиПостроителяОтчетов</em>.</p>
<p align="left">Этот объект не имеет ни свойств, ни методов, он предназначен только для хранения настроек построителя.</p>
<h3>Форматирование отчета</h3>
<p align="left">Построитель отчета умеет формировать табличный документ   автоматически, без использования макета. Но если требуется задать собственное форматирование, то для этого применяется   свойство Макет.</p>
<p align="left">Макет для построителя отчета может содержать следующие   области-строки:</p>
<ul>
<li>
<p align="left">ШапкаТаблицы,</p>
</li>
<li>
<p align="left">Заголовок,</p>
</li>
<li>
<p align="left">&lt;имя измерения&gt;,</p>
</li>
<li>
<p align="left">&lt;имя измерения&gt;Иерархия,</p>
</li>
<li>
<p align="left">Детали&lt;имя измерения&gt;,</p>
</li>
<li>
<p align="left">ОбщиеИтоги.</p>
</li>
</ul>
<p align="left">Ниже показан пример макета с такими областями:</p>
<p align="left">
<p align="left">Именованные области макета автоматически будут использованы для вывода соответствующих областей отчета. Можно задать   свой макет для каждой области, используя следующие   свойства:</p>
<ul>
<li>
<p align="left">МакетДетальныхЗаписей,</p>
</li>
<li>
<p align="left">МакетШапкиТаблицы,</p>
</li>
<li>
<p align="left">МакетЗаголовкаОтчета,</p>
</li>
<li>
<p align="left">МакетПодвалаТаблицы,</p>
</li>
<li>
<p align="left">МакетПодвалаОтчета.</p>
</li>
</ul>
<h3>Обработка результата</h3>
<p align="left">Настроив построитель отчета, можно вызвать его метод Выполнить, который выполняет запрос к базе данных. После   этого результат можно вывести в табличный документ, диаграмму или сводную таблицу. Для вывода   отчета в табличный документ или диаграмму применяется метод Вывести с тремя   вариантами синтаксиса:</p>
<p align="left"><span style="color: #008000;">Вывести() </span></p>
<p align="left">Создает и показывает на экране новый табличный документ.</p>
<p align="left"><span style="color: #008000;">Вывести(ТабДок) </span></p>
<p align="left">Выводит отчет в переданный табличный документ.</p>
<p align="left"><span style="color: #008000;">Вывести(Диаграмма, ИмяРесурса) </span></p>
<p align="left">Выводит результат в переданную диаграмму. Можно указать ресурс   для отображения на диаграмме. Если имя ресурса не указано, то выводится первый   ресурс.</p>
<p align="left">На основе результата, полученного построителем, можно   сформировать сводную таблицу, для чего необходимо установить у нее свойство ИсточникДанных:</p>
<p align="left">
<div>
<pre><span style="color: #008000;">СводТаб = ЭлементыФормы.ПолеТабДок.ВстроенныеТаблицы.СводнаяТаблица;</span></pre>
</div>
<div>
<pre><span style="color: #008000;">СводТаб.ИсточникДанных = Построитель;</span></pre>
</div>
<div>
<pre><span style="color: #008000;">СводТаб.ОтображатьПоля = Истина;</span></pre>
</div>
<div>
<pre></pre>
</div>
<p>Из <strong>построителя </strong>можно извлечь результат запроса и сам запрос, с помощью свойства <em>Результат </em>и метода <em>ПолучитьЗапрос</em>:</p>
<p>• Свойство Результат содержит объект типа <em>РезультатЗапроса</em>. Используя этот объект, можно открыть выборку из результата запроса и перебрать ее для своих целей, например, вывести новый отчет.</p>
<p>• Метод <em>ПолучитьЗапрос </em>возвращает объект типа <strong>Запрос</strong>. В его свойстве <em>Текст </em>содержится текст итогового выполненного   запроса, который в общем случае может не совпадать с исходным текстом запроса.</p>
<p><strong>Построитель отчета</strong> поддерживает расшифровку, когда пользователь   дважды щелкает на ячейке табличного документа, сводной  таблицы или на диаграмме и получает более детальный отчет.</p>
<p>Есть возможность сделать так, чтобы построитель отчета в этом случае автоматически корректировал свои настройки,   например, добавлял дополнительное условие отбора.</p>
<h3>Расширение языка запросов</h3>
<p>Обычно настройки построителя формируются автоматически исходя из   текста запроса с помощью метода ЗаполнитьНастройки,   но их можно указать явно прямо в тексте запроса. Язык запросов системы 1C:Предприятие 8.0 имеет   особые расширения синтаксиса, предназначенные специально для построителя   отчетов. Такие инструкции оформляются в фигурные   скобки {&#8230;} и игнорируются при обычном выполнении запроса.</p>
<p>В следующем примере инструкции для построителя отчетов выделены   жирным шрифтом:</p>
<div>
<pre><span style="color: #008000;">ВЫБРАТЬ</span></pre>
</div>
<div>
<pre><span style="color: #008000;">Номенклатура, Номенклатура.Представление,</span></pre>
</div>
<div>
<pre><span style="color: #008000;">Контрагент, Контрагент.Представление,</span></pre>
</div>
<div>
<pre><span style="color: #008000;">КоличествоОборот КАК Количество,</span></pre>
</div>
<div>
<pre><span style="color: #008000;">СуммаОборот КАК Сумма</span></pre>
</div>
<div>
<pre><span style="color: #008000;">{ВЫБРАТЬ Номенклатура.*, Контрагент.*,</span></pre>
</div>
<div>
<pre><span style="color: #008000;">КоличествоОборот КАК Количество,</span></pre>
</div>
<div>
<pre><span style="color: #008000;">СуммаОборот КАК Сумма}</span></pre>
</div>
<div>
<pre><span style="color: #008000;">ИЗ</span></pre>
</div>
<div>
<pre><span style="color: #008000;">РегистрНакопления.Продажи.Обороты(</span></pre>
</div>
<div>
<pre><span style="color: #008000;">{&amp;ПериодС},</span></pre>
</div>
<div>
<pre><span style="color: #008000;">{&amp;ПериодПо},,</span></pre>
</div>
<div>
<pre><span style="color: #008000;">{Номенклатура.*, Контрагент.*})</span></pre>
</div>
<div>
<pre><span style="color: #008000;">{ИТОГИ ПО</span></pre>
</div>
<div>
<pre><span style="color: #008000;">Номенклатура.*, Контрагент.*}</span></pre>
</div>
<div>
<pre><span style="color: #008000;">ИТОГИ Сумма(Количество), Сумма(Сумма) ПО ОБЩИЕ</span></pre>
</div>
<div>
<pre></pre>
</div>
<p align="left">Обратите внимание на параметры «{&amp;<em>ПериодС</em>}» и «{<em>ПериодПо</em>}». Эти   конструкции при обычном выполнении запроса игнорируются, а при установке   свойства Текст <strong>построителя </strong>они распознаются как поля для отбора, т.е.   пользователь сможет указать для них условия отбора.</p>
<p>Конструкция «{<em>ИТОГИ ПО</em> &#8230;}» распознается как ресурсы для построителя отчета. Указание точки со звездочкой («.*»)   говорит о том, что в построителе будет доступно не   только само поле, но и все его вложенные поля,   например, реквизиты справочника.</p>
]]></content:encoded>
			<wfw:commentRss>http://1c-book.ru/postroitel-otcheta/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
