Консультация № 142399
27.08.2008, 15:23
0.00 руб.
0 2 1
При выполнении следующего запроса (см. приложение) некоторые (не все!!!) результаты удваиваются. Подскажите, пожалуйста, почему? Заранее благодарен. Это я хочу вывести кол-во прихода и расхода товаров. При этом меня интересует не только как правильно это можно сделать (кардинально переписав запрос), но и что неправильно в этом запросе? 2 раза конструкцию "Соединение" нельзя использовать в одном запросе?

Приложение:
Процедура КнопкаСформироватьНажатие(Кнопка)
Запр = Новый Запрос;
Запр.Текст = "
|ВЫБРАТЬ Спр.Ссылка, СУММА(Прих.К_во) КАК К_воПрих, СУММА(Расх.К_во) КАК К_воРасх
|ИЗ Документ.ПриходнаяНакладная.Товары КАК Прих
|ПРАВОЕ СОЕДИНЕНИЕ
|Справочник.ТМЦ КАК Спр
|ПО Прих.ТМЦ = Спр.Ссылка
|ЛЕВОЕ СОЕДИНЕНИЕ
|Документ.РасходнаяНакладная.Товары КАК Расх
|ПО Спр.Ссылка = Расх.ТМЦ
|ГДЕ (Прих.К_во > 0) ИЛИ (Расх.К_во > 0)
|СГРУППИРОВАТЬ ПО Спр.Ссылка";

Выборка = Запр.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл
Сообщить(""+Выборка.Ссылка + " " + Выборка.К_воПрих + " " + Выборка.К_воРасх);
КонецЦикла;
КонецПроцедуры

Обсуждение

Неизвестный
27.08.2008, 16:51
общий
Вопрос, похоже, по восьмерке.

В семерке елси запрос выполняется по элементам табличной части, и используется функция Счетчик или Сумма, то количество может увеличиваться столько раз, сколько строк в каждом конкретном джокументе. Как это происходит в восьмерке - увы, не знаю, потому пишу в мини-форум.
давно
Студент
218854
56
28.08.2008, 07:28
общий
это ответ
Здравствуйте, Paul-leon!
СОЕДИНЕНИЕ в запросах можно использовать в различных комбинациях и количествах.
Судя по запросу вы пытаетесь получить для справочника ТМЦ все ненулевые данные прихода и расхода. Причин появления задвоенных результатов не могу понять. Скорее всего это из-за использования различных направлений соединения.

В приложении написан текст запроса, как я сделала бы по этой задаче

Приложение:
ВЫБРАТЬ
ВложЗапрос.ТМЦ КАК Ссылка,
СУММА(ВложЗапрос.КолвоПриход) КАК КолвоПриход,
СУММА(ВложЗапрос.КолвоРасход) КАК КолвоРасход

ИЗ
( ВЫБРАТЬ
Док.ТМЦ,
Док.К_во КАК КолвоПриход,
0 КАК КолвоРасход
ИЗ
Документ.ПриходнаяНакладная.Товары КАК Док

ОБЪЕДИНИТЬ

ВЫБРАТЬ
Док.ТМЦ,
0 КАК КолвоПриход,
Док.К_во КАК КолвоРасход
ИЗ
Документ.РасходнаяНакладная.Товары КАК Док) КАК ВложЗапрос
ГДЕ
ВложЗапрос.КолвоПриход > 0
ИЛИ ВложЗапрос.КолвоРасход > 0
СГРУППИРОВАТЬ ПО
ВложЗапрос.ТМЦ
Форма ответа