Имя: Пароль:
1C
1С v8
Группировка в запросе
0 lite777
 
26.09.22
16:08
Здравствуйте , есть запрос где пытаюсь вычислить остаток долга по заказу, не мойму почему консоль запросов пишет что поля - ЗаказыПокупателейОстатки.ЗаказаноОстаток,
    РасчетыСКлиентамиОстатки.СуммаОстаток, ЗаказКлиентаТовары.Сумма,  ЗаказКлиентаТовары.КоличествоУпаковок не входять в группировку, -ОШИБКА в ЗАПРОСЕ, мне нужно просуммировать строки из заказа
но количество взять и РГ -  ЗаказыПокупателейОстатки.ЗаказаноОстаток  * ЗаказКлиентаТовары.Сумма/ЗаказКлиентаТовары.КоличествоУпаковок КАК СуммаСтроки ,

ВЫБРАТЬ   РАЗРЕШЕННЫЕ
    СтатусыЗаказовКлиентовСрезПоследних.ЗаказКлиента  КАК Ссылка,
    СтатусыЗаказовКлиентовСрезПоследних.СтатусЗаказаКлиента КАК Статус,
    ЗаказыПокупателейОстатки.ЗаказаноОстаток  * ЗаказКлиентаТовары.Сумма/ЗаказКлиентаТовары.КоличествоУпаковок КАК СуммаСтроки ,
    РасчетыСКлиентамиОстатки.СуммаОстаток КАК СуммаОстаток
ПОМЕСТИТЬ ВТТОВАРЫ    

ИЗ
        РегистрСведений.СтатусыЗаказовКлиентов.СрезПоследних КАК СтатусыЗаказовКлиентовСрезПоследних
        
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПокупателей.Остатки(, ) КАК ЗаказыПокупателейОстатки
        ПО (СтатусыЗаказовКлиентовСрезПоследних.ЗаказКлиента = ЗаказыПокупателейОстатки.Заказ)
        
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
        ПО (ЗаказыПокупателейОстатки.Заказ = ЗаказКлиентаТовары.Ссылка)
            И (ЗаказКлиентаТовары.Номенклатура = ЗаказыПокупателейОстатки.Номенклатура)
            И (ЗаказКлиентаТовары.Характеристика = ЗаказыПокупателейОстатки.Характеристика)
    
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РасчетыСКлиентами.Остатки(,) КАК РасчетыСКлиентамиОстатки
        ПО ЗаказыПокупателейОстатки.Заказ=РасчетыСКлиентамиОстатки.ЗаказПокупателя
            
ГДЕ
    СтатусыЗаказовКлиентовСрезПоследних.СтатусЗаказаКлиента <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказаКлиента.Закрыт)
    И СтатусыЗаказовКлиентовСрезПоследних.СтатусЗаказаКлиента <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказаКлиента.Отменен)
    И СтатусыЗаказовКлиентовСрезПоследних.ЗаказКлиента.Магазин = &Магазин
    
СГРУППИРОВАТЬ ПО
    СтатусыЗаказовКлиентовСрезПоследних.ЗаказКлиента,
    СтатусыЗаказовКлиентовСрезПоследних.СтатусЗаказаКлиента,
    ЗаказыПокупателейОстатки.ЗаказаноОстаток,
    РасчетыСКлиентамиОстатки.СуммаОстаток,
    ЗаказКлиентаТовары.Сумма,
    ЗаказКлиентаТовары.КоличествоУпаковок
    
;    
ВЫБРАТЬ    
        ВТТОВАРЫ.Ссылка    ,    
        ВТТОВАРЫ.Ссылка.Дата КАК Дата,
    ВТТОВАРЫ.Ссылка.Номер КАК Номер,
    ВТТОВАРЫ.Ссылка.Магазин КАК Магазин,
    ВТТОВАРЫ.Ссылка.СуммаДокумента КАК СуммаДокумента,
    ВТТОВАРЫ.Ссылка.НомерЗаказаНаСайте КАК НомерЗаказаНаСайте,
    ВТТОВАРЫ.Ссылка.Клиент КАК Клиент,
    ВТТОВАРЫ.Ссылка.ТелефонКлиента КАК Телефон,
    ВТТОВАРЫ.Статус     ,
    
        ВТТОВАРЫ.Ссылка.СуммаДокумента-( ЕСТЬNULL( СУММА(СуммаСтроки),0)    -    ЕСТЬNULL(СуммаОстаток,0) ) КАК Оплачено ,
        ЕСТЬNULL( СУММА(СуммаСтроки),0)-ЕСТЬNULL(СуммаОстаток,0)     КАК ОстатокОплаты
ИЗ
     ВТТОВАРЫ    КАК ВТТОВАРЫ
СГРУППИРОВАТЬ ПО
     ВТТОВАРЫ.Ссылка,
     ВТТОВАРЫ.Статус     ,
     СуммаОстаток
    
УПОРЯДОЧИТЬ ПО     ВТТОВАРЫ.Ссылка.Дата УБЫВ
1 lite777
 
26.09.22
16:11
Вот Это все пришлось посадить в группировку
   ЗаказыПокупателейОстатки.ЗаказаноОстаток,
    РасчетыСКлиентамиОстатки.СуммаОстаток,
    ЗаказКлиентаТовары.Сумма,
    ЗаказКлиентаТовары.КоличествоУпаковок
2 lite777
 
26.09.22
16:36
похоже надо сделать СУММА(ЗаказыПокупателейОстатки.ЗаказаноОстаток  * ЗаказКлиентаТовары.Сумма/ЗаказКлиентаТовары.КоличествоУпаковок)
3 Мультук
 
гуру
26.09.22
17:38
(2)

Так как у тебя ЛЕВОЕ СОЕДИНЕНИЕ неплохо было бы использовать еще и ЕСТЬNULL
4 rudnitskij
 
26.09.22
18:05
(0) Левое соединение с виртуальными таблицами КАТЕГОРИЧЕСКИ НЕ РЕКОМЕНДУЕТСЯ во первых с точки зрения производительности
во вторых, оно может хрен пойми какие результаты давать. Остатки пишите во временную таблицу и соединение делайте уже с ней
5 Мультук
 
гуру
26.09.22
18:18
(4)

>>во вторых, оно может хрен пойми какие результаты давать.

Типа один раз 8 мешков, а другой 3 литра?
Можно пруф на данную ситуацию ?
6 mistеr
 
26.09.22
19:25
(5) Имеется в виду, что может выбираться не оптимальный план. Не всегда, а иногда. То есть нестабильность плана.
7 rudnitskij
 
26.09.22
23:12
(6) Именно так
8 rudnitskij
 
26.09.22
23:13
(5) судя по комментарию, вы еще не пришли к стадии "как же мало я знаю 1С") К ней приходят лет после 5 стажа