<P>Один из наиболее часто встречающихся видов запросов <CODE>1С</CODE> это
запрос балансового типа, в котором в разрезе необходимых нам измерений за
выбранный период получаются начальные остатки, приход, расход и конечные
остатки. Часто возникает необходимость ускорить данный запрос с помощью перевода
его в прямой запрос к <CODE>SQL</CODE>-серверу. Но при рассмотрении выясняется,
что, фактически мы имеем дело не с одним запросом, а с четырьмя, результаты
которых должны быть объединены в один. Можно по-разному подходить к этой задаче
– сводить данные в таблице значений, использовать временные таблицы
<CODE>SQL</CODE>-сервера и т.д.</P>
<P>Здесь я опишу наиболее легкий вариант построения такого запроса, который не
требует ни временных таблиц, ни сведения в один на «клиенте», ни каких бы то ни
было дополнительных действий с базой данных. Все очень просто.</P>
<P>Итак. Представим такой простой запрос <CODE>1С</CODE>:<BR>
<font color="#0000FF"><CODE
class=blue>Запрос</CODE></font><CODE
class=red>=<font color="#FF0000">СоздатьОбъект</font>(<CODE>"Запрос"</CODE><font color="#FF0000">);<BR>
<CODE
class=blue>ТекстЗапроса</CODE>=<CODE>"//{{ЗАПРОС(ОдинС)</CODE></font><BR><CODE>|Период
с НачДата по КонДата;</CODE><BR><CODE>|Товар =
Регистр.Партии.Товар;</CODE><BR><CODE>|Количество =
Регистр.Партии.Количество;</CODE><BR><CODE>|Функция Нач =
НачОст(Количество);</CODE><BR><CODE>|Функция Прих =
Приход(Количество);</CODE><BR><CODE>|Функция Расх =
Расход(Количество);</CODE><BR><CODE>|Функция Кон =
КонОст(Количество);</CODE><BR><CODE>|Группировка Товар без
групп;</CODE><BR><CODE><font color="#00CC00">|"</font></CODE><font color="#00CC00"><CODE
class=green>//}}ЗАПРОС</CODE></font><BR>;</CODE></P>
<P>Как мы видим, имеет место обращение к регистру «Партии» с учетом выбранного в
диалоге периода, одна группировка по измерению «<CODE>Товар</CODE>»,
<CODE>4</CODE> численных колонки (начальный остаток, приход, расход, конечный
остаток). Никаких условий для простоты демонстрации. Как видно, в запросе будут
участвовать три таблицы: таблицы остатков и движений регистра
«<CODE>Партии</CODE>» и таблица «<CODE>журнал документов</CODE>». В тестовом
запросе будет анализироваться период с <CODE>05.02.2002</CODE> года, по
<CODE>20.01.2004</CODE> для усложнения задачи.</P>
<P>Казалось бы ничего сложного – мы строим 4 запроса в каждом из которых имеется
столбец товара и числовой столбец с соответствующим результатом суммирования
(начальный остаток, приход, расход или конечный остаток) и соединяем их в одну
таблицу с помощью «<CODE>UNION ALL</CODE>». Но тут нас поджидает ловушка – в
результирующей таблице будет всего <CODE>2</CODE> столбца: столбец товара и
столбец данных, и это все несмотря на то, что мы по-разному называли наши
столбцы данных в каждом из запросов.

Читать всю статью: http://www.klerk.ru/soft/1c?8016