Имя: Пароль:
1C
1С v8
ИМЕЮЩИЕ в Запросе
,
0 kn
 
27.10.11
07:18
Запрос должен отбирать документы реализация, рко, пко, возвраты если они в Сумме(по одному и тому же Заказу) дают не ноль.Пишу такой запрос
Вот текст запроса

"ВЫБРАТЬ
   РеализацияТоваровУслуг.Ссылка КАК ДокРеализация,
   ПРЕДСТАВЛЕНИЕ(РеализацияТоваровУслуг.Сделка)
ПОМЕСТИТЬ ТабРеализаций
ИЗ
   Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
ГДЕ
   РеализацияТоваровУслуг.Проведен = ИСТИНА
   И РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНач И &ДатаКон
   И РеализацияТоваровУслуг.ДоговорКонтрагента.ВидВзаиморасчетов = &НаличныйРасчет
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ПриходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка КАК Документ,
   ПриходныйКассовыйОрдерРасшифровкаПлатежа.Сделка КАК ДокЗаказ,
   ПРЕДСТАВЛЕНИЕ(ПриходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка) КАК СсылкаПредставление,
   ПРЕДСТАВЛЕНИЕ(ПриходныйКассовыйОрдерРасшифровкаПлатежа.Сделка) КАК СделкаПредставление,
   -ПриходныйКассовыйОрдерРасшифровкаПлатежа.СуммаПлатежа КАК СуммаПлатежа
ПОМЕСТИТЬ ТабДокументов
ИЗ
   ТабРеализаций КАК ТабДокументов
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПриходныйКассовыйОрдер.РасшифровкаПлатежа КАК ПриходныйКассовыйОрдерРасшифровкаПлатежа
       ПО ТабДокументов.ДокРеализация.Сделка = ПриходныйКассовыйОрдерРасшифровкаПлатежа.Сделка
ГДЕ
   ПриходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка.Проведен = ИСТИНА

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   РасходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка,
   РасходныйКассовыйОрдерРасшифровкаПлатежа.Сделка,
   ПРЕДСТАВЛЕНИЕ(РасходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка),
   ПРЕДСТАВЛЕНИЕ(РасходныйКассовыйОрдерРасшифровкаПлатежа.Сделка),
   РасходныйКассовыйОрдерРасшифровкаПлатежа.СуммаПлатежа
ИЗ
   ТабРеализаций КАК ТабРеализаций
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РасходныйКассовыйОрдер.РасшифровкаПлатежа КАК РасходныйКассовыйОрдерРасшифровкаПлатежа
       ПО ТабРеализаций.ДокРеализация.Сделка = РасходныйКассовыйОрдерРасшифровкаПлатежа.Сделка
ГДЕ
   РасходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка.Проведен = ИСТИНА

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   ВозвратТоваровОтПокупателя.Ссылка,
   ВозвратТоваровОтПокупателя.Сделка,
   ВозвратТоваровОтПокупателя.Представление,
   ПРЕДСТАВЛЕНИЕ(ВозвратТоваровОтПокупателя.Сделка),
   -ВозвратТоваровОтПокупателя.СуммаДокумента
ИЗ
   ТабРеализаций КАК ТабРеализаций
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ВозвратТоваровОтПокупателя КАК ВозвратТоваровОтПокупателя
       ПО ТабРеализаций.ДокРеализация.Сделка = ВозвратТоваровОтПокупателя.Сделка
ГДЕ
   ВозвратТоваровОтПокупателя.Проведен = ИСТИНА

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   ТабРеализаций.ДокРеализация,
   ТабРеализаций.ДокРеализация.Сделка,
   ПРЕДСТАВЛЕНИЕ(ТабРеализаций.ДокРеализация),
   ПРЕДСТАВЛЕНИЕ(ТабРеализаций.ДокРеализация.Сделка),
   ТабРеализаций.ДокРеализация.СуммаДокумента
ИЗ
   ТабРеализаций КАК ТабРеализаций
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ТабДокументов.Документ,
   ПРЕДСТАВЛЕНИЕ(ТабДокументов.Документ),
   ТабДокументов.ДокЗаказ КАК ДокЗаказ,
   ПРЕДСТАВЛЕНИЕ(ТабДокументов.ДокЗаказ),
   СУММА(ТабДокументов.СуммаПлатежа) КАК СуммаПлатежа
ИЗ
   ТабДокументов КАК ТабДокументов

СГРУППИРОВАТЬ ПО
   ТабДокументов.ДокЗаказ,
   ТабДокументов.Документ

ИМЕЮЩИЕ
   СУММА(ТабДокументов.СуммаПлатежа) <> 0
ИТОГИ
   СУММА(СуммаПлатежа)
ПО
   ДокЗаказ"

Но выбираются и с нулем.Подскажите, как подправить запрос чтобы он решал эту задачу?
1 Kasper076
 
27.10.11
07:22
Нифига. Не в сумме по одному и тому же заказу, а по каждому документу. Т.е. если по какому-то документу сумма не равна нулю, то и он этот док попадает в выборку и заказ по этому документу тоже.
2 kn
 
27.10.11
07:24
это понимаю, а как сделать правильно ведь группировка автоматом добавляется
3 Kasper076
 
27.10.11
07:28
Автоматом ничего не добавляется. Цель какая у тебя?
4 kn
 
27.10.11
07:28
Цель посмотреть что Реализация не полностью закрыта
5 kn
 
27.10.11
07:30
если добавить группировку по заказу, то группировка по документам добавиться автоматически - вот я о чем
6 Kasper076
 
27.10.11
07:33
(4) А почему итоги только по заказу тогда?
7 kn
 
27.10.11
07:34
так устраивает
8 Kasper076
 
27.10.11
07:37
В типовых вроде регистр есть по заказам. Правильнее по нему строить отчет.
(7) Так убери тогда поле Документ.
9 kn
 
27.10.11
07:41
откуда?из группировок не убирается(добавляется все равно автоматом даже если только заказ ставлю)
10 Kasper076
 
27.10.11
07:44
ВЫБРАТЬ
   РеализацияТоваровУслуг.Ссылка КАК ДокРеализация,
   ПРЕДСТАВЛЕНИЕ(РеализацияТоваровУслуг.Сделка)
ПОМЕСТИТЬ ТабРеализаций
ИЗ
   Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
ГДЕ
   РеализацияТоваровУслуг.Проведен = ИСТИНА
   И РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНач И &ДатаКон
   И РеализацияТоваровУслуг.ДоговорКонтрагента.ВидВзаиморасчетов = &НаличныйРасчет
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ПриходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка КАК Документ,
   ПриходныйКассовыйОрдерРасшифровкаПлатежа.Сделка КАК ДокЗаказ,
   ПРЕДСТАВЛЕНИЕ(ПриходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка) КАК СсылкаПредставление,
   ПРЕДСТАВЛЕНИЕ(ПриходныйКассовыйОрдерРасшифровкаПлатежа.Сделка) КАК СделкаПредставление,
   -ПриходныйКассовыйОрдерРасшифровкаПлатежа.СуммаПлатежа КАК СуммаПлатежа
ПОМЕСТИТЬ ТабДокументов
ИЗ
   ТабРеализаций КАК ТабДокументов
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПриходныйКассовыйОрдер.РасшифровкаПлатежа КАК ПриходныйКассовыйОрдерРасшифровкаПлатежа
       ПО ТабДокументов.ДокРеализация.Сделка = ПриходныйКассовыйОрдерРасшифровкаПлатежа.Сделка
ГДЕ
   ПриходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка.Проведен = ИСТИНА

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   РасходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка,
   РасходныйКассовыйОрдерРасшифровкаПлатежа.Сделка,
   ПРЕДСТАВЛЕНИЕ(РасходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка),
   ПРЕДСТАВЛЕНИЕ(РасходныйКассовыйОрдерРасшифровкаПлатежа.Сделка),
   РасходныйКассовыйОрдерРасшифровкаПлатежа.СуммаПлатежа
ИЗ
   ТабРеализаций КАК ТабРеализаций
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РасходныйКассовыйОрдер.РасшифровкаПлатежа КАК РасходныйКассовыйОрдерРасшифровкаПлатежа
       ПО ТабРеализаций.ДокРеализация.Сделка = РасходныйКассовыйОрдерРасшифровкаПлатежа.Сделка
ГДЕ
   РасходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка.Проведен = ИСТИНА

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   ВозвратТоваровОтПокупателя.Ссылка,
   ВозвратТоваровОтПокупателя.Сделка,
   ВозвратТоваровОтПокупателя.Представление,
   ПРЕДСТАВЛЕНИЕ(ВозвратТоваровОтПокупателя.Сделка),
   -ВозвратТоваровОтПокупателя.СуммаДокумента
ИЗ
   ТабРеализаций КАК ТабРеализаций
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ВозвратТоваровОтПокупателя КАК ВозвратТоваровОтПокупателя
       ПО ТабРеализаций.ДокРеализация.Сделка = ВозвратТоваровОтПокупателя.Сделка
ГДЕ
   ВозвратТоваровОтПокупателя.Проведен = ИСТИНА

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   ТабРеализаций.ДокРеализация,
   ТабРеализаций.ДокРеализация.Сделка,
   ПРЕДСТАВЛЕНИЕ(ТабРеализаций.ДокРеализация),
   ПРЕДСТАВЛЕНИЕ(ТабРеализаций.ДокРеализация.Сделка),
   ТабРеализаций.ДокРеализация.СуммаДокумента
ИЗ
   ТабРеализаций КАК ТабРеализаций
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ПРЕДСТАВЛЕНИЕ(ТабДокументов.Документ),
   ТабДокументов.ДокЗаказ КАК ДокЗаказ,
   ПРЕДСТАВЛЕНИЕ(ТабДокументов.ДокЗаказ),
   СУММА(ТабДокументов.СуммаПлатежа) КАК СуммаПлатежа
ИЗ
   ТабДокументов КАК ТабДокументов

СГРУППИРОВАТЬ ПО
   ТабДокументов.ДокЗаказ,
   ПРЕДСТАВЛЕНИЕ(ТабДокументов.Документ)

ИМЕЮЩИЕ
   СУММА(ТабДокументов.СуммаПлатежа) <> 0
ИТОГИ
   СУММА(СуммаПлатежа)
ПО
   ДокЗаказ
11 kn
 
27.10.11
07:51
тоже самое, в ЛК можно посмотреть что мне надо убрать из запроса
12 Kasper076
 
27.10.11
07:57
Я уже посмотрел. "ПРЕДСТАВЛЕНИЕ(ТабДокументов.Документ)," тоже убрать надо.
По заказу-то ноль, а по документам ни фига не ноль. Т.е. по одному доку списано меньше заказа, а по другому больше. если сами документы вообще из запроса исключить, то будет нормально.
13 kn
 
27.10.11
07:58
представление убирается автоматом
14 kn
 
27.10.11
08:03
если убрать документ и его представление то результат будет правильный, но документов не будет, будет один заказ, а мне надо всю цепочку
15 Kasper076
 
27.10.11
08:07
Запрос надо по другому строить. Сначала выбрать все не закрытые заказы, а потом джойнить к ним документы. Ну или корректно заказы закрывать.
16 kn
 
27.10.11
08:08
(14)+ только если эту полученную таблицу использовать опять как временную и дальше работать
(15)меня заказы не интересуют, здесь они как общее у документов звено показаны
17 Kasper076
 
27.10.11
08:19
ВЫБРАТЬ
   ЗаказыПокупателей.Регистратор
ИЗ
   РегистрНакопления.ЗаказыПокупателей КАК ЗаказыПокупателей
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПокупателей.Остатки КАК ЗаказыПокупателейОстатки
       ПО ЗаказыПокупателей.ЗаказПокупателя = ЗаказыПокупателейОстатки.ЗаказПокупателя
18 kn
 
27.10.11
08:24
Вот так получилось

ВЫБРАТЬ
   РеализацияТоваровУслуг.Ссылка КАК ДокРеализация,
   ПРЕДСТАВЛЕНИЕ(РеализацияТоваровУслуг.Сделка)
ПОМЕСТИТЬ ТабРеализаций
ИЗ
   Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
ГДЕ
   РеализацияТоваровУслуг.Проведен = ИСТИНА
   И РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНач И &ДатаКон
   И РеализацияТоваровУслуг.ДоговорКонтрагента.ВидВзаиморасчетов = &НаличныйРасчет
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ПриходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка КАК Документ,
   ПриходныйКассовыйОрдерРасшифровкаПлатежа.Сделка КАК ДокЗаказ,
   ПРЕДСТАВЛЕНИЕ(ПриходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка) КАК СсылкаПредставление,
   ПРЕДСТАВЛЕНИЕ(ПриходныйКассовыйОрдерРасшифровкаПлатежа.Сделка) КАК СделкаПредставление,
   -ПриходныйКассовыйОрдерРасшифровкаПлатежа.СуммаПлатежа КАК СуммаПлатежа
ПОМЕСТИТЬ ТабДокументов
ИЗ
   ТабРеализаций КАК ТабДокументов
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПриходныйКассовыйОрдер.РасшифровкаПлатежа КАК ПриходныйКассовыйОрдерРасшифровкаПлатежа
       ПО ТабДокументов.ДокРеализация.Сделка = ПриходныйКассовыйОрдерРасшифровкаПлатежа.Сделка
ГДЕ
   ПриходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка.Проведен = ИСТИНА

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   РасходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка,
   РасходныйКассовыйОрдерРасшифровкаПлатежа.Сделка,
   ПРЕДСТАВЛЕНИЕ(РасходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка),
   ПРЕДСТАВЛЕНИЕ(РасходныйКассовыйОрдерРасшифровкаПлатежа.Сделка),
   РасходныйКассовыйОрдерРасшифровкаПлатежа.СуммаПлатежа
ИЗ
   ТабРеализаций КАК ТабРеализаций
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РасходныйКассовыйОрдер.РасшифровкаПлатежа КАК РасходныйКассовыйОрдерРасшифровкаПлатежа
       ПО ТабРеализаций.ДокРеализация.Сделка = РасходныйКассовыйОрдерРасшифровкаПлатежа.Сделка
ГДЕ
   РасходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка.Проведен = ИСТИНА

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   ВозвратТоваровОтПокупателя.Ссылка,
   ВозвратТоваровОтПокупателя.Сделка,
   ВозвратТоваровОтПокупателя.Представление,
   ПРЕДСТАВЛЕНИЕ(ВозвратТоваровОтПокупателя.Сделка),
   -ВозвратТоваровОтПокупателя.СуммаДокумента
ИЗ
   ТабРеализаций КАК ТабРеализаций
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ВозвратТоваровОтПокупателя КАК ВозвратТоваровОтПокупателя
       ПО ТабРеализаций.ДокРеализация.Сделка = ВозвратТоваровОтПокупателя.Сделка
ГДЕ
   ВозвратТоваровОтПокупателя.Проведен = ИСТИНА

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   ТабРеализаций.ДокРеализация,
   ТабРеализаций.ДокРеализация.Сделка,
   ПРЕДСТАВЛЕНИЕ(ТабРеализаций.ДокРеализация),
   ПРЕДСТАВЛЕНИЕ(ТабРеализаций.ДокРеализация.Сделка),
   ТабРеализаций.ДокРеализация.СуммаДокумента
ИЗ
   ТабРеализаций КАК ТабРеализаций
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ТабДокументов.ДокЗаказ КАК ДокЗаказ,
   ПРЕДСТАВЛЕНИЕ(ТабДокументов.ДокЗаказ),
   СУММА(ТабДокументов.СуммаПлатежа) КАК СуммаПлатежа
ПОМЕСТИТЬ ТабНенулевых
ИЗ
   ТабДокументов КАК ТабДокументов

СГРУППИРОВАТЬ ПО
   ТабДокументов.ДокЗаказ

ИМЕЮЩИЕ
   СУММА(ТабДокументов.СуммаПлатежа) <> 0
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ТабДокументов.Документ,
   ПРЕДСТАВЛЕНИЕ(ТабДокументов.Документ),
   ТабДокументов.ДокЗаказ КАК ДокЗаказ,
   ПРЕДСТАВЛЕНИЕ(ТабДокументов.ДокЗаказ),
   ТабДокументов.СуммаПлатежа КАК СуммаПлатежа
ИЗ
   ТабНенулевых КАК ТабНенулевых
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТабДокументов КАК ТабДокументов
       ПО ТабНенулевых.ДокЗаказ = ТабДокументов.ДокЗаказ
ИТОГИ
   СУММА(СуммаПлатежа)
ПО
   ДокЗаказ

Спасибо за помощь!
19 Kasper076
 
27.10.11
08:28
Я бы все же через регистр делал.
20 kn
 
27.10.11
08:34
ПКО и РКО не делают движений по регистру Заказы
21 Kasper076
 
27.10.11
08:49
Но в каком-то же регистре заказ присутствуют, если он а ПКО или РКО указан. Этот регистр и брать. Главное не закрытые заказы брать из РН Заказы.
22 Рыжий Лис
 
27.10.11
11:23
(20) Есть такой регистр Взаиморасчеты с контрагентами. И отчет по нему тоже есть. А за такой, простите, г...окод с экзамена на специалиста выгоняют.
23 Kasper076
 
27.10.11
12:49
(22) Согласен. Запросик конечно кривоват. :-)
24 Axel2009
 
27.10.11
12:51
запрос нужно подправить так, что все объединить нужно завернуть в подзапрос. и уже к итоговому подзапросу применять имеющие. а то как написано даже в (18) некорректен
25 Axel2009
 
27.10.11
12:53
(24)+ а не корректен, через 3 временных. сори
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан