Имя: Пароль:
1C
1С v8
Опустить пустые строки вниз, в запросе
0 OASU
 
21.10.11
11:37
В запросе две таблицы соединяются по номеру строки и заказу, и только благодаря этому данные в левой части соответсвуют данным в правой таблице, по размерам номенклатуры.
Но бывают и пустые строки в одной из таблиц, например:
Номенклатура 22 - "0"
Номенклатура 11 - НоменклатураМ 11
Номенклатура 33 - НоменклатураМ 33
И эта пустая часть бывает выходит на верх, а нужно что бы всегда вниз сдвигались. Подскажите как это сделать?

   Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
   Запрос.Текст = "ВЫБРАТЬ
   |    ТЗ.*
   |ПОМЕСТИТЬ ТЗ
   |ИЗ
   |    &ТЗ КАК ТЗ
   |;
   |
   |ВЫБРАТЬ
   |    ТЗ2.*
   |ПОМЕСТИТЬ ТЗ2
   |ИЗ
   |    &ТЗ2 КАК ТЗ2
   |;
   |ВЫБРАТЬ РАЗЛИЧНЫЕ
   | ЕстьNull(ТЗ.Заказ, ТЗ2.Заказ) КАК Заказ,    
   | Выбор Когда ТЗ.НоменклатураМ  ЕСТЬ NULL Тогда 0 Иначе ТЗ.НоменклатураМ Конец КАК НоменклатураМ,
   | Выбор Когда ТЗ2.Номенклатура  ЕСТЬ NULL Тогда 0 Иначе ТЗ2.Номенклатура Конец КАК Номенклатура,
   | ТЗ.ЕдИзмМ, ТЗ2.ЕдИзм,
   | ТЗ2.Артикул, ТЗ.Артикул,
   | ТЗ.НомерСтрокиМ, ТЗ2.НомерСтроки,
   | ТЗ2.НачальныйОстаток, ТЗ.НачальныйОстатокМ,
   | ТЗ2.КонечныйОстаток, ТЗ.КонечныйОстатокМ,
   | ТЗ2.Приход, ТЗ.ПриходМ, ТЗ2.Расход, ТЗ.РасходМ
   |    
   |ИЗ
   |  ТЗ КАК ТЗ
   |     Полное СОЕДИНЕНИЕ ТЗ2 КАК ТЗ2
   |  ПО ТЗ.НомерСтрокиМ = ТЗ2.НомерСтроки И ТЗ.Заказ = ТЗ2.Заказ    
   |
   |ИТОГИ
   |    МАКСИМУМ(Номенклатура),МАКСИМУМ(НоменклатураМ),
   |    МАКСИМУМ(ТЗ.Артикул), МАКСИМУМ(ТЗ2.Артикул),
   |    МАКСИМУМ(ТЗ.НомерСтрокиМ), МАКСИМУМ(ТЗ2.НомерСтроки),
   |    МАКСИМУМ(ТЗ2.ЕдИзм), МАКСИМУМ(ТЗ.ЕдИзмМ),
   |    СУММА(ТЗ2.НачальныйОстаток),
   |    СУММА(ТЗ.НачальныйОстатокМ),
   |    СУММА(ТЗ.ПриходМ),
   |    СУММА(ТЗ2.КонечныйОстаток),
   |    СУММА(ТЗ.КонечныйОстатокМ),
   |    СУММА(ТЗ.РасходМ),
   |    СУММА(ТЗ2.Приход),
   |    СУММА(ТЗ2.Расход)
   |ПО
   |    
   |"+ТекстГруппировки+"
   |ТЗ.НоменклатураМ
   |;
   |Уничтожить ТЗ
   |;
   |Уничтожить ТЗ2
   |";
1 ssh2006
 
21.10.11
11:41
" выходит на верх " - где уходит?
2 OASU
 
21.10.11
11:45
(1) как в примере нарисовано )) Номенклатура 22 - "0".
Номенклатура 22 - это левая часть таблицы, а напротив в правой таблице пусто.
И вот это "пусто" первая строка в таблице, нужно что бы всегда последняя стояла.
3 ssh2006
 
21.10.11
11:48
сортируй по НоменклатураМ
4 OASU
 
21.10.11
11:51
(3) т.е. выгражать результат запроса в ТЗ, и делать Сортировать ? а средствами запросами?
5 ssh2006
 
21.10.11
11:54
" а средствами запросами? " - УПОРЯДОЧИТЬ ПО
6 OASU
 
21.10.11
11:55
(5) не помогает
7 ssh2006
 
21.10.11
11:58
Сделай так. Добавь поле: Выбор Когда ТЗ.НоменклатураМ  ЕСТЬ NULL Тогда 0 Иначе 1 конец как поле1 и сортируй по нему
8 OASU
 
21.10.11
12:00
(7) нет, не помогает это...
9 ssh2006
 
21.10.11
12:03
" выгражать результат запроса в ТЗ, и делать Сортировать " - плохо
" средствами запросами " - хорошо
Добейся того, чтобы получилась сортировка в запросе
10 Starhan
 
21.10.11
12:06
(8) спасибо за хорошее настроение :)
11 OASU
 
21.10.11
12:07
(9) :))) кажется уже все перепробовано, ну не получается...
12 ssh2006
 
21.10.11
12:09
(11) не опускай руки.
13 OASU
 
21.10.11
13:08
| Выбор Когда ТЗ.НачальныйОстатокМ  ЕСТЬ NULL Тогда 0 Иначе ТЗ.НачальныйОстатокМ Конец КАК НачальныйОстатокМ,
...
|УПОРЯДОЧИТЬ ПО
|ТЗ.НачальныйОстатокМ Убыв

Так вроде работает нормально )) Насколько это надежно, вопрос ))
14 rs_trade
 
21.10.11
13:11
(8) по убыванию сортировку поставь. либо Когда ТЗ.НоменклатураМ  ЕСТЬ NULL Тогда 1 Иначе 0
15 OASU
 
21.10.11
14:13
(13) нашлось таки слабое место... Не помогло опять ((