Имя: Пароль:
1C
1С v8
Проблема с запросом
0 kabv
 
15.06.12
09:40
Здравствуйте! Объединение двух запросов и группирую по 3 полям. Первый группирровка по 3 полям, второй по 2. Объединение по 2 полям. Когда получаю результат, то значение поля второго запроса (одна и таже цифра) записано во всех строках третьего уровня группировки и итог суммируется. Получается из второго запроса одна сумма умножается на количество вариантов третьего уровня группировки первого запроса. Можно для третьего уровня группировки установить значения поля второго запроса "0", а чтобы для первого и второго уровня (т.к. объединение по 2 полям) значения сохранились.
Заранее благодарен!
1 Нуф-Нуф
 
15.06.12
09:41
запрос покажи
2 Buster007
 
15.06.12
09:41
(0) может проще запрос показать?
3 kabv
 
15.06.12
09:43
ВЫБРАТЬ
   ВложенныйЗапрос.Подразделение КАК Подразделение,
   ВложенныйЗапрос.НоменклатурныеГруппы КАК НоменклатурныеГруппы,
   СУММА(ВложенныйЗапрос.СуммаОборотДт) КАК Расходы,
   ВложенныйЗапрос.СтатьиЗатрат КАК СтатьиЗатрат,
   СУММА(ВложенныйЗапрос1.Сумма) КАК Сумма
{ВЫБРАТЬ
   Подразделение,
   НоменклатурныеГруппы,
   Расходы,
   СтатьиЗатрат,
   Сумма}
ИЗ
   (ВЫБРАТЬ
       Проводки.Подразделение КАК Подразделение,
       Проводки.НоменклатурныеГруппы КАК НоменклатурныеГруппы,
       СУММА(Проводки.СуммаОборотДт) КАК СуммаОборотДт,
       Проводки.СтатьиЗатрат КАК СтатьиЗатрат
   {ВЫБРАТЬ
       Подразделение,
       НоменклатурныеГруппы,
       СуммаОборотДт}
   ИЗ
       (ВЫБРАТЬ
           ХозрасчетныйОстаткиИОбороты.Субконто1 КАК НоменклатурныеГруппы,
           ХозрасчетныйОстаткиИОбороты.Субконто2 КАК СтатьиЗатрат,
           ХозрасчетныйОстаткиИОбороты.Подразделение КАК Подразделение,
           СУММА(ХозрасчетныйОстаткиИОбороты.СуммаОборотДт) КАК СуммаОборотДт
       ИЗ
           РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&ДатаНач, &ДатаКон, , , Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ОсновноеПроизводство), , ) КАК ХозрасчетныйОстаткиИОбороты
       ГДЕ
           ХозрасчетныйОстаткиИОбороты.Подразделение <> &Подразделение
       
       СГРУППИРОВАТЬ ПО
           ХозрасчетныйОстаткиИОбороты.Субконто2,
           ХозрасчетныйОстаткиИОбороты.Субконто1,
           ХозрасчетныйОстаткиИОбороты.Подразделение) КАК Проводки
   ГДЕ
       Проводки.СуммаОборотДт <> 0
   {ГДЕ
       Проводки.Подразделение,
       Проводки.НоменклатурныеГруппы,
       Проводки.СтатьиЗатрат}
   
   СГРУППИРОВАТЬ ПО
       Проводки.НоменклатурныеГруппы,
       Проводки.Подразделение,
       Проводки.СтатьиЗатрат
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       ВложенныйЗапрос.Подразделение,
       ВложенныйЗапрос.НоменклатурныеГруппы,
       СУММА(ВложенныйЗапрос.СуммаОборотДт),
       ВложенныйЗапрос.СтатьиЗатрат
   {ВЫБРАТЬ
       Подразделение,
       НоменклатурныеГруппы,
       СуммаОборотДт}
   ИЗ
       (ВЫБРАТЬ
           ЗатратыПодразделенийОбороты.Подразделение КАК Подразделение,
           ЗатратыПодразделенийОбороты.НоменклатурнаяГруппа КАК НоменклатурныеГруппы,
           ЗатратыПодразделенийОбороты.СтатьяЗатрат КАК СтатьиЗатрат,
           СУММА(ЗатратыПодразделенийОбороты.Сумма20Оборот) КАК СуммаОборотДт
       {ВЫБРАТЬ
           Подразделение,
           НоменклатурныеГруппы,
           СтатьиЗатрат,
           СуммаОборотДт}
       ИЗ
           РегистрНакопления.ЗатратыПодразделений.Обороты(&ДатаНач, &ДатаКон, , ) КАК ЗатратыПодразделенийОбороты
       ГДЕ
           ЗатратыПодразделенийОбороты.Сумма20Оборот <> 0
           И ЗатратыПодразделенийОбороты.Подразделение <> &Подразделение
       {ГДЕ
           ЗатратыПодразделенийОбороты.НоменклатурнаяГруппа,
           ЗатратыПодразделенийОбороты.СтатьяЗатрат,
           ЗатратыПодразделенийОбороты.Подразделение}
       
       СГРУППИРОВАТЬ ПО
           ЗатратыПодразделенийОбороты.СтатьяЗатрат,
           ЗатратыПодразделенийОбороты.Подразделение,
           ЗатратыПодразделенийОбороты.НоменклатурнаяГруппа
       
       ОБЪЕДИНИТЬ ВСЕ
       
       ВЫБРАТЬ
           ЗатратыПодразделенийОбороты.Подразделение,
           ЗатратыПодразделенийОбороты.НоменклатурнаяГруппа,
           ЗатратыПодразделенийОбороты.СтатьяЗатрат,
           СУММА(ВЫБОР
                   КОГДА &Дт26
                       ТОГДА ЗатратыПодразделенийОбороты.Сумма26Оборот
                   ИНАЧЕ 0
               КОНЕЦ)
       {ВЫБРАТЬ
           Подразделение,
           НоменклатурныеГруппы,
           СтатьиЗатрат,
           СуммаОборотДт}
       ИЗ
           РегистрНакопления.ЗатратыПодразделений.Обороты(&ДатаНач, &ДатаКон, , ) КАК ЗатратыПодразделенийОбороты
       ГДЕ
           ЗатратыПодразделенийОбороты.Сумма26Оборот <> 0
           И ЗатратыПодразделенийОбороты.Подразделение <> &Подразделение
       {ГДЕ
           ЗатратыПодразделенийОбороты.НоменклатурнаяГруппа,
           ЗатратыПодразделенийОбороты.СтатьяЗатрат,
           ЗатратыПодразделенийОбороты.Подразделение}
       
       СГРУППИРОВАТЬ ПО
           ЗатратыПодразделенийОбороты.СтатьяЗатрат,
           ЗатратыПодразделенийОбороты.Подразделение,
           ЗатратыПодразделенийОбороты.НоменклатурнаяГруппа) КАК ВложенныйЗапрос
   ГДЕ
       ВложенныйЗапрос.СуммаОборотДт <> 0
   {ГДЕ
       ВложенныйЗапрос.Подразделение,
       ВложенныйЗапрос.НоменклатурныеГруппы,
       ВложенныйЗапрос.СтатьиЗатрат}
   
   СГРУППИРОВАТЬ ПО
       ВложенныйЗапрос.Подразделение,
       ВложенныйЗапрос.НоменклатурныеГруппы,
       ВложенныйЗапрос.СтатьиЗатрат) КАК ВложенныйЗапрос
       ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           ВложенныйЗапрос.НоменклатурныеГруппы КАК НоменклатурныеГруппы,
           ВложенныйЗапрос.Подразделение КАК Подразделение,
           ВложенныйЗапрос.Сумма КАК Сумма,
           ВложенныйЗапрос.СтатьиЗатрат КАК СтатьиЗатрат
       ИЗ
           (ВЫБРАТЬ
               РеализацияТоваровУслугУслуги.Субконто КАК НоменклатурныеГруппы,
               ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Комментарий, 0, 1000) КАК Подразделение,
               РеализацияТоваровУслугУслуги.Сумма КАК Сумма,
               NULL КАК СтатьиЗатрат
           ИЗ
               Документ.РеализацияТоваровУслуг.Услуги КАК РеализацияТоваровУслугУслуги
           ГДЕ
               РеализацияТоваровУслугУслуги.Ссылка.Дата МЕЖДУ &ДатаНач И &ДатаКон
               И РеализацияТоваровУслугУслуги.Ссылка.Организация = &Организация) КАК ВложенныйЗапрос) КАК ВложенныйЗапрос1
       ПО ВложенныйЗапрос.НоменклатурныеГруппы = ВложенныйЗапрос1.НоменклатурныеГруппы
           И (ВложенныйЗапрос1.Подразделение ПОДОБНО "%" + ВложенныйЗапрос.Подразделение.Наименование + "%")
{ГДЕ
   ВложенныйЗапрос.Подразделение,
   ВложенныйЗапрос.НоменклатурныеГруппы,
   ВложенныйЗапрос.СтатьиЗатрат}

СГРУППИРОВАТЬ ПО
   ВложенныйЗапрос.НоменклатурныеГруппы,
   ВложенныйЗапрос.Подразделение,
   ВложенныйЗапрос.СтатьиЗатрат

УПОРЯДОЧИТЬ ПО
   НоменклатурныеГруппы,
   Подразделение,
   СтатьиЗатрат
ИТОГИ
   СУММА(Расходы),
   СУММА(Сумма)
ПО
   ОБЩИЕ,
   НоменклатурныеГруппы,
   Подразделение,
   СтатьиЗатрат
{ИТОГИ ПО
   Подразделение,
   НоменклатурныеГруппы,
   СтатьиЗатрат}
АВТОУПОРЯДОЧИВАНИЕ
4 kabv
 
15.06.12
09:46
Группировка  РеализацияТоваровУслугУслуги по 2 уровням вклинивается в "основной 3-х уровневый" и по недостающему третьему дублируется.
5 Рэйв
 
15.06.12
09:51
>>Получается из второго запроса одна сумма умножается на количество вариантов

Сколько раз соединение найдет в правой таблице строку удовлетворяющую условию, столько раз ее и присоединит. У тебя похоже ном группы равны везде.
6 kabv
 
15.06.12
09:54
Это я знаю, хитрушка етсть какая-нибуть, чтобы ее занулить для вариантов третьей?
7 Рэйв
 
15.06.12
09:56
добавляй какое нибудь условие для соединения, чтобы соединие было уникальным для каждой строки правой таблицы