Имя: Пароль:
1C
1С v8
Помогите с запросом
,
0 SAP
 
20.07.11
17:59
Делаю запрос вида

Выбрать
ОС,
СуммаАмортизации

Из
Таблица


И другой

Выбрать
ОС,
Сумма(СуммаАмортизации) как СА

Из
Таблица

Сгруппировать по ОС


Запросы выдают наборы записей с разной итоговой суммой амортизации
т.е. сумма всех строк в первом запросе не равна сумме всех строк во втором. Помогите разобраться что происходит.
1 Jstunner
 
20.07.11
18:00
запросы показывай
2 SAP
 
20.07.11
18:07
ВЫБРАТЬ
   осОст.Балансодержатель,
   осОст.Счет,
   осОст.КБК,
   осОст.НаименованиеОС КАК ОС,
   осОст.ЦМО,
   осОст.ВидДвиженияНФА,
   осОст.Контрагент,
   осОст.Номенклатура,
   осОст.КоличествоДт,
   осОст.СуммаДт,
   осОст.КоличествоКт,
   осОст.СуммаКТ,
   осОст.КолВоМесяцевАмортизации,
   осОст.СуммаАмортизации,
   осОст.КоличествоОС,
   осОст.КоличествоВсего
ПОМЕСТИТЬ тзОСОст
ИЗ
   &тзОСОст КАК осОст
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ТабОсОст.Балансодержатель,
   ТабОсОст.Счет КАК Счет,
   ТабОсОст.КБК КАК КБК,
   ТабОсОст.ОС КАК ОС,
   ТабОсОст.ЦМО КАК ЦМО,
   ТабОсОст.ВидДвиженияНФА,
   ТабОсОст.Контрагент,
   ТабОсОст.Номенклатура,
   ТабОсОст.КоличествоДт,
   ТабОсОст.СуммаДт,
   ТабОсОст.КоличествоКт,
   ТабОсОст.СуммаКТ,
   ТабОсОст.КолВоМесяцевАмортизации,
   СУММА(осОст.СуммаАмортизации / ВЫБОР
           КОГДА осКоличество.КоличествоВсего = 0
               ТОГДА 1
           ИНАЧЕ осКоличество.КоличествоВсего
       КОНЕЦ * ТабОсОст.КоличествоОС) КАК СумАм
ИЗ
   (ВЫБРАТЬ
       осОст.Балансодержатель КАК Балансодержатель,
       осОст.Счет КАК Счет,
       осОст.КБК КАК КБК,
       осОст.ОС КАК ОС,
       осОст.ЦМО КАК ЦМО,
       осОст.ВидДвиженияНФА КАК ВидДвиженияНФА,
       осОст.Контрагент КАК Контрагент,
       осОст.Номенклатура КАК Номенклатура,
       осОст.КоличествоДт КАК КоличествоДт,
       осОст.СуммаДт КАК СуммаДт,
       осОст.КоличествоКт КАК КоличествоКт,
       осОст.СуммаКТ КАК СуммаКТ,
       осОст.КолВоМесяцевАмортизации КАК КолВоМесяцевАмортизации,
       осОст.КоличествоОС КАК КоличествоОС
   ИЗ
       тзОСОст КАК осОст
   ГДЕ
       ПОДСТРОКА(осОст.Счет, 1, 3) = "101") КАК ТабОсОст
       ЛЕВОЕ СОЕДИНЕНИЕ тзОСОст КАК осОст
       ПО ТабОсОст.ОС = осОст.ОС
           И (ПОДСТРОКА(осОст.Счет, 1, 3) = "104")
           И (ПОДСТРОКА(осОст.Счет, 5, 4) = ПОДСТРОКА(ТабОсОст.Счет, 5, 4))
           И (осОст.КБК = ТабОсОст.КБК)
       ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           осОст.ОС КАК ОС,
           СУММА(осОст.КоличествоВсего) КАК КоличествоВсего
       ИЗ
           тзОСОст КАК осОст
       ГДЕ
           ПОДСТРОКА(осОст.Счет, 1, 3) = "101"
       
       СГРУППИРОВАТЬ ПО
           осОст.ОС) КАК осКоличество
       ПО ТабОсОст.ОС = осКоличество.ОС

СГРУППИРОВАТЬ ПО
   ТабОсОст.Балансодержатель,
   ТабОсОст.Счет,
   ТабОсОст.КБК,
   ТабОсОст.ОС,
   ТабОсОст.ЦМО,
   ТабОсОст.ВидДвиженияНФА,
   ТабОсОст.Контрагент,
   ТабОсОст.Номенклатура,
   ТабОсОст.КоличествоДт,
   ТабОсОст.СуммаДт,
   ТабОсОст.КоличествоКт,
   ТабОсОст.СуммаКТ,
   ТабОсОст.КолВоМесяцевАмортизации

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   ТабОсОст.Балансодержатель,
   ТабОсОст.Счет,
   ТабОсОст.КБК,
   ТабОсОст.ОС,
   ТабОсОст.ЦМО,
   ТабОсОст.ВидДвиженияНФА,
   ТабОсОст.Контрагент,
   ТабОсОст.Номенклатура,
   ТабОсОст.КоличествоДт,
   ТабОсОст.СуммаДт,
   ТабОсОст.КоличествоКт,
   ТабОсОст.СуммаКТ,
   ТабОсОст.КолВоМесяцевАмортизации,
   ТабОсОст.СумАм
ИЗ
   (ВЫБРАТЬ
       осОст.Балансодержатель КАК Балансодержатель,
       осОст.Счет КАК Счет,
       осОст.КБК КАК КБК,
       осОст.ОС КАК ОС,
       осОст.ЦМО КАК ЦМО,
       осОст.ВидДвиженияНФА КАК ВидДвиженияНФА,
       осОст.Контрагент КАК Контрагент,
       осОст.Номенклатура КАК Номенклатура,
       осОст.КоличествоДт КАК КоличествоДт,
       осОст.СуммаДт КАК СуммаДт,
       осОст.КоличествоКт КАК КоличествоКт,
       осОст.СуммаКТ КАК СуммаКТ,
       осОст.КолВоМесяцевАмортизации КАК КолВоМесяцевАмортизации,
       осОст.СуммаАмортизации КАК СумАм
   ИЗ
       тзОСОст КАК осОст
   ГДЕ
       ПОДСТРОКА(осОст.Счет, 1, 3) = "104") КАК ТабОсОст
       ЛЕВОЕ СОЕДИНЕНИЕ тзОСОст КАК осОст
       ПО ТабОсОст.ОС = осОст.ОС
           И (ПОДСТРОКА(осОст.Счет, 1, 3) = "101")
           И (ПОДСТРОКА(осОст.Счет, 5, 4) = ПОДСТРОКА(ТабОсОст.Счет, 5, 4))
           И (осОст.КБК = ТабОсОст.КБК)
ГДЕ
   осОст.ОС ЕСТЬ NULL

УПОРЯДОЧИТЬ ПО
   ОС
3 SAP
 
20.07.11
18:10
Собсно вот запрос. Если в первом запросе объединения убрать группировку амортизации по всем полям, то запрос возвращает черте-что
4 SAP
 
21.07.11
10:08
Упростил


ВЫБРАТЬ
   ТабОсОст.ОС КАК ОС,
   СУММА(осОст.СуммаАмортизации / ВЫБОР
       КОГДА осКоличество.КоличествоВсего = 0
           ТОГДА 1
           ИНАЧЕ осКоличество.КоличествоВсего
       КОНЕЦ * ТабОсОст.КоличествоОС) КАК СумАм
ИЗ
   (ВЫБРАТЬ
       осОст.ОС КАК ОС,
       осОст.КоличествоОС КАК КоличествоОС
   ИЗ
       тзОСОст КАК осОст
   ГДЕ
       ПОДСТРОКА(осОст.Счет, 1, 3) = "101") КАК ТабОсОст
       ЛЕВОЕ СОЕДИНЕНИЕ тзОСОст КАК осОст
       ПО ТабОсОст.ОС = осОст.ОС
           И (ПОДСТРОКА(осОст.Счет, 1, 3) = "104")
           И (ПОДСТРОКА(осОст.Счет, 5, 4) = ПОДСТРОКА(ТабОсОст.Счет, 5, 4))
           И (осОст.КБК = ТабОсОст.КБК)
       ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           осОст.ОС КАК ОС,
           СУММА(осОст.КоличествоВсего) КАК КоличествоВсего
       ИЗ
           тзОСОст КАК осОст
       ГДЕ
           ПОДСТРОКА(осОст.Счет, 1, 3) = "101"
       
       СГРУППИРОВАТЬ ПО
           осОст.ОС) КАК осКоличество
       ПО ТабОсОст.ОС = осКоличество.ОС

СГРУППИРОВАТЬ ПО
   ТабОсОст.ОС


Кто-нить может сказать в чем дело?
5 Леха Дум
 
21.07.11
10:53
Что нужно получить из таблицы &тзОСОст?
6 Леха Дум
 
21.07.11
10:58
Как вариант: берешь любую доступную консоль запросов, текст кидаешь туда, для отладки вместо выборки из таблицы подставляешь свой набор данных и смотришь где получается фигня
7 SAP
 
21.07.11
11:05
Дык, фигня в том, что другие цифры без группировки. С группировкой правильно без группировки непонятно что, хотя группировка, как я понимаю, на итоги никак влиять не может