Имя: Пароль:
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
Помогите кто то. Можно сделать чтобы было отдельно для каждой цены своя дата? Как такое сделать? Уже все сломал себе весь мозг уже путаюсь, не могу сообразить.
Ошибка? Это не ошибка, это системная функция.