Имя: Пароль:
1C
1С v8
Задвоение в отчете
,
0 Jamiq
 
15.02.13
14:58
8.1
Добрый день.
Есть три вида Документов в каждом своя сумма. Есть справочник контраганеты. В отчете должны быть 4 столбца: Контрагенты и 3 столбца с Суммами сумм документов (допустим: есть 2 документа "Заказ покупателя" на определенного контрагента, в отчете суммы складываються) и так еще для двух типов документов.
Пытаюсь написать отчет, он одни суммы складывает нормально, а для других документов задваивает.
Подскажите, как правильно написать такой запрос?
1 kosts
 
15.02.13
15:01
(0) Группировку нужно делать
2 Галахад
 
гуру
15.02.13
15:02
(0) Свой покажи.
3 Jamiq
 
15.02.13
15:03
(1) В "Групповое Поле" добавляю Контрагента
а в "Суммируемое" 3 суммы. Чет не получается
4 Jamiq
 
15.02.13
15:03
(2)    
"ВЫБРАТЬ
   |    Контрагенты.Ссылка КАК Контрагент,
   |    СУММА(ЗаказПокупателя.СуммаДокумента) КАК СуммаЗаказов,
   |    СУММА(РасходнаяНакладная.СуммаДокумента) КАК СуммаОтгрузки,
   |    СУММА(ОплатаПоЗаказуПокупателя.СуммаОплаты) КАК СуммаОплаты
   |ИЗ
   |    Справочник.Контрагенты КАК Контрагенты
   |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя КАК ЗаказПокупателя
   |        ПО Контрагенты.Ссылка = ЗаказПокупателя.Контрагент
   |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОплатаПоЗаказуПокупателя КАК ОплатаПоЗаказуПокупателя
   |        ПО Контрагенты.Ссылка = ОплатаПоЗаказуПокупателя.Контрагент
   |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.РасходнаяНакладная КАК РасходнаяНакладная
   |        ПО Контрагенты.Ссылка = РасходнаяНакладная.Контрагент
   |ГДЕ
   |    ЗаказПокупателя.Дата МЕЖДУ &НачПериода И &КонПериода
   |    И ОплатаПоЗаказуПокупателя.Дата МЕЖДУ &НачПериода И &КонПериода
   |    И РасходнаяНакладная.Дата МЕЖДУ &НачПериода И &КонПериода
   |    И Контрагенты.Ссылка = &Контрагент
   |
   |СГРУППИРОВАТЬ ПО
   |    Контрагенты.Ссылка
   |    
   |УПОРЯДОЧИТЬ ПО
   |    Контрагент";
5 Jamiq
 
15.02.13
15:10
фигня полная? =)
6 kosts
 
15.02.13
15:13
Документы в одном периоде могут относиться к другому периоду?

Ну и в этот отчет попадут всякие не_проведенные и помеченные на удаление документы.
7 Jamiq
 
15.02.13
15:19
(6) НачПериода и КонПериода это реквизиты на форме, которые задаются.
Не понял вопроса.

не проведенных и помеченных нет =)
У контрагента два документа "ЗаказПокупателя" он складывает сумму нормально. А для этого же контрагента суммы документов "РасходнаяНакладная" и "ОплатаПоЗаказуПокупателя" задваивает.
8 kosts
 
15.02.13
15:24
Документы в одном периоде могут относиться к другому периоду?
Т.е. может получиться что за январь документ отгрузку сделают в феврале?
9 Jamiq
 
15.02.13
15:25
такого нет. это так тестовая база
10 kosts
 
15.02.13
15:32
Группируй каждый документ отдельно, можно через временные таблицы.

По всей видимости например документов Документ.ЗаказПокупателя несколько штук и по этому сперва в запросе двоятся строки, а потом суммируются суммы.
11 Jamiq
 
15.02.13
15:37
(10) а где про них можно почитать (временные таблицы)?
12 ДенисЧ
 
15.02.13
15:39
(11) не поверишь... В конфигураторе есть кнопочка F1...
13 kosts
 
15.02.13
15:41
ничего сложного нет, вот так примерно

Выбрать
   ВТДокументЗаказПокупателя.Контрагент,
   ВТДокументЗаказПокупателя.СуммаДокумента

Поместить Документ.ЗаказПокупателя как ВТДокументЗаказПокупателя

где
   ЗаказПокупателя.Дата МЕЖДУ &НачПериода И &КонПериода
;
ВЫБРАТЬ
   |    Контрагенты.Ссылка КАК Контрагент,
   |    СУММА(ВТЗаказПокупателя.СуммаДокумента) КАК СуммаЗаказов,
   |    СУММА(РасходнаяНакладная.СуммаДокумента) КАК СуммаОтгрузки,
   |    СУММА(ОплатаПоЗаказуПокупателя.СуммаОплаты) КАК СуммаОплаты
   |ИЗ
   |    Справочник.Контрагенты КАК Контрагенты
   |        ЛЕВОЕ СОЕДИНЕНИЕ ВТДокументЗаказПокупателя КАК ЗаказПокупателя
   |        ПО Контрагенты.Ссылка = ЗаказПокупателя.Контрагент
   |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОплатаПоЗаказуПокупателя КАК ОплатаПоЗаказуПокупателя
   |        ПО Контрагенты.Ссылка = ОплатаПоЗаказуПокупателя.Контрагент
   |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.РасходнаяНакладная КАК РасходнаяНакладная
   |        ПО Контрагенты.Ссылка = РасходнаяНакладная.Контрагент
   |ГДЕ
   |    
   |     ОплатаПоЗаказуПокупателя.Дата МЕЖДУ &НачПериода И &КонПериода
   |    И РасходнаяНакладная.Дата МЕЖДУ &НачПериода И &КонПериода
   |    И Контрагенты.Ссылка = &Контрагент
   |
   |СГРУППИРОВАТЬ ПО
   |    Контрагенты.Ссылка
   |    
   |УПОРЯДОЧИТЬ ПО
   |    Контрагент
14 kosts
 
15.02.13
15:42
(13) Ну только в твоем случае первый запрос нужно сгруппировать
15 Jamiq
 
15.02.13
16:00
(14)

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

СГРУППИРОВАТЬ ПО
   ЗаказПокупателя.Контрагент
16 Jamiq
 
15.02.13
16:01
Результат запроса: Количество 1
17 kosts
 
15.02.13
17:36
(16) Всё правильно, так и есть, выборка при создании временной таблицы возвращает количество строк.
См. (13) и не разрывай создание временной таблицы и её использование...
18 Archer08
 
15.02.13
18:00
Я бы сделал через объединение. Универсально независимо от количества документов
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn