База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как исправить ошибку с отсутствием группировки в запросе с агрегатами в 1С?
- В этой теме 1 ответ, 2 участника, последнее обновление 8 минут назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
7 сентября 2026 в 20:08 #38598
А, нет. Группировок нет:
(ВЫБРАТЬ
Продажи.Период КАК Период,
Продажи.Подразделение КАК Подразделение,
Продажи.Менеджер КАК Менеджер,
Продажи.ЗаказКлиента КАК ЗаказКлиента,
Оплаты.РасчетныйДокумент КАК РасчетныйДокумент,
Продажи.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
Продажи.ВидЗапасов КАК ВидЗапасов,
Продажи.ТипЗапасов КАК ТипЗапасов,
Продажи.СуммаВыручки КАК СуммаВыручки,
Продажи.СуммаВыручкиБезНДС КАК СуммаВыручкиБезНДС,
Продажи.СуммаВыручкиРегл КАК СуммаВыручкиРегл,
Продажи.Количество КАК Количество,
СУММА(Продажи.Количество * ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0)) КАК Себестоимость,
СУММА(Продажи.Количество * ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0)) КАК СебестоимостьБезНДС,
СУММА(Продажи.Количество * ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0)) КАК СебестоимостьРегл,
Продажи.ДопРасходы КАК СуммаДополнительныхРасходов,
Продажи.ДопРасходыБезНДС КАК СуммаДополнительныхРасходовБезНДС,
Продажи.ДопРасходыРегл КАК СуммаДополнительныхРасходовРегл,
Продажи.РасходыНаПродажуСНДС КАК РасходыНаПродажуСНДС,
Продажи.РасходыНаПродажуБезНДС КАК РасходыНаПродажуБезНДС,
Продажи.РасходыНаПродажуРегл КАК РасходыНаПродажуРегл
ИЗ
РегистрНакопления.ВыручкаИСебестоимостьПродаж КАК Продажи
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Оплаты КАК Оплаты
ПО (Оплаты.РасчетныйДокумент = Продажи.ЗаказКлиента)
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры25.СрезПоследних(&ДатаМакс, &ВидЦены) КАК ЦеныНоменклатуры
ПО Продажи.АналитикаУчетаНоменклатуры.Номенклатура = ЦеныНоменклатуры.Номенклатура
И Продажи.АналитикаУчетаНоменклатуры.Характеристика = ЦеныНоменклатуры.ХарактеристикаЦО
ГДЕ
НЕ Продажи.ХозяйственнаяОперация В (ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратТоваровОтКлиента), ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратТоваровОтКлиентаПрошлыхПериодов))ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
Продажи.Период,
Продажи.Подразделение,
Продажи.Менеджер,
Продажи.ЗаказКлиента,
Оплаты.РасчетныйДокумент,
Продажи.АналитикаУчетаНоменклатуры,
Продажи.ВидЗапасов,
Продажи.ТипЗапасов,
Продажи.СуммаВыручки,
Продажи.СуммаВыручкиБезНДС,
Продажи.СуммаВыручкиРегл,
Продажи.Количество,
СУММА(Продажи.Количество * ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0)),
СУММА(Продажи.Количество * ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0)),
СУММА(Продажи.Количество * ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0)),
Продажи.ДопРасходы,
Продажи.ДопРасходыБезНДС,
Продажи.ДопРасходыРегл,
Продажи.РасходыНаПродажуСНДС,
Продажи.РасходыНаПродажуБезНДС,
Продажи.РасходыНаПродажуРегл
ИЗ
РегистрНакопления.ВыручкаИСебестоимостьПродаж КАК Продажи
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Оплаты КАК Оплаты
ПО (Оплаты.РасчетныйДокумент = Продажи.ДокументДвижения)
И (Оплаты.РасчетныйДокумент <> Продажи.ЗаказКлиента)
И (Оплаты.ЗаказКлиента = Продажи.ЗаказКлиента
ИЛИ Оплаты.ЗаказКлиента ЕСТЬ NULL)
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры25.СрезПоследних(&ДатаМакс, &ВидЦены) КАК ЦеныНоменклатуры
ПО Продажи.АналитикаУчетаНоменклатуры.Номенклатура = ЦеныНоменклатуры.Номенклатура
И Продажи.АналитикаУчетаНоменклатуры.Характеристика = ЦеныНоменклатуры.ХарактеристикаЦО
ГДЕ
НЕ Продажи.ХозяйственнаяОперация В (ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СторноРеализации), ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратТоваровОтКлиента), ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратТоваровОтКлиентаПрошлыхПериодов))ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
Продажи.Период,
Продажи.Подразделение,
Продажи.Менеджер,
Продажи.ЗаказКлиента,
Оплаты.РасчетныйДокумент,
Продажи.АналитикаУчетаНоменклатуры,
Продажи.ВидЗапасов,
Продажи.ТипЗапасов,
Продажи.СуммаВыручки,
Продажи.СуммаВыручкиБезНДС,
Продажи.СуммаВыручкиРегл,
Продажи.Количество,
СУММА(Продажи.Количество * ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0)) КАК Себестоимость,
СУММА(Продажи.Количество * ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0)) КАК СебестоимостьБезНДС,
СУММА(Продажи.Количество * ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0)) КАК СебестоимостьРегл,
Продажи.ДопРасходы,
Продажи.ДопРасходыБезНДС,
Продажи.ДопРасходыРегл,
Продажи.РасходыНаПродажуСНДС,
Продажи.РасходыНаПродажуБезНДС,
Продажи.РасходыНаПродажуРегл
ИЗ
РегистрНакопления.ВыручкаИСебестоимостьПродаж КАК Продажи
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Оплаты КАК Оплаты
ПО (Оплаты.РасчетныйДокумент = Продажи.Регистратор)
И (Оплаты.РасчетныйДокумент <> Продажи.ЗаказКлиента)
И (Оплаты.РасчетныйДокумент <> Продажи.ДокументДвижения)
И (Оплаты.ЗаказКлиента = Продажи.ЗаказКлиента
ИЛИ Оплаты.ЗаказКлиента ЕСТЬ NULL)
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры25.СрезПоследних(&ДатаМакс, &ВидЦены) КАК ЦеныНоменклатуры
ПО Продажи.АналитикаУчетаНоменклатуры.Номенклатура = ЦеныНоменклатуры.Номенклатура
И Продажи.АналитикаУчетаНоменклатуры.Характеристика = ЦеныНоменклатуры.ХарактеристикаЦО
ГДЕ
НЕ Продажи.ХозяйственнаяОперация В (ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СторноРеализации), ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратТоваровОтКлиента), ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратТоваровОтКлиентаПрошлыхПериодов))) КАК Продажи
{ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.КлючиАналитикиУчетаНоменклатуры КАК АналитикаНоменклатуры
ПО Продажи.АналитикаУчетаНоменклатуры = АналитикаНоменклатуры.Ссылка} -
7 сентября 2026 в 20:08 #38599
Если в вашем запросе нет оператора ГРУППИРОВАТЬ ПО, а в выборке есть агрегатные функции (СУММА), то 1С выдаст ошибку «Поле не входит в группу», потому что агрегатные функции требуют группировки.
В вашем случае в выборке есть поля без агрегатных функций (например, Продажи.Период, Продажи.Подразделение и т.д.) и одновременно есть СУММА(…). Это невозможно без группировки.
Чтобы исправить ошибку, нужно:
1. Добавить оператор ГРУППИРОВАТЬ ПО с перечислением всех полей, которые не агрегируются.
2. Либо убрать агрегатные функции, если они не нужны.
В вашем случае, если хотите получить сумму себестоимости по каждой строке, то нужно добавить группировку по всем полям, которые есть в выборке без агрегатных функций.
Пример:
|СГРУППИРОВАТЬ ПО
| Продажи.Период,
| Продажи.Подразделение,
| Продажи.Менеджер,
| Продажи.ЗаказКлиента,
| Оплаты.РасчетныйДокумент,
| Продажи.АналитикаУчетаНоменклатуры,
| Продажи.ВидЗапасов,
| Продажи.ТипЗапасов,
| Продажи.СуммаВыручки,
| Продажи.СуммаВыручкиБезНДС,
| Продажи.СуммаВыручкиРегл,
| Продажи.Количество,
| Продажи.ДопРасходы,
| Продажи.ДопРасходыБезНДС,
| Продажи.ДопРасходыРегл,
| Продажи.РасходыНаПродажуСНДС,
| Продажи.РасходыНаПродажуБезНДС,
| Продажи.РасходыНаПродажуРеглЕсли же вы хотите агрегировать и эти поля, то нужно заменить их на агрегатные функции (например, МАКСИМУМ, МИНИМУМ, СРЕДНЕЕ) или убрать из выборки.
—
Итого: в запросе с агрегатами обязательно должна быть группировка по всем неагрегированным полям. Иначе будет ошибка.
Если нужна помощь с конкретным запросом — приложите полный текст, я помогу оформить правильно.
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.