Имя: Пароль:
1C
1С v8
суммировать результаты запроса
,
0 DrunkWolf
 
19.09.11
10:34
в запросе берутся след. данные:
НомерДока, НомерКонтейнера, КолМест, Товар, КолТовара.
Первые 3 реквизита берутся из шапки, другие из табл.части.Соответсвенно результат запроса может быть таким:

НомерДока    НомерКонтейнера  КолМест   Товар        КолТовара  
0001        12         30       редиска    20
0001        12         30       петрушка    40
0002        11         25       хрен        10
0002        11         25       репа        15

Как мне в ИТОГО по реквизиту КолМест суммировать данные взятые только из разных документов (а не построчно)
Т.е. чтобы в итого по 3-му реквизиту получилось не 110 (30+30+25+25), а 55 (30+25)
Отчетик на СКД кстати...
1 Defender aka LINN
 
19.09.11
10:36
2 набора данных
2 mikecool
 
19.09.11
10:42
а просто сгруппировать не?
3 DrunkWolf
 
19.09.11
11:19
(1) подробней пжл..
4 DrunkWolf
 
19.09.11
11:20
(2) и об этом тоже))
5 DrunkWolf
 
20.09.11
09:15
Поднимаю...
6 butterbean
 
20.09.11
09:17
(5) сделай через ОБЪЕДИНИТЬ - сначала все из шапки выбери, а потом из таб части, в ИТОГО просуммируешь
7 mikeA
 
20.09.11
09:31
(0) КолМест - это по всему документу или по товару?
8 DrunkWolf
 
20.09.11
09:35
сейчас запрос такой:

ВЫБРАТЬ
   ТранспортныеОстатки.СчетТранспорт.Ответственный КАК Ответственный,
   ТранспортныеОстатки.Поставщик КАК Поставщик,
   ТранспортныеОстатки.СчетТранспорт.Откуда КАК Откуда,
   ТранспортныеОстатки.Перевозчик КАК Перевозчик,
   ТранспортныеОстатки.СчетТранспорт.НомерВагона КАК НомерВагона,
   ТранспортныеОстатки.СчетТранспорт.НомерКонтейнера КАК НомерКонтейнера,
   ТранспортныеОстатки.СчетТранспорт.Скорость КАК Скорость,
   ТранспортныеОстатки.СчетТранспорт.КоличествоМест КАК Мест,
   ВЫБОР
       КОГДА ТранспортныеОстатки.СчетТранспорт.ОбъемВКг = ИСТИНА
           ТОГДА ТранспортныеОстатки.СчетТранспорт.Объем
       ИНАЧЕ NULL
   КОНЕЦ КАК ОбъемВКг,
   ВЫБОР
       КОГДА ТранспортныеОстатки.СчетТранспорт.ОбъемВКг = ЛОЖЬ
           ТОГДА ТранспортныеОстатки.СчетТранспорт.Объем
       ИНАЧЕ NULL
   КОНЕЦ КАК ОбъемВКуб,
   ТранспортныеОстатки.СчетТранспорт.ДатаОтгрузки КАК ДатаОтгрузки,
   ТранспортныеОстатки.СчетТранспорт.ВремяВПути КАК СчетТранспортВремяВПути,
   ТранспортныеОстатки.СчетТранспорт.ДатаПоступления КАК ДатаОжидаемогоПрихода,
   ПоступлениеТоваровУслугДокументыОснования.Ссылка.Дата КАК ДатаФактическогоПрихода,
   ТранспортныеОстатки.СчетТранспорт.Дней КАК Дней,
   ТранспортныеОстатки.СчетТранспорт.Дата КАК ДатаПроведенияВ1С,
   ТранспортныеОстатки.СуммаОборот КАК СуммаЗаТранспорт,
   ВЫРАЗИТЬ(ТранспортныеОстатки.СуммаОборот * 100 / ТранспортныеОстатки.Основание.СуммаДокумента КАК ЧИСЛО(15, 2)) КАК ПроцентТранспорт,
   ТранспортныеОстатки.Основание.СуммаДокумента КАК СтоимостьТовараПоНакладной,
   ТранспортныеОстатки.СчетТранспорт.Склад КАК Склад,
   ТранспортныеОстатки.НоменклатурнаяГруппа КАК ВидГруза
ИЗ
   РегистрНакопления.Транспортные.Обороты(&ДатаНач, &ДатаКон, , ) КАК ТранспортныеОстатки
       ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.ДокументыОснования КАК ПоступлениеТоваровУслугДокументыОснования
       ПО ТранспортныеОстатки.Основание = ПоступлениеТоваровУслугДокументыОснования.СчетНаОплатуПоставщика

Если я два разных запроса буду брать из ТранспортныеОстатки. не пойму, как это поможет мне суммировать итоги?
9 DrunkWolf
 
20.09.11
09:35
(7)КолМест из документа..
10 Axel2009
 
20.09.11
09:44
запрос сходится с данными из (0) только в 1ом поле "НомерКонтейнера"
11 DrunkWolf
 
20.09.11
09:52
а ну да, это я упростил  пример в (0), но суть та же, надо чтоб суммировал КолМест только те, что из разных доков..
12 DrunkWolf
 
20.09.11
09:52
т.е. в настоящем запросе просто Мест, прошу прощения за путаницу..
13 Defender aka LINN
 
20.09.11
10:32
Делай соединение двух наборов данных вместо соединения двух таблиц в запросе. Так понятно?
14 Axel2009
 
20.09.11
11:09
либо объединить, либо делить на количество строк. другого не дано
15 Defender aka LINN
 
20.09.11
12:19

НомерДока    НомерКонтейнера  КолМест   Товар        КолТовара  
0001         12          30        редиска     20
0001         12          30        петрушка    40
0002         11          25        хрен        10
0002         11          25        репа        15
0002         11          25        укроп       20

(14) Дели.
16 Defender aka LINN
 
20.09.11
12:19
+(15) И см (13)
17 Axel2009
 
20.09.11
12:24
30/2
25/3
в итоге сумма будет корректная
18 DrunkWolf
 
20.09.11
12:43
У меня появилась идея...
сформированный запрос выгрузить в таблицуЗначений, у одной строчки оставить колМест, у других убирать, типо обнулить все значения кроме первого у КолМест, где они идут от одного дока а потом ТЗ запихать в СКД, как набор данных.
19 Axel2009
 
20.09.11
12:53
(18) сделай как в (13). 1ска сама все сделает
20 DrunkWolf
 
20.09.11
12:59
То, что в запросе делается через  ЛЕВОЕ СОЕДИНЕНИЕ не влияет на необходимый результат т.е. могла бы быть просто одна таблица ТранспортныеОстатки, вопрос в том, как правильно суммировать поле Мест, берущееся из нее.
21 Axel2009
 
20.09.11
13:01
в скд 2 набор данных
22 Defender aka LINN
 
20.09.11
13:29
(17) Ты не умничай, ты запрос покажи :)
(20) На НЕОБХОДИМЫЙ результат вообще ничего не влияет, кроме постановки задачи. А у тебя из-за левого соединения результат неправильный.
23 Axel2009
 
20.09.11
13:30
(22) подсчитать количество записей по одной группе запрос показать?
24 Defender aka LINN
 
20.09.11
13:31
(23) Целиком показывай.
25 DrunkWolf
 
21.09.11
06:47
(22) запрос может быть и без соединения:

ВЫБРАТЬ
   ТранспортныеОстатки.СчетТранспорт.Ответственный КАК Ответственный,
   ТранспортныеОстатки.Поставщик КАК Поставщик,
   ТранспортныеОстатки.СчетТранспорт.Откуда КАК Откуда,
   ТранспортныеОстатки.Перевозчик КАК Перевозчик,
   ТранспортныеОстатки.СчетТранспорт.НомерВагона КАК НомерВагона,
   ТранспортныеОстатки.СчетТранспорт.НомерКонтейнера КАК НомерКонтейнера,
   ТранспортныеОстатки.СчетТранспорт.Скорость КАК Скорость,
   ТранспортныеОстатки.СчетТранспорт.КоличествоМест КАК Мест,
   ВЫБОР
       КОГДА ТранспортныеОстатки.СчетТранспорт.ОбъемВКг = ИСТИНА
           ТОГДА ТранспортныеОстатки.СчетТранспорт.Объем
       ИНАЧЕ NULL
   КОНЕЦ КАК ОбъемВКг,
   ВЫБОР
       КОГДА ТранспортныеОстатки.СчетТранспорт.ОбъемВКг = ЛОЖЬ
           ТОГДА ТранспортныеОстатки.СчетТранспорт.Объем
       ИНАЧЕ NULL
   КОНЕЦ КАК ОбъемВКуб,
   ТранспортныеОстатки.СчетТранспорт.ДатаОтгрузки КАК ДатаОтгрузки,
   ТранспортныеОстатки.СчетТранспорт.ВремяВПути КАК СчетТранспортВремяВПути,
   ТранспортныеОстатки.СчетТранспорт.ДатаПоступления КАК ДатаОжидаемогоПрихода,
   ТранспортныеОстатки.СчетТранспорт.Дней КАК Дней,
   ТранспортныеОстатки.СчетТранспорт.Дата КАК ДатаПроведенияВ1С,
   ТранспортныеОстатки.СуммаОборот КАК СуммаЗаТранспорт,
   ВЫРАЗИТЬ(ТранспортныеОстатки.СуммаОборот * 100 / ТранспортныеОстатки.Основание.СуммаДокумента КАК ЧИСЛО(15, 2)) КАК ПроцентТранспорт,
   ТранспортныеОстатки.Основание.СуммаДокумента КАК СтоимостьТовараПоНакладной,
   ТранспортныеОстатки.СчетТранспорт.Склад КАК Склад,
   ТранспортныеОстатки.НоменклатурнаяГруппа КАК ВидГруза
ИЗ
   РегистрНакопления.Транспортные.Обороты(&ДатаНач, &ДатаКон, , ) КАК ТранспортныеОстатки


Проблема с суммированием поля МЕСТ останется...
26 DrunkWolf
 
21.09.11
07:54
ЛевоеСоединение делалается только для того, чтобы в отчете еще был один показатель ДатаФактическогоПрихода, но к данной проблеме это не отностися
27 DrunkWolf
 
22.09.11
13:18
(23)Сделал как (18), не совсем красиво вышло, так можно-ли запросом сделать?
28 Byasha
 
22.09.11
13:52
Корректнее всего получить через объединение. Я с аналогичной проблемой столкнулся. (Вот тут написано - v8: Найти ошибку в запросе В итоге получил то что нужно , но с объединением кучи запросов.
Расчет итогов 1С делает по всем записям попавшим в выборку данных, в том числе и по детальным, поэтому если в детальных записях есть строка с одиним и тем же значением поля, даже если по логике его суммировать не нужно, оно все равно суммируется. Как то так.
29 DrunkWolf
 
23.09.11
06:41
В который раз слышу про Объединение, но не пойму как, дайте пример, чтоб хоть начать думать)
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.