<?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/vyborka-iz-rezultata-zaprosa/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/vyborka-iz-rezultata-zaprosa/</link>
		<comments>http://1c-book.ru/vyborka-iz-rezultata-zaprosa/#comments</comments>
		<pubDate>Mon, 05 Oct 2009 19:13:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Выборка из результата запроса]]></category>

		<guid isPermaLink="false">http://1c-book.ru/?p=234</guid>
		<description><![CDATA[Выборка из результата запроса предназначена для обхода его записей. Можно представить себе выборку как некоторый объект, который содержит указатель на текущую запись в результате запроса и предоставляет программе доступ ко всем полям текущей записи. Обход выборки может быть линейный, иерархический или по группировкам. Возьмем результат простого запроса и продемонстрируем на его примере все варианты обхода [...]]]></description>
			<content:encoded><![CDATA[<p align="left"><strong>Выборка из результата запроса</strong> предназначена для обхода его записей. Можно представить себе выборку как некоторый объект, который содержит указатель на текущую запись в результате запроса и предоставляет программе доступ ко всем полям текущей записи. Обход выборки может быть линейный, иерархический или по группировкам. Возьмем результат простого запроса и продемонстрируем на его примере все варианты обхода выборки:</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></div>
<p>Результат запроса показан в следующей таблице:  <img src="http://s47.radikal.ru/i116/0910/e4/a709f477dd91.gif" border="0" alt="" width="342" height="242" /> <img src="http://s44.radikal.ru/i105/0910/8e/c54091136819.gif" border="0" alt="" width="342" height="384" /> В этой таблице добавлен столбец №1, которого нет в результате запроса, но который будет использоваться нами в дальнейшем   для идентификации записи в результате. Итоговые   записи в таблице выделены курсивом, а итоговые записи   для уровней иерархии справочника выделены жирным   шрифтом. <em></p>
<h3>Линейный обход</h3>
<p></em> Первый и самый простой способ обхода — линейный. При линейном   обходе выборка будет выдавать записи в той последовательности, в которой они   располагаются в результате запроса. В нашем примере   это будут записи с номерами 1, 2, 3, 4, 5 и так далее до записи с номером 20.  Для получения линейной выборки необходимо вызвать метод Выбрать объекта РезультатЗапроса без параметров, либо с   параметром <em>ОбходРезультатаЗапроса</em>. Прямой.</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>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">Выборка = РезультатЗапроса.Выбрать();</span></pre>
</div>
<div>
<pre></pre>
</div>
<p>Для навигации по записям запроса используются три метода:</p>
<p><em>Следующий</em></p>
<p>Позволяет перейти к следующей записи результата в соответствии с порядком обхода выборки. При первом вызове этот метод позиционирует выборку на первую запись. Когда будут выбраны все записи, данный метод просигнализирует об этом, вернув значение Ложь.</p>
<p><em>СледующийПоЗначениюПоля</em></p>
<p>Позволяет получить следующую запись со   значением в заданном поле, отличающимся от значения в этом же поле текущей записи.</p>
<p><em>НайтиСледующий</em></p>
<p>Позволяет найти запись с заданными значениями   некоторых полей.</p>
<p>Ниже приведен простейший пример обхода выборки с помощью метода <em>Следующий</em>:</p>
<p><span style="color: #008000;"> </span></p>
<div><span style="color: #008000;"> </span></p>
<pre><span style="color: #008000;">Выборка = РезультатЗапроса.Выбрать();</span></pre>
</div>
<div><span style="color: #008000;"> </span></p>
<pre><span style="color: #008000;">Пока Выборка.Следующий() Цикл</span></pre>
</div>
<div><span style="color: #008000;"> </span></p>
<pre><span style="color: #008000;"><span style="color: #008000;">	//действия с записью</span></span></pre>
</div>
<div><span style="color: #008000;"><span style="color: #008000;"> </span></span></p>
<pre><span style="color: #008000;"><span style="color: #008000;">КонецЦикла;</span></span></pre>
</div>
<div><span style="color: #008000;"><span style="color: #008000;"> </span></span></p>
<pre><span style="color: #008000;"><span style="color: #008000;"> </span></span></pre>
</div>
<p align="left">Для получения данных текущей записи нужно обращаться к   реквизитам объекта Выборка, имена которых совпадают с именами колонок   результата запроса:</p>
<p align="left"><span style="color: #008000;"><span style="color: #008000;"> </span></span></p>
<div><span style="color: #008000;"><span style="color: #008000;"> </span></span><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">Запрос = Новый Запрос("</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">	| ВЫБРАТЬ Код, Наименование КАК ФИО</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">	| ИЗ Справочник.Сотрудники");</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">Выборка = Запрос.Выполнить{).Выбрать();</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">Пока Выборка.Следующий() Цикл</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">	Сообщить("Код: " + Выборка.Код);</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">	Сообщить("ФИО: " + Выборка.ФИО);</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">КонецЦикла;</span></pre>
</div>
<p align="left">
<p align="left">Метод <em>СледующийПоЗначениюПоля </em>позволяет сгруппироватьзаписи   результата по значениям полей, например:</p>
<p align="left"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"> </span></span></span></span></span></span></span></p>
<div><span style="color: #008000;"><span style="color: #008000;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"> </span></span></span></span></span></span></span></p>
<pre><span style="color: #008000;">ВЫБРАТЬ Док.Товар. Док.Получатель, Док.Количество</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">ИЗ Документ.РасходнаяНакладная.Состав Док</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">УПОРЯДОЧИТЬ ПО Док.Товар.Наименование, Док.Получатель.Наименование</span></pre>
</div>
<div>
<pre><span style="color: #008000;"><span style="color: #008000;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"> </span></span></span></span></span></span></span></pre>
</div>
<p align="left">Допустим, в результате запроса мы получили следующие записи:</p>
<p align="left"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><img src="http://i033.radikal.ru/0910/81/e73234ea06b9.gif" border="0" alt="" width="472" height="365" /> </span></span></span></span></span></span></span></p>
<p align="left"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;"> </span></span></span></span></span></span></span></p>
<p align="left">Организуем линейную выборку из результата запроса и обойдем ее при помощи метода <em>СледующийПоЗначениюПоля</em>:</p>
<p align="left">
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">Выборка = РезультатЗапроса.Выбрать();</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">Пока Выборка.СледующийПоЗначениюПоля("Товар") Цикл</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">	// здесь мы получим записи с номерами 1, 4, 8, 11</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">	Пока Выборка.СледующийПоЗначениюПоля("Получатель") Цикл</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">		// здесь мы сначала получим записи с номерами 1, 2, 3</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">		// затем 4, 6, 6</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">		// затем 8, 9, 10</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">		// затем 11, 12, 13, 14</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">	КонецЦикла;</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">КоиецЦикла;</span></pre>
</div>
<p align="left">
<p align="left">Следует обратить внимание на то, что во внутреннем цикле не была выбрана запись с номером 7, так как в ней такое же   значение поля Получатель, как и в предыдущей записи.</p>
<p align="left">Заметим, что если во вложенном цикле получать записи с помощью   метода Следующий, то будут выбраны все записи со значением поля, заданным в   последнем вызове метода <em>СледующийПоЗначениюПоля</em>:</p>
<p align="left">
<div>
<pre><span style="color: #008000;">Выборка = РезультатЗапроса.Выбрать() ;</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">Пока Выборка.СледующийПоЗначениюПоля("Товар") Цикл</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">	// здесь мы получим записи с номерами 1, 4, 8, 11</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">	Пока Выборка.Следующий() Цикп</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">		// здесь мы сначала получим записи с номерами 1, 2, 3</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">		// затем 4, 5, 6, 7</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">		// затем 8, 9, 10</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">		// затем 11, 12, 13, 14</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">	КонецЦикла;</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">КонецЦикла;</span></pre>
</div>
<div>
<pre><span style="color: #008000;"><span style="color: #008000;"><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: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><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></pre>
</div>
<p align="left">Метод <em>НайтиСледующий </em>позволяет позиционироваться на запись с   нужными значениями полей, при этом текущая запись не   рассматривается. В качестве условия поиска можно указать  структуру или значение с именем колонки. Если запись найдена, то возвращается Истина, если таких записей больше не   найдено, возвращается Ложь.</p>
<p align="left">Метод <em>НайтиСледующий </em>имеет два вариант вызова:</p>
<div><span style="color: #008000;"><span style="color: #008000;"><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: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><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></p>
<pre><span style="color: #008000;"><span style="color: #008000;"><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: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><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></pre>
</div>
<div><span style="color: #008000;"><span style="color: #008000;"><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: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><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></p>
<pre><span style="color: #008000;"><span style="color: #008000;"><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: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;">НайтиСледующий(&lt;Структура поиска&gt;)</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<div><span style="color: #008000;"><span style="color: #008000;"><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: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><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></p>
<pre><span style="color: #008000;"><span style="color: #008000;"><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: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;">НайтиСледующий(&lt;Значение&gt;,&lt;Имя колонки&gt;)</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<p align="left"><span style="color: #008000;"><span style="color: #008000;"><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: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><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></p>
<p align="left">Этот метод используется в следующем примере:</p>
<p align="left"><span style="color: #008000;"><span style="color: #008000;"><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: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><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></p>
<div><span style="color: #008000;"><span style="color: #008000;"><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: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><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></p>
<pre><span style="color: #008000;">Запрос = Новый Запрос("</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">	|Выбрать Наименование,</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">	| ГОД(ДатаПриема) КАК Год,</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">	| МЕСЯЦ(ДатаПриема) КАК Месяц</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">	| Из Справочник.Сотрудники");</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">Выборка = Запрос.Выполнить().Выбрать();</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">	//1-й вариант применения: поиск по структуре</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">	//выберем всех сотрудников, принятых в июне 2003 года</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">СтруктураПоиска = Новый Структура("Год,Месяц",2003,5);</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">Пока Выборка.НайтиСледующий(СтруктураПоиска) Цикл</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">	Сообщить("Сотрудник" + Выборка.Наименование);</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">КонецЦикла;</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">	//2-й вариант: поиск значения по заданной колонке</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">	//выберем всех сотрудников, принятых в 2003 году</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">Пока Выборка.НайтиСледующий(2003, "Год") Цикл</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">	Сообщить("Сотрудник" + Выборка.Наименование);</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">КонецЦикла;</span></pre>
</div>
<div>
<pre></pre>
</div>
<p><span style="color: #008000;"><span style="color: #008000;"><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: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><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 style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #0000ff;"><em> </em></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<h3><em>Иерархический обход</em></h3>
<p><em> </em></p>
<p>Рассмотрим другой способ обхода результата запроса —   иерархический. При данном варианте обходятся только записи, находящиеся на   одном уровне. Для получения иерархической выборки из   результата необходимо вызвать метод <em>Выбрать </em>объекта <em>РезультатЗапроса </em>с   параметром <em>ОбходРезультатаЗапроса</em>.<em>ПоГруппировкамСИерархией</em>:</p>
<p><span style="color: #008000;"><span style="color: #008000;"><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: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><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 style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #0000ff;"> </span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<div><span style="color: #008000;"><span style="color: #008000;"><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: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><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 style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #0000ff;"> </span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<pre><span style="color: #008000;">СпособВыборки = ОбходРезультатаЗапроса.ПоГруппировкамСИерархией;</span></pre>
</div>
<div><span style="color: #008000;"><span style="color: #008000;"><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: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><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 style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #0000ff;"> </span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">Выборка = РезультатЗапроса.Выбрать(СпособВыборки);</span></pre>
</div>
<p align="left">
<p align="left">Выборка из результата запроса с иерархическим обходом в нашем примере обойдет только записи с номерами 1 и 11, так как   только эти две записи находятся на самом верхнем   уровне.</p>
<p align="left">Проиллюстрируем это, представив наш результат в виде дерева, где узлами будут итоговые записи, а листьями дерева будут   детальные записи. Вот что у нас получится:</p>
<p align="left"><span style="color: #008000;"><span style="color: #008000;"><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: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><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 style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #0000ff;"><img src="http://s56.radikal.ru/i151/0910/4c/8e8422aa4aed.gif" border="0" alt="" width="413" height="431" /> </span></span></span></span></span></span></span></span></span></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"><span style="color: #008000;"><span style="color: #008000;"><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: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><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 style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #0000ff;"> </span></span></span></span></span></span></span></span></span></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">Из этого рисунка видно, что именно записи с номерами 1 и 11 находятся на первом уровне дерева, и поэтому только они   попадают в первый проход иерархической выборки.</p>
<p align="left">Возникает вопрос, как получить остальные записи результата запроса. Для этого у объекта ВыборкаИзРезультатаЗапроса можно получить еще одну выборку, которая будет обходить подчиненные записи текущей записи выборки. В нашем примере в момент, когда объект Выборка будет позиционирован на запись с номером 1, мы запросим у него иерархическую выборку. Таким образом, мы получим выборку, которая вернет записи с номерами 2, 7. А когда Выборка будет спозиционирована на запись с номером 11, то полученная у нее иерархическая выборка вернет записи с номерами 12, 16. Так реализуется иерархический обход результатов запроса.</p>
<p align="left">Заметим, что у выборки можно получать вложенные выборки любого   типа. Так, если бы мы запросили у Выборки, спозиционированной на записи 1,   линейную выборку, то с ее помощью мы бы получили   записи с номерами со 2-го по 10-й.</p>
<p align="left">Проиллюстрируем описанную методику на примере:</p>
<p align="left">
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">Процедура ВыдатьРекурсивно(Выборка) Далее;</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;"> </span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">Процедура ВыполнитьЗапрос()</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">	Запрос = Новый Запрос("</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">	ВЫБРАТЬ Товар, Количество</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">	ИЗ Документ.РасходнаяНакладная.Состав</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">	УПОРЯДОЧИТЬ ПО Товар</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">	|ИТОГИ СУММА(Количество) ПО Товар, Товар ИЕРАРХИЯ");</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">	СпособВыборки = ОбходРезультатаЗапроса.ПоГруппировкамСИерархией;</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">	Выборка = Запрос.Выполнить().Выбрать(СпособВыборки);</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">	ВыдатьРекурсивно (Выборка) ;</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">КонецПроцедуры</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">Процедура ВыдатьРекурсивно(Выборка)</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">	Пока Выборка.Следующий() Цикл</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">		//выведем в окно сообщений поля из результата</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">		Товар = Выборка.Наименование;</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">		Количество = Выборка.Количество;</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">		Сообщить("Товар: " + СокрЛП(Товар) +</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">		"Количество: " + СокрЛП(Количество));</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">		//продолжим выборку подчиненных записей</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">		СпособВыборки = ОбходРезультатаЗапроса.ПоГруппировкамСИерархией;</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">		ВыдатьРекурсивно(Выборка.Выбрать(СпособВыборки));</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">	КонецЦикла;</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">КонецПроцедуры</span></pre>
</div>
<p align="left"><span style="color: #008000;"> </span></p>
<div>
<h3><strong><em>Обход по группировкам</em></strong></h3>
</div>
<p><em> </em></p>
<p align="left">Третий, и последний способ обхода результата — по группировкам.   Он сходен с иерархическим обходом, но с одним различием: записи с   иерархическими итогами при обходе в нем рассматриваются как детальные записи, а   не как узловые. Для получения выборки по группировкам из результата запроса   необходимо вызвать метод <em>Выбрать </em>объекта <em>РезультатЗапроса </em>с параметром   <em>ОбходРезультатаЗапроса</em>.<em>ПоГруппировкам</em>:</p>
<p align="left"><span style="color: #008000;"><span style="color: #008000;"><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: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><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 style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"><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: #0000ff;"><span style="color: #0000ff;"><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></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<div><span style="color: #008000;"><span style="color: #008000;"><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: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><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 style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"><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: #0000ff;"><span style="color: #0000ff;"><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></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">СпособВыборки = ОбходРезультатаЗапроса.ПоГруппировкам;</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">Выборка = РезультатЗапроса.Выбрать(СпособВыборки);</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;"> </span></pre>
</div>
<p align="left">Перебрав такую выборку для нашего примера, мы получим записи с   номерами 1, 2, 7, 11, 12, 16, например:</p>
<p align="left">
<div>
<pre><span style="color: #008000;">Запрос = Новый Запрос("</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">	| ВЫБРАТЬ Товар, Количество</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">	| ИЗ Документ.РасходнаяНакладная.Состав</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">	| УПОРЯДОЧИТЬ ПО Товар</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">	| ИТОГИ СУММА(Количество) ПО Товар, Товар ИЕРАРХИЯ");</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">РезультатЗапроса = Запрос .Выполнить();</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">СпособВыборки = ОбходРезультатаЗапроса.ПоГруппировкам;</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">Выборка = Результатаапроса.Выбрать(СпособВыборки);</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">Пока Выборка.Следующий() Цикл</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">	//выведем в окно сообщений поля из результата</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">	Сообщить("Группа товаров: " + СокрЛП(Выборка.Наименование) +</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">	"Количество: " + СокрЛП(Выборка.Количество));</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">	//выберем дочерние записи линейным способом</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">	ВыборкаДочерних = Выборка.Выбрать();</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">	Пока ВыборкаДочерних.Следующий() Цикл</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">		Сообщить(" Товар: " + СокрЛП(Выборка.Наименование) +</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">		" Количество: " + СокрЛП(Выборка.Количество));</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">	КонецЦикла;</span></pre>
</div>
<div>
<p><span style="color: #008000;"><br />
</span></p>
<pre><span style="color: #008000;">КонецЦикла;</span></pre>
</div>
<div>
<pre></pre>
</div>
<p><span style="color: #008000;"><span style="color: #008000;"><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: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"><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 style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #008000;"><span style="color: #008000;"><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: #0000ff;"><span style="color: #0000ff;"><span style="color: #008000;"><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: #0000ff;"><span style="color: #0000ff;"><span style="color: #008000;"><span style="color: #0000ff;"><span style="color: #0000ff;"><em> </em></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<h3><em>Другие полезные методы</em></h3>
<p align="left">При работе с выборкой из результата запроса будут полезны следующие   методы:</p>
<p align="left"><strong><em>Группировка</em></strong></p>
<p align="left">Возвращает в виде   строки имя группировки текущей записи. Если группировки нет, возвращается   пустая строка.</p>
<p align="left"><em><strong>Количество</strong></em></p>
<p align="left">Возвращает   количество записей в выборке.</p>
<p align="left"><em><strong>Сбросить</strong></em></p>
<p align="left">Отменяет   позиционирование. После вызова метода Следующий   выборка позиционируется на первую запись.</p>
<p align="left"><em><strong>Уровень</strong></em></p>
<p align="left">Возвращает уровень   текущей записи в иерархии и группировках. Уровень считается от начальной   выборки из результата запроса.</p>
<p align="left"><em><strong>ТипЗаписи</strong></em></p>
<p>Этот метод   возвращает тип текущей записи запроса, который является одним из значений   системного перечисления ТипЗаписиЗапроса:   ДетальнаяЗапись, ИтогПоГруппировке, ИтогПоИерархии, ОбщийИтог.</p>
]]></content:encoded>
			<wfw:commentRss>http://1c-book.ru/vyborka-iz-rezultata-zaprosa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
