Имя: Пароль:
1C
1С v8
Помогите с запросом, суммирование табличной части документа
0 BoshIT
 
08.11.12
06:46
Доброе время суток!
1Cv82 БУХ 2.0
Есть документ поступления, добавлена табличная часть ОтработанныеНакладные. Идея в том что если сумма строк ПоступлениеТоваровУслуг.ОтработанныеНакладые.количество и сумма строк ПоступлениеТоваровУслуг.Товары.Количество отличается то выбираем этот документ.

вот текст запроса

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

СГРУППИРОВАТЬ ПО
   ПоступлениеТоваровУслуг.Ссылка,
   ПоступлениеТоваровУслугТовары.Номенклатура,
   ПоступлениеТоваровУслугОтработанныеНакладные.Количество


он не суммироет все строчки в табличной части((( что я делаю не так?
1 Wobland
 
08.11.12
06:53
(0) представь себе, что товаров не будет вообще..
2 BoshIT
 
08.11.12
06:56
да нет выводит)

   180    ДЛ-0,2-62 вид 1    Поступление товаров и услуг не св. от 09.08.2012 9:00:01
   120,446    ДЛ-0,2-62 вид 1    Поступление товаров и услуг не св. от 09.08.2012 9:00:01
58,098    372,699    ДТ ЕВРО сорт С, вид 1 (летнее, сера до 0,035 %)    Поступление товаров и услуг 527 от 25.04.2012 9:00:01
62,798    372,699    ДТ ЕВРО сорт С, вид 1 (летнее, сера до 0,035 %)    Поступление товаров и услуг 527 от 25.04.2012 9:00:01
62,422    372,699    ДТ ЕВРО сорт С, вид 1 (летнее, сера до 0,035 %)    Поступление товаров и услуг 527 от 25.04.2012 9:00:01
62,649    372,699    ДТ ЕВРО сорт С, вид 1 (летнее, сера до 0,035 %)    Поступление товаров и услуг 527 от 25.04.2012 9:00:01
62,252    372,699    ДТ ЕВРО сорт С, вид 1 (летнее, сера до 0,035 %)    Поступление товаров и услуг 527 от 25.04.2012 9:00:01
64,48    372,699    ДТ ЕВРО сорт С, вид 1 (летнее, сера до 0,035 %)    Поступление товаров и услуг 527 от 25.04.2012 9:00:01
вот только первую колонку он должен был просуммировать, а что то не как(((
3 perec1982
 
08.11.12
06:56
"ВЫБРАТЬ
|    ВложенныйЗапрос.Ссылка
|ИЗ
|    (ВЫБРАТЬ
|        СУММА(ПоступлениеТоваровУслугТовары.Количество) КАК Количество,
|        СУММА(ПоступлениеТоваровУслугУслуги.Количество) КАК Количество1,
|        ПоступлениеТоваровУслугТовары.Ссылка КАК Ссылка
|    ИЗ
|        Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
|            ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.ОтработанныеНакладые КАК ПоступлениеТоваровУслугУслуги
|            ПО ПоступлениеТоваровУслугТовары.Ссылка = ПоступлениеТоваровУслугУслуги.Ссылка
|    ГДЕ
|        ПоступлениеТоваровУслугТовары.Ссылка.Контрагент = &Контрагент
|    
|    СГРУППИРОВАТЬ ПО
|        ПоступлениеТоваровУслугТовары.Ссылка) КАК ВложенныйЗапрос
|ГДЕ
|    ВложенныйЗапрос.Количество <> ВложенныйЗапрос.Количество1"
4 perec1982
 
08.11.12
06:56
примерно так мне кажется
5 BoshIT
 
08.11.12
06:57
получается так ,
первая колонка должна быть сумма с ПоступлениеТоваровУслугОтработанныеНакладные.Количество
вторая
ПоступлениеТоваровУслугТовары.Количество,
третия номенклатура, и четвертая документ движения
6 perec1982
 
08.11.12
06:57
Только вместо ТЧ Услуги ОтработанныеНакладые
7 BoshIT
 
08.11.12
07:01
(3)
теже грабли, попадают документы где Количество и Количество1 равны((( хотя по условию отбора не должны быть равны
8 perec1982
 
08.11.12
07:02
(7)Количество и Количество1 это итоговые кол. ТЧ?
9 BoshIT
 
08.11.12
07:03
(8) угу
10 perec1982
 
08.11.12
07:05
Ну тогда ты врешь, такго не может быть. Мой код идеален))).
Отладь запрос консолью
11 perec1982
 
08.11.12
07:07
Вытащи вложенный запрос, он должен выдавать примерно так:

Ссылка   Кол   Кол1
Ссылка1  100   500
Ссылка2  120   120
...
12 BoshIT
 
08.11.12
07:11
ВЫБРАТЬ
       СУММА(ПоступлениеТоваровУслугТовары.Количество) КАК Количество,
       СУММА(ПоступлениеТоваровУслугУслуги.Количество) КАК Количество1,
       ПоступлениеТоваровУслугТовары.Ссылка КАК Ссылка
   ИЗ
       Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
           ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.ОтработанныеНакладные  КАК ПоступлениеТоваровУслугУслуги
           ПО ПоступлениеТоваровУслугТовары.Ссылка = ПоступлениеТоваровУслугУслуги.Ссылка
   ГДЕ
       ПоступлениеТоваровУслугТовары.Ссылка.Контрагент = &Контрагент
   
   СГРУППИРОВАТЬ ПО
       ПоступлениеТоваровУслугТовары.Ссылка
а
вот ответ
536,352    178,784    Поступление товаров и услуг 545 от 11.05.2012 9:00:01
1 532,055    306,413    Поступление товаров и услуг 546 от 11.05.2012 9:00:01
247,816    123,908    Поступление товаров и услуг 547 от 11.05.2012 9:00:01
2 236,194    372,699    Поступление товаров и услуг 527 от 25.04.2012 9:00:01

первая колонка вообще от балды) на этом контрагенте первая и вторая колонка одинаковые)))
13 perec1982
 
08.11.12
07:17
"ВЫБРАТЬ
|    ВложенныйЗапрос.Ссылка
|ИЗ
|    (ВЫБРАТЬ
|        СУММА(ПоступлениеТоваровУслугТовары.Количество) КАК Количество,
|        ПоступлениеТоваровУслугТовары.Ссылка КАК Ссылка
|    ИЗ
|        Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
|    ГДЕ
|        ПоступлениеТоваровУслугТовары.Ссылка.Контрагент = &Контрагент
|    
|    СГРУППИРОВАТЬ ПО
|        ПоступлениеТоваровУслугТовары.Ссылка) КАК ВложенныйЗапрос
|        ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
|            СУММА(ПоступлениеТоваровУслугУслуги.Количество) КАК Количество,
|            ПоступлениеТоваровУслугУслуги.Ссылка КАК Ссылка
|        ИЗ
|            Документ.ПоступлениеТоваровУслуг.Услуги КАК ПоступлениеТоваровУслугУслуги
|        ГДЕ
|            ПоступлениеТоваровУслугУслуги.Ссылка.Контрагент = &Контрагент
|        
|        СГРУППИРОВАТЬ ПО
|            ПоступлениеТоваровУслугУслуги.Ссылка) КАК ВложенныйЗапрос1
|        ПО ВложенныйЗапрос.Ссылка = ВложенныйЗапрос1.Ссылка
|            И ВложенныйЗапрос.Количество <> ВложенныйЗапрос1.Количество"
14 perec1982
 
08.11.12
07:18
Имя тч замени
15 BoshIT
 
08.11.12
07:25
получилось так
ВЫБРАТЬ
   ВложенныйЗапрос.Ссылка
ИЗ
   (ВЫБРАТЬ
       СУММА(ЕСТЬNULL(ПоступлениеТоваровУслугТовары.Количество,0)) КАК Количество,
       ПоступлениеТоваровУслугТовары.Ссылка КАК Ссылка
   ИЗ
       Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
   ГДЕ
       ПоступлениеТоваровУслугТовары.Ссылка.Контрагент = &Контрагент
   
   СГРУППИРОВАТЬ ПО
       ПоступлениеТоваровУслугТовары.Ссылка) КАК ВложенныйЗапрос
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           СУММА(ЕСТЬNULL(ПоступлениеТоваровУслугУслуги.Количество,0)) КАК Количество,
           ПоступлениеТоваровУслугУслуги.Ссылка КАК Ссылка
       ИЗ
           Документ.ПоступлениеТоваровУслуг.ОтработанныеНакладные   КАК ПоступлениеТоваровУслугУслуги
       ГДЕ
           ПоступлениеТоваровУслугУслуги.Ссылка.Контрагент = &Контрагент
       
       СГРУППИРОВАТЬ ПО
           ПоступлениеТоваровУслугУслуги.Ссылка) КАК ВложенныйЗапрос1
       ПО ВложенныйЗапрос.Ссылка = ВложенныйЗапрос1.Ссылка
           И ВложенныйЗапрос.Количество <> ВложенныйЗапрос1.Количество


но если ОтработанныеНакладные пусто, то не выводит ничего
поставил ЕСТЬNULL чтоб был 0, но все равно не работает(
16 BoshIT
 
08.11.12
07:31
ВЫБРАТЬ
   ВложенныйЗапрос.Ссылка,
   ВложенныйЗапрос.Количество,
   ВложенныйЗапрос1.Количество
ИЗ
   (ВЫБРАТЬ
       СУММА(ЕСТЬNULL(ПоступлениеТоваровУслугТовары.Количество,0)) КАК Количество,
       ПоступлениеТоваровУслугТовары.Ссылка КАК Ссылка
   ИЗ
       Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
   ГДЕ
       ПоступлениеТоваровУслугТовары.Ссылка.Контрагент = &Контрагент
   
   СГРУППИРОВАТЬ ПО
       ПоступлениеТоваровУслугТовары.Ссылка) КАК ВложенныйЗапрос
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           СУММА(ЕСТЬNULL(ПоступлениеТоваровУслугУслуги.Количество,0)) КАК Количество,
           ПоступлениеТоваровУслугУслуги.Ссылка КАК Ссылка
       ИЗ
           Документ.ПоступлениеТоваровУслуг.ОтработанныеНакладные   КАК ПоступлениеТоваровУслугУслуги
       ГДЕ
           ПоступлениеТоваровУслугУслуги.Ссылка.Контрагент = &Контрагент
       
       СГРУППИРОВАТЬ ПО
           ПоступлениеТоваровУслугУслуги.Ссылка) КАК ВложенныйЗапрос1
       ПО ВложенныйЗапрос.Ссылка = ВложенныйЗапрос1.Ссылка
           И ВложенныйЗапрос.Количество <> ВложенныйЗапрос1.Количество



вот так вот выводит все красиво) но есть одно но! если в документе тч ОтработанныеНакладные не заполненно, то не выводит ничего
17 perec1982
 
08.11.12
07:34
Значит соединение поменяй на левое
18 BoshIT
 
08.11.12
07:37
отлично) все фурычит)
я дундук)) признаю
Спасибки
19 BoshIT
 
08.11.12
09:08
не все так просто как казалось((((
добавил отбор по дате и все сломалось(


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


даже вот казалось бы простой запрос и тот не работает


ВЫБРАТЬ
   СУММА(ЕСТЬNULL(ПоступлениеТоваровУслугТовары.Количество, 0)) КАК Количество,
   ПоступлениеТоваровУслугТовары.Ссылка КАК Ссылка,
   ПоступлениеТоваровУслугТовары.Ссылка.Контрагент КАК Контрагент
ИЗ
   Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
ГДЕ
   ПоступлениеТоваровУслугТовары.Ссылка.Дата МЕЖДУ &ДатаНачало И &ДатаКонец

СГРУППИРОВАТЬ ПО
   ПоступлениеТоваровУслугТовары.Ссылка,
   ПоступлениеТоваровУслугТовары.Ссылка.Контрагент


что я делаю не так(((?
20 BoshIT
 
08.11.12
09:21
я что то вообще не понимаю тогда

а тут то что не так??????

ВЫБРАТЬ
   ДокументПоступление.ссылка как Документ
ИЗ
   Документ.ПоступлениеТоваровУслуг КАК ДокументПоступление
ГДЕ
   ДокументПоступление.Дата МЕЖДУ &ДатаНачало И &ДатаКонец
21 hhhh
 
08.11.12
12:25
(20) что-то непонятно. Ну заведите в документе маленький реквизитик типа булево "КоличествоОтличается" и заполняйте его в процедуре ПередЗаписью() документа. Зачем вы каждый раз перелопачиваете эти табличные части? У вас слишком мощный сервер, ему работы не хватает?