Имя: Пароль:
1C
1С v8
Как сортируется запрос к остаткам?
0 Klesk
 
25.08.13
07:37
ВЫБРАТЬ
    ОбеспечениеЗаказовОстатки.Номенклатура,
    ОбеспечениеЗаказовОстатки.Склад,
    ОбеспечениеЗаказовОстатки.Назначение,
    ОбеспечениеЗаказовОстатки.КЗаказуОстаток КАК КоличествоОбеспечить
ИЗ
    РегистрНакопления.ОбеспечениеЗаказов.Остатки КАК ОбеспечениеЗаказовОстатки
ГДЕ
    ОбеспечениеЗаказовОстатки.Склад = &Склад
    И ТИПЗНАЧЕНИЯ(ОбеспечениеЗаказовОстатки.Назначение.Заказ) = ТИП(Документ.ЗаказКлиента)

по какому полю? или начинает выбирать с первых записей в регистре?
1 Rie
 
25.08.13
07:42
(0) Как попало. Нужна сортировка - используй УПОРЯДОЧИТЬ ПО.
2 Klesk
 
25.08.13
07:46
нужно упорядочить по записи,
так верно?

ВЫБРАТЬ
    ОбеспечениеЗаказовОстаткиИОбороты.Номенклатура,
    ОбеспечениеЗаказовОстаткиИОбороты.Склад,
    ОбеспечениеЗаказовОстаткиИОбороты.Назначение,
    ОбеспечениеЗаказовОстаткиИОбороты.ПотребностьКонечныйОстаток
ИЗ
    РегистрНакопления.ОбеспечениеЗаказов.ОстаткиИОбороты(, , Запись, , ) КАК ОбеспечениеЗаказовОстаткиИОбороты
ГДЕ
    ОбеспечениеЗаказовОстаткиИОбороты.Склад = &Склад
    И ТИПЗНАЧЕНИЯ(ОбеспечениеЗаказовОстаткиИОбороты.Назначение.Заказ) = ТИП(Документ.ЗаказКлиента)

УПОРЯДОЧИТЬ ПО
    ОбеспечениеЗаказовОстаткиИОбороты.Период
3 Klesk
 
25.08.13
07:48
блин, в два раза дольше выполняется
4 Klesk
 
25.08.13
08:02
правильно хоть?
5 Rie
 
25.08.13
08:06
(4) Кто результат запроса видит и задачу знает - тот и решает, правильно или нет.
6 Klesk
 
25.08.13
08:06
не , фигня получается, попадвют отгруженные заказы
7 Rie
 
25.08.13
08:08
(6) Это от сортировки не зависит
8 Klesk
 
25.08.13
08:12
это зависит от того выбираем остатки или движения
9 Klesk
 
25.08.13
08:16
(1) а интересно, у "как попало" принцип то должен какой нибудь быть
10 Rie
 
25.08.13
08:19
Ага. Декомпилируй SQL-сервер - и узнаешь :-)
(SQL - машина умная, кучу оптимизаций проводит)
11 Klesk
 
25.08.13
08:31
(10) не соглашусь, что умная, такой запрос мне запорола )
12 Klesk
 
25.08.13
08:32
+ (11) тем более что щас файловая
13 Rie
 
25.08.13
08:42
(12) 1С - тоже умная.
14 hhhh
 
25.08.13
08:43
(12) тогда откройте сам регистр и посмотрите какой нибудь из этих отгруженных заказов
15 hhhh
 
25.08.13
08:56
и у вас в запросе нет заказа, как вы определили, что заказы попали?
16 Klesk
 
25.08.13
08:58
походу сортировка происходит по внутреннему идентификатору первого поля

(15) Назначение.Заказ
17 Rie
 
25.08.13
09:00
(16) Работаешь с языком запросов - думай в терминах (неупорядоченных) множеств.
Если твой запрос (якобы) зависит от того, как там "внутри" что-то якобы "сортируется" - выкинь этот запрос на фиг и напиши правильный.
18 Klesk
 
25.08.13
09:36
вроде разобрался, спасибо

ВЫБРАТЬ
    ОбеспечениеЗаказовОстатки.Номенклатура,
    ОбеспечениеЗаказовОстатки.Склад,
    ОбеспечениеЗаказовОстатки.Назначение,
    ОбеспечениеЗаказовОстатки.КЗаказуОстаток
ИЗ
    РегистрНакопления.ОбеспечениеЗаказов.Остатки(, ) КАК ОбеспечениеЗаказовОстатки
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ГрафикДвиженияТоваров.Остатки КАК ГрафикДвиженияТоваровОстатки
        ПО ОбеспечениеЗаказовОстатки.Номенклатура = ГрафикДвиженияТоваровОстатки.Номенклатура
            И ОбеспечениеЗаказовОстатки.Склад = ГрафикДвиженияТоваровОстатки.Склад
            И ОбеспечениеЗаказовОстатки.Назначение = ГрафикДвиженияТоваровОстатки.Назначение

УПОРЯДОЧИТЬ ПО
    ГрафикДвиженияТоваровОстатки.ДатаСобытия
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан