Имя: Пароль:
1C
1С v8
БП. Помогите с запросом пожалуйста, затупил :(
0 palpetrovich
 
24.07.12
15:34
Надо получить количество и суммы продажные и себестомости в разреез партий, текст запроса:

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

В результате "задваиваются" итоги по Количество и Сумма если Партий списания по номенклатуре было более одной
1 asady
 
24.07.12
15:38
(0) данные по реализации собери в ВТ, сгруупируй там
потом уже соединяй её с ВТ РБ ДвиженияССубконто
2 y88
 
24.07.12
15:39
а зачем Документ.РеализацияТоваровУслуг.Товары
можно же просто по РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто
с фильтром по нужному типу документа
3 palpetrovich
 
24.07.12
15:39
(1) спасибо, попробую
4 palpetrovich
 
24.07.12
15:41
(2) дык, откуда там продажная стоимость возмется?
5 palpetrovich
 
24.07.12
15:43
(1) кста я думал об этом, но вообще мне там надо по двум документам это делать, я их что-то не смог связать в одну табличку с группировкой по общим полям
6 y88
 
24.07.12
15:49
А если убрать из группировки ХозрасчетныйДвиженияССубконто.СубконтоКт2
он там очень нужен?
7 palpetrovich
 
24.07.12
15:54
(6) тогда начнется "поле не входит в группу..."
8 palpetrovich
 
24.07.12
15:58
(1) лучше не стало,  сделал криво наверное, ткните носом плиз

ВЫБРАТЬ
   РеализацияТоваровУслугТовары.Ссылка,
   РеализацияТоваровУслугТовары.Номенклатура,
   СУММА(РеализацияТоваровУслугТовары.Количество) КАК Количество,
   СУММА(РеализацияТоваровУслугТовары.Сумма) КАК Сумма
ПОМЕСТИТЬ СписокРеализаций
ИЗ
   Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
ГДЕ
   РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &Дата1 И &Дата2
СГРУППИРОВАТЬ ПО
   РеализацияТоваровУслугТовары.Ссылка,
   РеализацияТоваровУслугТовары.Номенклатура
;
ВЫБРАТЬ
   ХозрасчетныйДвиженияССубконто.Регистратор,
   ХозрасчетныйДвиженияССубконто.СубконтоКт1,
   ХозрасчетныйДвиженияССубконто.СубконтоКт2,
   СУММА(ХозрасчетныйДвиженияССубконто.КоличествоКт) КАК КоличествоКт,
   СУММА(ХозрасчетныйДвиженияССубконто.Сумма) КАК Сумма
ПОМЕСТИТЬ ДвиженияДокумента
ИЗ
   РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
           &Дата1, &Дата2,    СчетДт = &СчетДт И СчетКт = &СчетКт, ,    ) КАК ХозрасчетныйДвиженияССубконто
СГРУППИРОВАТЬ ПО
   ХозрасчетныйДвиженияССубконто.СубконтоКт2,
   ХозрасчетныйДвиженияССубконто.СубконтоКт1,
   ХозрасчетныйДвиженияССубконто.Регистратор
;
ВЫБРАТЬ
   СписокРеализаций.Ссылка КАК Ссылка,
   СписокРеализаций.Номенклатура КАК Номенклатура,
   СУММА(СписокРеализаций.Количество) КАК Количество,
   СУММА(СписокРеализаций.Сумма) КАК Сумма,
   ДвиженияДокумента.СубконтоКт2 КАК Партия,
   СУММА(ДвиженияДокумента.КоличествоКт) КАК КоличествоПартия,
   СУММА(ДвиженияДокумента.Сумма) КАК СуммаПартия
ИЗ
   СписокРеализаций КАК СписокРеализаций
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДвиженияДокумента КАК ДвиженияДокумента
       ПО СписокРеализаций.Ссылка = ДвиженияДокумента.Регистратор
           И СписокРеализаций.Номенклатура = ДвиженияДокумента.СубконтоКт1
СГРУППИРОВАТЬ ПО
   СписокРеализаций.Ссылка,
   СписокРеализаций.Номенклатура,
   ДвиженияДокумента.СубконтоКт2
ИТОГИ
   СУММА(Количество),
   СУММА(Сумма),
   СУММА(КоличествоПартия),
   СУММА(СуммаПартия)
ПО
   Ссылка,
   Номенклатура,
   Партия
9 y88
 
24.07.12
16:02
(7) видимо придется совсем отказаться от
СГРУППИРОВАТЬ ПО
10 palpetrovich
 
24.07.12
16:04
(9) не решает, то-же самое:
ВЫБРАТЬ
   РеализацияТоваровУслугТовары.Ссылка,
   РеализацияТоваровУслугТовары.Номенклатура,
   РеализацияТоваровУслугТовары.Количество КАК Количество,
   РеализацияТоваровУслугТовары.Сумма КАК Сумма
ПОМЕСТИТЬ СписокРеализаций
ИЗ
   Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
ГДЕ
   РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &Дата1 И &Дата2
;
ВЫБРАТЬ
   ХозрасчетныйДвиженияССубконто.Регистратор,
   ХозрасчетныйДвиженияССубконто.СубконтоКт1,
   ХозрасчетныйДвиженияССубконто.СубконтоКт2,
   ХозрасчетныйДвиженияССубконто.КоличествоКт КАК КоличествоКт,
   ХозрасчетныйДвиженияССубконто.Сумма КАК Сумма
ПОМЕСТИТЬ ДвиженияДокумента
ИЗ
   РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
           &Дата1, &Дата2,    СчетДт = &СчетДт И СчетКт = &СчетКт, ,    ) КАК ХозрасчетныйДвиженияССубконто
;
ВЫБРАТЬ
   СписокРеализаций.Ссылка КАК Ссылка,
   СписокРеализаций.Номенклатура КАК Номенклатура,
   СписокРеализаций.Количество КАК Количество,
   СписокРеализаций.Сумма КАК Сумма,
   ДвиженияДокумента.СубконтоКт2 КАК Партия,
   ДвиженияДокумента.КоличествоКт КАК КоличествоПартия,
   ДвиженияДокумента.Сумма КАК СуммаПартия
ИЗ
   СписокРеализаций КАК СписокРеализаций
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДвиженияДокумента КАК ДвиженияДокумента
       ПО СписокРеализаций.Ссылка = ДвиженияДокумента.Регистратор
           И СписокРеализаций.Номенклатура = ДвиженияДокумента.СубконтоКт1
ИТОГИ
   СУММА(Количество),
   СУММА(Сумма),
   СУММА(КоличествоПартия),
   СУММА(СуммаПартия)
ПО
   Ссылка,
   Номенклатура,
   Партия
11 y88
 
24.07.12
16:07
(10) еще попробовать заменить
ИТОГИ
   СУММА(Количество),
   СУММА(Сумма),
   СУММА(КоличествоПартия),
   СУММА(СуммаПартия)
ПО
   Ссылка,
   Номенклатура,
   Партия

на
ИТОГИ
   СУММА(КоличествоПартия),
   СУММА(СуммаПартия)
ПО
   Ссылка,
   Номенклатура,
12 palpetrovich
 
24.07.12
16:16
(11) ну по Партии - убрать - это правильно, а Количество и Сумма - так и итогов по ним не будет. А за это собственно и борьба
Вот что получилось сделать и работает так как надо - это  ВыборкРезультатаЗапросаПоДокументам и в цикле - Запрос по движениям текущено документа. Но это стыдно  :(
13 alex1004
 
24.07.12
16:27
Ну а как же про сгруппировать в первом временном запросе.

ВЫБРАТЬ
   РеализацияТоваровУслугТовары.Ссылка,
   РеализацияТоваровУслугТовары.Номенклатура,
   РеализацияТоваровУслугТовары.Количество КАК Количество,
   РеализацияТоваровУслугТовары.Сумма КАК Сумма
ПОМЕСТИТЬ СписокРеализаций
ИЗ
   Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
ГДЕ
  РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &Дата1 И &Дата2
ВЫБРАТЬ
   РеализацияТоваровУслугТовары.Ссылка,
   РеализацияТоваровУслугТовары.Номенклатура,
   РеализацияТоваровУслугТовары.Количество КАК Количество,
   РеализацияТоваровУслугТовары.Сумма КАК Сумма
ПОМЕСТИТЬ СписокРеализаций
ИЗ
   Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
СГРУППИРОВАТЬ ПО
   РеализацияТоваровУслугТовары.Ссылка,
   РеализацияТоваровУслугТовары.Номенклатура,
14 palpetrovich
 
24.07.12
16:28
еще вариант - получать плоскую табличку и  в прямой выборке имитировать проход по группировкам типа:
пока Выборка.Док = ТекДок Тогда  и т.д. ;)
15 palpetrovich
 
24.07.12
16:33
лан, всем спасибо :/
16 y88
 
24.07.12
16:33
(14) а если сделать два запроса:
обходить первый и отбирать результат из второго?
17 viktor_vv
 
24.07.12
16:34
Для Суммы продажной тебе придется в таблице по документу продажи дежржать цену, а сумму получать перемножением количества, которое брать из партий списываемых, на эту самую сумму. По другому не получишь. Так как на одну строку РТиУ всегда есть вероятность получить больше одной строки из партий.
Все это в запросе.
18 palpetrovich
 
24.07.12
16:41
(18) ну это наверное чуть лучший вариант (12)
(17) вариант, но, наверное, при пересчете  возможны ошибки
19 viktor_vv
 
24.07.12
16:42
А вообще у тебя похоже УТП, тогда там есть два регистра "Продажи себестоимость" и "Продажи", вот из них и тяни соедининением. Там все должно быть.
20 viktor_vv
 
24.07.12
16:45
(19)+ А не, сбрехал. В "Продажи" нет документа оприходования (то есть партии).
(18) Ну теоретически есть. Но эта погрешность будет в любом варианте, так тебе надо сумму из одной строки разбить на несколько.
21 palpetrovich
 
24.07.12
16:50
(20) БП. Попробовал, да, вариант считать катит, спасибо. Еще подумаю маленько, если ничего не придумаю или кто-нить что-то не подскажет другое - так и буду делать:

ВЫБРАТЬ
   РеализацияТоваров.Ссылка,
   РеализацияТоваров.Номенклатура,
   РеализацияТоваров.Цена
ПОМЕСТИТЬ СписокРеализаций
ИЗ
   Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваров
ГДЕ
   РеализацияТоваров.Ссылка.Дата МЕЖДУ &Дата1 И &Дата2
;
ВЫБРАТЬ
   ХозрасчетныйДвиженияССубконто.Регистратор,
   ХозрасчетныйДвиженияССубконто.СубконтоКт1,
   ХозрасчетныйДвиженияССубконто.СубконтоКт2,
   ХозрасчетныйДвиженияССубконто.КоличествоКт КАК КоличествоКт,
   ХозрасчетныйДвиженияССубконто.Сумма КАК Сумма
ПОМЕСТИТЬ ДвиженияДокумента
ИЗ
   РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
           &Дата1, &Дата2,    СчетДт = &СчетДт И СчетКт = &СчетКт, ,    ) КАК ХозрасчетныйДвиженияССубконто
;
ВЫБРАТЬ
   СписокРеализаций.Ссылка КАК Ссылка,
   СписокРеализаций.Номенклатура КАК Номенклатура,
   (СписокРеализаций.Цена*ДвиженияДокумента.КоличествоКт) КАК Сумма,
   ДвиженияДокумента.СубконтоКт2 КАК Партия,
   ДвиженияДокумента.КоличествоКт КАК КоличествоПартия,
   ДвиженияДокумента.Сумма КАК СуммаПартия
ИЗ
   СписокРеализаций КАК СписокРеализаций
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДвиженияДокумента КАК ДвиженияДокумента
       ПО СписокРеализаций.Ссылка = ДвиженияДокумента.Регистратор
           И СписокРеализаций.Номенклатура = ДвиженияДокумента.СубконтоКт1
           
ИТОГИ
   СУММА(Сумма),
   СУММА(КоличествоПартия),
   СУММА(СуммаПартия)
ПО
   Ссылка,
   Номенклатура
22 viktor_vv
 
24.07.12
16:53
(21) Еще цену можно брать не из документа, а в запросе считать с большей точностью, вполне может хватить. Особенно если в граммах особо не продаете :).
23 palpetrovich
 
24.07.12
16:58
(22) все больше в тоннах, но варианты возможны ;)
24 palpetrovich
 
24.07.12
17:00
+22  кста да, наверное прийдется считать дабы не нарваться на скидки :)