|
Скверно работает упорядочивание в запросе | ☑ | ||
---|---|---|---|---|
0
Prog111
16.02.16
✎
09:02
|
Делаю запрос, в котором собираю остатки товаров исходя из регистра "Партии товаров на складах". На соединение с документами прихода внимание не обращайте - мне это нужно, чтобы вытаскивать менеджера из документа поступления товаров.
Далее, хочу отсортировать остатки по сроку годности, взятому из серии номенклатуры. Делаю "Упорядочить" в запросе - сначала по организации, потом по сроку годности. Результат вывожу по группировкам: 1) Общие итоги 2) Организация 3) Номенклатура 4) Серия номенклатуры И вот такая фигня - при выводе группировки по первой организации всё сортируется отлично - товары выводятся с упорядочением по сроку годности. Но когда выводится товар по второй организации - то сортировка товаров идет как попало, даже не могу увидеть закономерность. Может, подскажете, в чем проблема... Вот текст запроса: |ВЫБРАТЬ | ПоступлениеТоваровУслугТовары.Ссылка.Организация КАК Организация, | ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура, | ПоступлениеТоваровУслугТовары.СерияНоменклатуры КАК СерияНоменклатуры, | СУММА(ПартииТоваровНаСкладахОстатки.КоличествоОстаток) КАК КоличествоОстаток, | СУММА(ПартииТоваровНаСкладахОстатки.СтоимостьОстаток) КАК СтоимостьОстаток, | СУММА(ПартииТоваровНаСкладахОстатки.СуммаУчетнаяОстаток) КАК СуммаУчетнаяОстаток, | ПоступлениеТоваровУслугТовары.Ссылка КАК ДокументОприходования |ИЗ | РегистрНакопления.ПартииТоваровНаСкладах.Остатки(&НаДату, ) КАК ПартииТоваровНаСкладахОстатки | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары | ПО ПартииТоваровНаСкладахОстатки.ДокументОприходования = ПоступлениеТоваровУслугТовары.Ссылка | И ПартииТоваровНаСкладахОстатки.Номенклатура = ПоступлениеТоваровУслугТовары.Номенклатура | И ПартииТоваровНаСкладахОстатки.СерияНоменклатуры = ПоступлениеТоваровУслугТовары.СерияНоменклатуры | |СГРУППИРОВАТЬ ПО | ПоступлениеТоваровУслугТовары.Ссылка.Организация, | ПоступлениеТоваровУслугТовары.Номенклатура, | ПоступлениеТоваровУслугТовары.СерияНоменклатуры, | ПартииТоваровНаСкладахОстатки.КоличествоОстаток, | ПартииТоваровНаСкладахОстатки.СтоимостьОстаток, | ПартииТоваровНаСкладахОстатки.СуммаУчетнаяОстаток, | ПоступлениеТоваровУслугТовары.Ссылка | |УПОРЯДОЧИТЬ ПО | ПоступлениеТоваровУслугТовары.Ссылка.Организация.Наименование, | ПоступлениеТоваровУслугТовары.СерияНоменклатуры.СрокГодности |ИТОГИ | СУММА(КоличествоОстаток), | СУММА(СтоимостьОстаток), | СУММА(СуммаУчетнаяОстаток) |ПО | ОБЩИЕ, | Организация, | Номенклатура, | СерияНоменклатуры |
|||
1
vip03
16.02.16
✎
09:05
|
|УПОРЯДОЧИТЬ ПО
| ПоступлениеТоваровУслугТовары.Ссылка.Организация.Наименование, | ПоступлениеТоваровУслугТовары.СерияНоменклатуры.СрокГодности а где здесь упорядочивание по товарам? |
|||
2
Prog111
16.02.16
✎
09:10
|
(1) А по товарам (наименованию) в этом запросе не нужно упорядочивание. Подразумевается (мною), что таблица отсортируется по срокам годности, и в зависимости от сроков годности будет выводиться сам товар.
|
|||
3
Apokalipsec
16.02.16
✎
09:12
|
(2) Так зачем упорядочивание по наименованию организации вытянутое через ж?
|
|||
4
marvak
16.02.16
✎
09:13
|
(0)
срок годности то в запросе выведи |
|||
5
ptiz
16.02.16
✎
09:14
|
(2) Сам же написал в запросе
ИТОГИ ПО .. ПО | ОБЩИЕ, | Организация, | Номенклатура, | СерияНоменклатуры Поэтому сначала по товарам сортирует, причем по их ID, а внутри товара - серии пойдут по срокам |
|||
6
Prog111
16.02.16
✎
09:23
|
(5) Группирует по товарам, да. Но сортировать же запрос должен по сроку годности?
То есть если есть товары с несколькими сериями с разными сроками годности - то сначала выводится товар с самой ранней серией, по нему выводятся все серии (пусть и с более поздними сроками), затем товар с серией более поздней, чем самая ранняя серия первого товара. |
|||
7
Prog111
16.02.16
✎
09:34
|
Например, должно выводиться так:
1) Цитрамон - 01.01.2017 - 31.06.2017 - 31.12.2018 1) Но-шпа - 01.03.2017 - 31.07.2017 - 31.12.2017 1) Витамин А - 01.07.2017 - 31.08.2017 - 31.12.2019 То есть я упорядочиваю по сроку годности и получаю: - 01.01.2017 (Цитрамон) - 01.03.2017 (Но-шпа) - 31.06.2017 (Цитрамон) - 01.07.2017 (Витамин А) - 31.08.2017 (Витамин А) - 31.12.2017 (Но-шпа) - 31.12.2018 (Цитрамон) - 31.12.2019 (Витамин А) --------------------------------------- И вот что в итоге получается - при выводе результата по первой организации всё так и выходит, как надо. А когда начинает выводиться результат запроса по второй организации - то вывод идёт как попало. |
|||
8
ObjectRelation Model
16.02.16
✎
09:36
|
может там сроков годности не указано?
|
|||
9
mehfk
16.02.16
✎
09:37
|
Для осознания всей тупости происходящего предлагаю проверить чему равно значение поля "СрокГодности" на уровне группировки "Номенклатура".
|
|||
10
Prog111
16.02.16
✎
09:38
|
(8) Нет, сроки годности есть. С отсутствующими выводятся в первую очередь.
|
|||
11
Prog111
16.02.16
✎
09:40
|
(3) Иначе ругается на неоднозначность поля.
|
|||
12
ObjectRelation Model
16.02.16
✎
09:41
|
вынеси поле в ВЫБРАТЬ и в ИТОГИ
|
|||
13
Prog111
16.02.16
✎
09:44
|
(9) Оно равно NULL, что логично)
Но ведь по идее результат запроса уже должен упорядочиться до вывода группировок. |
|||
14
mehfk
16.02.16
✎
09:44
|
Кому должен?
|
|||
15
Prog111
16.02.16
✎
11:31
|
(14) Разве нет?
Допустим, есть запрос с группировкой по товарам и по сериям, с упорядочением по наименованию товаров. Когда начинает выводиться группировка товаров - должно же быть известно уже, какой товар должен выйти первым - то есть таблица из запроса уже должна упорядочиться. Я, конечно, могу ошибаться... |
|||
16
marvak
16.02.16
✎
11:45
|
Сначала идет группировка по итогам, а внутри каждой группы из итогов уже сортировка.
то есть в пределах каждой номенклатуры упорядочится по сроку годности, но не в пределах организации. |
|||
17
Prog111
16.02.16
✎
12:40
|
(16) Как ни странно, но в пределах первой организации тоже отсортировалось по сроку годности.
|
|||
18
mehfk
16.02.16
✎
12:46
|
Тормозуху что-ли бухал на выходных?
|
|||
19
Prog111
16.02.16
✎
12:47
|
(18) Ты что такой агрессивный?
|
|||
20
Cyberhawk
16.02.16
✎
12:47
|
Добавь в плоскую таблицу для каждой номенклатурной позиции еще одно поле: самая ранняя дата серии
По нему и упорядочивай в группировке "Номенклатура" |
|||
21
Prog111
16.02.16
✎
12:56
|
(20) Это через вложенный запрос можно сделать?
|
|||
22
Eugene_life
16.02.16
✎
12:59
|
(0) Я бы убрал итоги вообще, результат нынешнего запроса поместил в промежуточную виртуальную таблицу и уже в ней отсортировал поля так, как нужно.
|
|||
23
mehfk
16.02.16
✎
13:02
|
(19) Я добрый.
|
|||
24
Cyberhawk
16.02.16
✎
13:04
|
(21) Левое соединение к таблице "Номенклатура" - "Дата серии", свернутой по номенклатуре и минимуму даты
|
|||
25
mehfk
16.02.16
✎
13:14
|
Читай (12) и не городи велосипедов.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |