Имя: Пароль:
1C
 
Число строк табличной части через запрос
0 Evladar
 
09.12.08
14:41
У меня есть документ с табличной частью.
Мне нужно запросом понять, есть там что-нибудь или нет.
Если написать такой запрос:

"ВЫБРАТЬ
КОЛИЧЕСТВО(*) КАК Всего
АТабЧасть.Ссылка КАК Ссылка
ИЗ
Документ.А.ТабЧасть КАК АТабЧасть
УПОРЯДОЧИТЬ ПО
Ссылка";

то отловим только те строки, в которых что-то есть (1, 2, 3 и т.д.) 0 не получается.

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

то все равно нужных мне нулей не получаю.

Что делать?
1 almar
 
09.12.08
14:43
ЕстьNull(КОЛИЧЕСТВО(*),0) КАК Всего
2 Defender aka LINN
 
09.12.08
14:44
(0) Если строк в сталичной части нет, то и записей в таблице "Документ.ИмяДокумента.ИмяТабличнойЧасти" не будет.
3 Garkin
 
09.12.08
14:46
(0) определить количество строк или количество не пустых строк?
4 NULLL
 
09.12.08
14:46
ВЫБРАТЬ
   КОЛИЧЕСТВО(1) КАК Поле1
ИЗ
   Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
ГДЕ
   РеализацияТоваровУслугТовары.Ссылка = &Ссылка
5 Evladar
 
09.12.08
14:47
almar, не помогает. Строки с нулем не появляются.

Defender aka LINN, так как же тогда понять, что записей нет?
6 Evladar
 
09.12.08
14:48
Garkin, в данном случае это одно и то же.
Надо понять, есть ли строки в табличной части.
7 IronDemon
 
09.12.08
14:51
Соединив с самим документом
8 NULLL
 
09.12.08
14:52
(5) Тогда тебе нужно левое соединение таблицы документов и таблицы ТЧ. И проверка на NULL
9 hhhh
 
09.12.08
14:55
(5) объясни на пальцах, что такое строки с нулем.
10 hhhh
 
09.12.08
14:56
(0) откуда вызывается этот запрос?
11 Evladar
 
09.12.08
14:57
hhhh, я хочу, чтобы результатом запроса была таблица с двумя столбцами:
- Ссылка
- Число (или 0, если в табличной части пусто, или число строк)
12 Лефмихалыч
 
09.12.08
15:01
ВЫБРАТЬ
   ПоступлениеТоваровУслуг.Ссылка
ИЗ
   Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
       ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
       ПО ПоступлениеТоваровУслуг.Ссылка = ПоступлениеТоваровУслугТовары.Ссылка
ГДЕ
   ПоступлениеТоваровУслугТовары.Ссылка ЕСТЬ NULL
13 Defender aka LINN
 
09.12.08
15:04
(11) Блин, ну элементарные же вещи...

ВЫБРАТЬ
   ШапкаДокумента.Ссылка,
   ЕСТЬNULL(ТабличнаяЧасть.Количество, 0) КАК КоличествоСтрок
ИЗ
   Документ.ИмяДокумента КАК ШапкаДокумента
   ЛЕВОЕ СОЕДИНЕНИЕ
   (ВЫБРАТЬ
       Ссылка,
       Максимум(НомерСтроки) КАК Количество
   ИЗ
       Документ.ИмяДокумента.ИмяТабличнойЧасти
   СГРУППИРОВАТЬ ПО
       Ссылка) КАК ТабличнаяЧасть
   ПО ШапкаДокумента.Ссылка = ТабличнаяЧасть.Ссылка


Сложно?
14 AquaKosh
 
09.12.08
15:05
(11) Бегло пробежался, может это поможет отцу русской демократии?
ВЫБРАТЬ
   Подзапрос.Ссылка,
   КОЛИЧЕСТВО(Подзапрос.Номенклатура) КАК Количество
ИЗ
   (ВЫБРАТЬ
       РеализацияТоваровУслугТовары.Ссылка КАК Ссылка,
       РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура
   ИЗ
       Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
   ГДЕ
       РеализацияТоваровУслугТовары.Ссылка = &Ссылка) КАК Подзапрос

СГРУППИРОВАТЬ ПО
   Подзапрос.Ссылка
15 Defender aka LINN
 
09.12.08
15:11
(14) Не айс :)
16 hhhh
 
09.12.08
15:12
(14) не поможет. Строк нету, значит и группировать нечего. В выборке запроса 0 строк. Если мы их сгруппируем, все равно будет 0 строк.
17 AquaKosh
 
09.12.08
15:12
(0)(15) Ай, ай, позор на мою голову, был не внимателен...
18 Evladar
 
09.12.08
15:19
Defender aka LINN, нет нулей.
Или пустые ячейки, или ненулевое число.
:(
19 Evladar
 
09.12.08
15:20
"Максимум(НомерСтроки) КАК Количество".. Строк-то нет... Вот и количества нет
20 AquaKosh
 
09.12.08
15:30
(19) Вот, у меня так получилось
ВЫБРАТЬ
   РеализацияТоваровУслуг.Ссылка,
   ЕСТЬNULL(ЗапросКоличества.Количество, 0) КАК КоличествоСтрок
ИЗ
   Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
       ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           Подзапрос.Ссылка КАК Ссылка,
           КОЛИЧЕСТВО(Подзапрос.Номенклатура) КАК Количество
       ИЗ
           (ВЫБРАТЬ
               РеализацияТоваровУслугУслуги.Ссылка КАК Ссылка,
               РеализацияТоваровУслугУслуги.Номенклатура КАК Номенклатура
           ИЗ
               Документ.РеализацияТоваровУслуг.Услуги КАК РеализацияТоваровУслугУслуги
           ГДЕ
               РеализацияТоваровУслугУслуги.Ссылка = &Ссылка) КАК Подзапрос
       
       СГРУППИРОВАТЬ ПО
           Подзапрос.Ссылка) КАК ЗапросКоличества
       ПО РеализацияТоваровУслуг.Ссылка = ЗапросКоличества.Ссылка
ГДЕ
   РеализацияТоваровУслуг.Ссылка = &Ссылка
21 НЕА123
 
09.12.08
15:32
(19) а ты хоть (13) проверил, прежде чем писать?
22 Evladar
 
09.12.08
15:34
HEA123, конечно проверил. (сначала я написал 18)
23 Defender aka LINN
 
09.12.08
15:36
(18) Дык 0 в ТЗ не отображается, формат ставь
24 AquaKosh
 
09.12.08
15:40
(23) Не, дело не в формате. Алгоритм из (13) везде 0 даёт.
25 hhhh
 
09.12.08
15:40
(22) у меня (13) работает. Твой запрос в студию.
26 НЕА123
 
09.12.08
15:42
вроде не пятница...
27 Defender aka LINN
 
09.12.08
15:43
(24) Лично проверил. Все работает.
28 Defender aka LINN
 
09.12.08
15:44
(18) "Или пустые ячейки, или ненулевое число." - Интересно, что же это число означает...
29 AquaKosh
 
09.12.08
15:46
(27) Да, работает. Это я туплю, пора пойти покурить. Меня ввело в заблуждение то, что запрос (13) возвращает все доки с 0 и только у нужного правильное количество.
30 Evladar
 
09.12.08
15:53
Defender aka LINN, спасибо.
Я, действительно, не просек, что тут нулевые значения не будут нулями стоять.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.