Имя: Пароль:
1C
1С v8
Помогите с запросом
0 егаис
 
16.11.11
16:38
Есть два ТЧ одного документа. В обоих ТЧ есть поле количество
как запросом получить разницу по стобцу НомерСтроки. Аналитика в двух таблицах одинаковая(в одной факт, в другой загруженные данные)
ВЫБРАТЬ
   ПоступлениеТоваровУслугТовары.НомерСтроки,
   СУММА(ПоступлениеТоваровУслугТовары.КоличествоУпаковок) КАК КоличествоУпаковок,
   СУММА(ПоступлениеТоваровУслугТоварыПоДаннымПоставщика.КоличествоУпаковок) КАК КоличествоУпаковок1
ИЗ
   Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
       ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.ТоварыПоДаннымПоставщика КАК ПоступлениеТоваровУслугТоварыПоДаннымПоставщика
       ПО ПоступлениеТоваровУслугТовары.Номенклатура = ПоступлениеТоваровУслугТоварыПоДаннымПоставщика.Номенклатура
ГДЕ
   ПоступлениеТоваровУслугТовары.Ссылка = &Ссылка

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

Понимаю что запрос косячный, потому что в случае расхождения количество по факту удваивается...
1 егаис
 
16.11.11
16:40
объединять два запроса в таком случае или можно как-то одним запросом решать?
2 Лефмихалыч
 
16.11.11
16:41
что есть "получить разницу по стобцу НомерСтроки"?
3 Лефмихалыч
 
16.11.11
16:42
а если номенклатура одинаковая, но в разных строках?
4 егаис
 
16.11.11
16:42
тхм, получить разницу по количеству с группировкой по колонке номерстроки
Вариант - группировать по количеству из таблицы факта, но, имхоЮ, некрасиво...
5 егаис
 
16.11.11
16:42
(3) запрет на уровне кода, приход только по загрузке и сканированию по факту
6 Man4kin
 
16.11.11
16:44
ВЫБРАТЬ
   ПоступлениеТоваровУслугТовары.НомерСтроки,
   СУММА(ПоступлениеТоваровУслугТовары.КоличествоУпаковок-ПоступлениеТоваровУслугТоварыПоДаннымПоставщика.КоличествоУпаковок) КАК Разница
ИЗ
   Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
       ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.ТоварыПоДаннымПоставщика КАК ПоступлениеТоваровУслугТоварыПоДаннымПоставщика
       ПО ПоступлениеТоваровУслугТовары.НомерСтроки = ПоступлениеТоваровУслугТоварыПоДаннымПоставщика.номерСтроки
И ПоступлениеТоваровУслугТоварыПоДаннымПоставщика
       ПО ПоступлениеТоваровУслугТовары.Ссылка = ПоступлениеТоваровУслугТоварыПоДаннымПоставщика.Ссылка

ГДЕ
   ПоступлениеТоваровУслугТовары.Ссылка = &Ссылка

СГРУППИРОВАТЬ ПО
   ПоступлениеТоваровУслугТовары.НомерСтроки
7 luckyluke
 
16.11.11
16:44
(0) а почему нет ни отбора ни соединения по ссылке с таблицей Документ.ПоступлениеТоваровУслуг.ТоварыПоДаннымПоставщика ?
8 Man4kin
 
16.11.11
16:44
если я правильно понял конечно
9 Лефмихалыч
 
16.11.11
16:44
(5) ну, так и соединяй по номеру строки, зачем тебе аналитика тогда?
Соединение полное, сумма такая
СУММА(ЕстьNULL(Лево,0)-ЕстьNULL(Право,0))
10 Лефмихалыч
 
16.11.11
16:45
хотя, раз запрет на уровне кода. то и внутреннее сойдет и тогда ЕстьNULL() не надо
11 F13
 
16.11.11
16:45
Таблицы переименовать по вкусу

ВЫБРАТЬ
   ВложенныйЗапрос.НомерСтроки,
   СУММА(ВложенныйЗапрос.Количество) КАК Количество
ИЗ
   (ВЫБРАТЬ
       ПоступлениеТоваровУслугТовары.НомерСтроки КАК НомерСтроки,
       ПоступлениеТоваровУслугТовары.Количество КАК Количество
   ИЗ
       Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       ПоступлениеТоваровУслугТовары.НомерСтроки,
       ПоступлениеТоваровУслугТовары.Количество * -1
   ИЗ
       Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары) КАК ВложенныйЗапрос

СГРУППИРОВАТЬ ПО
   ВложенныйЗапрос.НомерСтроки
12 Man4kin
 
16.11.11
16:46
тьфу, соединение неправильно написал

ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.ТоварыПоДаннымПоставщика КАК ПоступлениеТоваровУслугТоварыПоДаннымПоставщика
       ПО ПоступлениеТоваровУслугТовары.НомерСтроки = ПоступлениеТоваровУслугТоварыПоДаннымПоставщика.номерСтроки
И ПоступлениеТоваровУслугТовары.Ссылка = ПоступлениеТоваровУслугТоварыПоДаннымПоставщика.Ссылка
13 Михаил Козлов
 
16.11.11
16:46
Сгруппировать в каждой ТЧ по номенклатуре (с пересчетом в базовые) и соединить 2 таблицы (наверное полным соединением).
14 егаис
 
16.11.11
16:48
не работает!
   "ВЫБРАТЬ РАЗЛИЧНЫЕ
   |    СУММА(ПоступлениеТоваровУслугТовары.КоличествоУпаковок-ПоступлениеТоваровУслугТоварыПоДаннымПоставщика.КоличествоУпаковок) КАК КоличествоРазница,
   |    ПоступлениеТоваровУслугТовары.НомерСтроки
   |ИЗ
   |    Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
   |        ПОЛНОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.ТоварыПоДаннымПоставщика КАК ПоступлениеТоваровУслугТоварыПоДаннымПоставщика
   |        ПО ПоступлениеТоваровУслугТовары.Номенклатура = ПоступлениеТоваровУслугТоварыПоДаннымПоставщика.Номенклатура
   |ГДЕ
   |    ПоступлениеТоваровУслугТовары.Ссылка = &Ссылка
   |
   |СГРУППИРОВАТЬ ПО
   |    ПоступлениеТоваровУслугТовары.НомерСтроки";

пример
комп, факт 5, док 4
запрос выдает факт 10
15 Vadik_62
 
16.11.11
16:48
>>как запросом получить разницу по стобцу НомерСтроки
Бред какой-то.. Изъясняйся доступней
16 Лефмихалыч
 
16.11.11
16:53
(14) видимо это потому, что твой контроль на уровне кода обосрался
17 егаис
 
16.11.11
16:54
(11) спасибо, помогло
(16) нет