Имя: Пароль:
1C
1С v8
Помогите с запросом плз. Группировка и итоги.
,
0 OldMonk
 
05.11.15
09:12
Привет уважаемым коллегам.
Сразу скажу, в последнее время был занят исключительно внедрением БП КОРП, так что навыки кодерства несколько атрофировались. Поэтому плз не пинайте сильно, если у проблемы простое решение.
Задача следующая: в запросе найти данные по цене продажи и себестоимости определенной номенклатуры (этой первый уровень группировки), а также документы оплаты по ним (это второй уровень), вытащенные с помощью контрагента и договора. Проблема в том, что если в запросе поставить итоги, то цифры себестоимости и продажи умножаются на количество документов оплаты, а без итогов не работает группировка. Вот текст запроса:

"ВЫБРАТЬ
|    ХозрасчетныйОбороты.Субконто3 КАК Авто,
|    МИНИМУМ(ХозрасчетныйОбороты.КорСубконто1) КАК Контрагент,
|    МИНИМУМ(ХозрасчетныйОбороты.КорСубконто3) КАК ДокументПродажи,
|    ХозрасчетныйОборотыОплата.Субконто3 КАК ДокументОплатыПокупателя,
|    СУММА(ХозрасчетныйОбороты.СуммаОборотКт) КАК СтоимостьПродажи,
|    СУММА(ХозрасчетныйОборотыСебестоимость.СуммаОборотКт) КАК Себестоимость
|ИЗ
|    РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, , Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ВыручкаНеЕНВД), , Организация = &Организация, КорСчет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыСПокупателями), ) КАК ХозрасчетныйОбороты
|        ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, , Счет В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.Товары)), , Организация = &Организация, КорСчет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.СебестоимостьПродажНеЕНВД), ) КАК ХозрасчетныйОборотыСебестоимость
|        ПО ХозрасчетныйОбороты.Субконто3 = ХозрасчетныйОборотыСебестоимость.Субконто1
|        ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, , , Счет В ИЕРАРХИИ (&Сч62), , Организация = &Организация, КорСчет В ИЕРАРХИИ (&СчетаДС), ) КАК ХозрасчетныйОборотыОплата
|        ПО ХозрасчетныйОбороты.КорСубконто1 = ХозрасчетныйОборотыОплата.Субконто1
|            И ХозрасчетныйОбороты.КорСубконто2 = ХозрасчетныйОборотыОплата.Субконто2
|ГДЕ
|    ХозрасчетныйОбороты.Субконто3.НоменклатурнаяГруппа = &НГАвтомобили
|
|СГРУППИРОВАТЬ ПО
|    ХозрасчетныйОбороты.Субконто3,
|    ХозрасчетныйОборотыОплата.Субконто3
|
|ИТОГИ ПО
|    ОБЩИЕ,
|    Авто
|АВТОУПОРЯДОЧИВАНИЕ";

Все МИНИМУМы исключительно для того, чтобы эти данные не попадали в группировку. Конфа - БП 3.0.
1 asady
 
05.11.15
09:15
(0) вместо лефт джйна делай юнион
2 OldMonk
 
05.11.15
09:46
(1) но как тогда указать, по каким контрагентам и договорам взять данные по оплате? они же не все подряд нужны, а только те, что попали в первый запрос.
3 asady
 
05.11.15
10:03
(2)собери их в temptable как вариант
4 ultrannge89
 
05.11.15
10:09
А выбрать и сгруппировать, а во второй таблице уже упорядочить? Не?
5 ultrannge89
 
05.11.15
10:10
Стараюсь не делать 2 соединения в одной таблице...
6 OldMonk
 
05.11.15
10:46
(1) в общем, большое спасибо за идею! хоть и пришлось продублировать часть первого запроса во втором, но зато так работают и итоги и группировка. проблема только, что высвечивается пустая строка из первого запроса, т.к. там нет данных по документам оплаты, но ее можно убрать при выводе.

"ВЫБРАТЬ
|    ХозрасчетныйОбороты.Субконто3 КАК Авто,
|    МИНИМУМ(ХозрасчетныйОбороты.КорСубконто1) КАК Контрагент,
|    МИНИМУМ(ХозрасчетныйОбороты.КорСубконто3) КАК ДокументПродажи,
|    СУММА(ХозрасчетныйОбороты.СуммаОборотКт) КАК СтоимостьПродажи,
|    СУММА(ХозрасчетныйОборотыСебестоимость.СуммаОборотКт) КАК Себестоимость,
|    0 КАК ДокументОплатыПокупателя
|ИЗ
|    РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, , Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ВыручкаНеЕНВД), , Организация = &Организация, КорСчет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыСПокупателями), ) КАК ХозрасчетныйОбороты
|        ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, , Счет В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.Товары)), , Организация = &Организация, КорСчет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.СебестоимостьПродажНеЕНВД), ) КАК ХозрасчетныйОборотыСебестоимость
|        ПО ХозрасчетныйОбороты.Субконто3 = ХозрасчетныйОборотыСебестоимость.Субконто1
|ГДЕ
|    ХозрасчетныйОбороты.Субконто3.НоменклатурнаяГруппа = &НГАвтомобили
|
|СГРУППИРОВАТЬ ПО
|    ХозрасчетныйОбороты.Субконто3
|
|ОБЪЕДИНИТЬ
|
|ВЫБРАТЬ
|    ХозрасчетныйОбороты.Субконто3,
|    ХозрасчетныйОбороты.КорСубконто1,
|    ХозрасчетныйОбороты.КорСубконто3,
|    0,
|    0,
|    ХозрасчетныйОборотыОплата.Субконто3
|ИЗ
|    РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, , Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ВыручкаНеЕНВД), , Организация = &Организация, КорСчет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыСПокупателями), ) КАК ХозрасчетныйОбороты
|        ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, , , Счет В ИЕРАРХИИ (&Сч62), , Организация = &Организация, КорСчет В ИЕРАРХИИ (&СчетаДС), ) КАК ХозрасчетныйОборотыОплата
|        ПО ХозрасчетныйОбороты.КорСубконто1 = ХозрасчетныйОборотыОплата.Субконто1
|            И ХозрасчетныйОбороты.КорСубконто2 = ХозрасчетныйОборотыОплата.Субконто2
|ГДЕ
|    ХозрасчетныйОбороты.Субконто3.НоменклатурнаяГруппа = &НГАвтомобили
|ИТОГИ ПО
|    ОБЩИЕ,
|    Авто";
Основная теорема систематики: Новые системы плодят новые проблемы.