Имя: Пароль:
1C
1С v8
Помогите с сортировкой по дате оприходования
0 diabolo
 
12.05.16
16:17
Добрый день подскажите, как можно отсортировать по дате оприходования данные в запросе? Добавлял уже вложенный запрос, с группировкой по минимум датаоприходования, но он светит для всех позиций одну минимальную дату. Подскажите что не так?


ВЫБРАТЬ
    ОстаткиТоваров.Номенклатура КАК Номенклатура,
    ОстаткиТоваров.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    ОстаткиТоваров.Номенклатура.ЕдиницаХраненияОстатков КАК ЕдиницаХранения,
    ОстаткиТоваров.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК КоэффициентЕдиницыХранения,
    ОстаткиТоваров.ЦенаВРознице КАК ЦенаВРознице,
    ВЫБОР
        КОГДА СУММА(ОстаткиПартий.КоличествоОстаток) = 0
                ИЛИ СУММА(ОстаткиПартий.КоличествоОстаток) ЕСТЬ NULL
            ТОГДА 0
        ИНАЧЕ СУММА(ОстаткиПартий.СтоимостьОстаток) * СУММА(ОстаткиТоваров.КоличествоОстаток) / СУММА(ОстаткиПартий.КоличествоОстаток)
    КОНЕЦ КАК Сумма,
    СУММА(ОстаткиТоваров.КоличествоОстаток) КАК Количество,
    ВложенныйЗапрос.ДокументОприходованияДата КАК ДокументОприходованияДата
ИЗ
    РегистрНакопления.ТоварыВНТТ.Остатки(&МоментДокумента, Склад = &Склад) КАК ОстаткиТоваров
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.Остатки(&МоментДокумента, Склад = &ПартионныйСклад) КАК ОстаткиПартий
        ПО ОстаткиТоваров.Номенклатура = ОстаткиПартий.Номенклатура
            И ОстаткиТоваров.ХарактеристикаНоменклатуры = ОстаткиПартий.ХарактеристикаНоменклатуры
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ПартииТоваровНаСкладах.Номенклатура КАК Номенклатура,
            ПартииТоваровНаСкладах.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
            МИНИМУМ(ПартииТоваровНаСкладах.ДокументОприходования.Дата) КАК ДокументОприходованияДата
        ИЗ
            РегистрНакопления.ПартииТоваровНаСкладах КАК ПартииТоваровНаСкладах
        
        СГРУППИРОВАТЬ ПО
            ПартииТоваровНаСкладах.Номенклатура,
            ПартииТоваровНаСкладах.ХарактеристикаНоменклатуры) КАК ВложенныйЗапрос
        ПО ОстаткиТоваров.Номенклатура = ВложенныйЗапрос.Номенклатура
            И ОстаткиТоваров.ХарактеристикаНоменклатуры = ВложенныйЗапрос.ХарактеристикаНоменклатуры

СГРУППИРОВАТЬ ПО
    ОстаткиТоваров.Номенклатура,
    ОстаткиТоваров.ХарактеристикаНоменклатуры,
    ОстаткиТоваров.ЦенаВРознице,
    ОстаткиТоваров.Номенклатура.ЕдиницаХраненияОстатков,
    ОстаткиТоваров.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент,
    ВложенныйЗапрос.ДокументОприходованияДата

УПОРЯДОЧИТЬ ПО
    ДокументОприходованияДата
1 diabolo
 
12.05.16
17:04
Плз уже всю голову сломал как отсортировать?
2 Nuobu
 
12.05.16
17:05
А шо нужно?
3 HEKPOH
 
12.05.16
17:08
(0) в Выбрать добавить поле с датой оприходования
4 HEKPOH
 
12.05.16
17:09
+(3) убрав это " МИНИМУМ(ПартииТоваровНаСкладах.ДокументОприходования.Дата) КАК ДокументОприходованияДата"
5 SergTheGreat
 
12.05.16
17:40
Делал нечто похожее, типа: "остатки товаров с датами их самых ранних приходов". Принцип как и в твоем запросе, только через временную таблицу. Все работает, даты выдает правильные.

ВЫБРАТЬ
    ТоварыНаСкладах.Номенклатура,
    МИНИМУМ(ТоварыНаСкладах.Регистратор.Дата) КАК РегистраторДата
ПОМЕСТИТЬ втДвижения
ИЗ
    РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
СГРУППИРОВАТЬ ПО
    ТоварыНаСкладах.Номенклатура
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ТоварыНаСкладахОстатки.Номенклатура,
    СУММА(ТоварыНаСкладахОстатки.КоличествоОстаток) КАК КоличествоОстаток,
    втДвижения.РегистраторДата
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ втДвижения КАК втДвижения
        ПО ТоварыНаСкладахОстатки.Номенклатура = втДвижения.Номенклатура
СГРУППИРОВАТЬ ПО
    ТоварыНаСкладахОстатки.Номенклатура,
    втДвижения.РегистраторДата
6 diabolo
 
12.05.16
20:30
(5) у меня дату выдает самого первого документа, который был
7 diabolo
 
12.05.16
20:31
(3) если не группировать выдает целую кучу строк
8 HEKPOH
 
12.05.16
22:10
(7) так и должно быть. если требуется получить все приходы, отсортированные по дате (с остатком по партии), то к документу оприходования никак нельзя применять агрегатную функцию. из (0), вроде, это следует (я не про запрос, а про постановку задачи)
9 diabolo
 
12.05.16
22:21
(8) Фишка в том, что заполняется документ инвентаризация товаров на складе,заполняется все верно, но нужно чтобы когда заполнялся, то чтобы строки выстроились в порядке как вводились документы оприходования, потому и мысли как же все таки их отсортировать по дате оприходования. Как бы их не волнует можно или нельзя, им надо так и все.
10 HEKPOH
 
12.05.16
22:58
(9) т.е. должна быть группировка "номенклатура + характеристика"? и по данной группировке должна быть самая ранняя по дате партия, не списанная в ноль, по которой будет отсортирована тч в Инвентаризации?
11 HEKPOH
 
12.05.16
23:04
+(10) если да, то
1. группируешь виртуальную таблицу остатков по минимум(Регистратор.Дата). помещаешь во временную таблицу
2. временную таблицу внутренним соединением прицепляешь к виртуальной таблице остатков по равенству номенклатуры и характеристики. и будет тебе счастье
12 diabolo
 
13.05.16
08:36
(11) так я так и делал, выдает всем позициям дату самого первого документа.
13 diabolo
 
13.05.16
08:41
Описываю ситуацию. Например:
Было поступление товаров на склад 10 числа товар 1 с ценой 120. Следующий раз поступление этого товара на этот же склад 14 числа, но уже по цене 110, и 3 поступление 28 числа по цене 105. Если ничего не менять, то в инвентаризацию попадают строки в таком порядке, 1 строка с ценой 105, вторая с ценой 110, 3 с ценой 120. Необходимо отсортировать по дате оприходывания, т.е 1 строка должна быть 120, вторая 110 и 3-я 105.
14 diabolo
 
13.05.16
08:44
(13) а во всех вариантах, что я делал он берет дату оприходования всегда 10 число.
15 diabolo
 
13.05.16
09:40
ну что есть какие то идеи как побороть сие чудо?
16 SergTheGreat
 
13.05.16
12:50
(14) Блин, я то думал у тебя для всех номенклатур одна и та же дата выводится. А так твой запрос абсолютно правильно отрабатывает!
Ты минимальную дату документа определяешь только в разрезе номенклатур и характеристик, а цены у тебя только в основной выборке появляются. Соответственно для ВСЕХ цен ОДНОЙ связки номенклатура+характеристика и будет ОДНА дата.
17 catena
 
13.05.16
13:31
(15)Добавить группировку в разрезе цены.
18 aleks_default
 
13.05.16
14:07
(13) походу ты партию в запросе забыл вытащить
19 diabolo
 
13.05.16
14:44
(16) И как быть в этом случае?
20 diabolo
 
13.05.16
19:04
(16) А как сделать чтобы для каждой цены была своя дата?
21 diabolo
 
14.05.16
13:05
Помогите кто то. Можно сделать чтобы было отдельно для каждой цены своя дата? Как такое сделать? Уже все сломал себе весь мозг уже путаюсь, не могу сообразить.