Имя: Пароль:
1C
1С v8
Запрос к реквизиту табличной части документа
0 kolp821
 
19.03.12
12:48
Есть Документ, в нем есть табличный реквизит, реквизит может быть пустой. Нужно создать запрос, на проверку заполненный/не заполненный табл. часть, в результате которого будет выполнен алгоритм, если в табл. части есть что то - то выполняется 1 ветка алгоритма, если нет нечего - то другая ветка. Как правильно создать запрос?
1 qeos
 
19.03.12
12:52
запрос:
выбрать строки где реквизит не заполнен
2 КМ155
 
19.03.12
12:54
(0) [есть табличный реквизит]
это не возможно
нет в 1С такого типа данных
3 Alex S D
 
19.03.12
12:54
ниче не понял
4 kolp821
 
19.03.12
12:55
(2) не правильно выразился, не табл реквизит а табличная часть реквизита.
5 Buster007
 
19.03.12
12:57
(4) есть реквизит табличной части
6 kolp821
 
19.03.12
12:58
(1)  а можно поподробнее? Есть несколько табличных реквизитов. Но нужно проверку на одну сделать.
7 le_
 
19.03.12
12:58
(5) У автора 1С Zimbabwe Edition.
8 КМ155
 
19.03.12
12:59
(4)[табличная часть реквизита]
ешё больший бред,
нет у реквизитов табличных частей
9 Alex S D
 
19.03.12
12:59
опять ниче не понял
10 Aleks73
 
19.03.12
12:59
(8) Может, если рекизит документ например заказ или реализация
11 Aleks73
 
19.03.12
13:00
(8)  Но что хочет автор - загадка.
12 kolp821
 
19.03.12
13:03
повторю еще вопрос.
Есть Документ, в нем есть табличный часть. Нужно создать запрос, на проверку заполненный/не заполненный табл. часть, в результате которого будет выполнен алгоритм, если в табл. части есть элементы - то выполняется 1 ветка алгоритма, если нет элементов - то другая ветка. Как правильно создать запрос?
13 qeos
 
19.03.12
13:04
(10) у реквизита нет табличной части.
14 kolp821
 
19.03.12
13:04
извиняюсь за неправильную формулировку вопроса
15 Alex S D
 
19.03.12
13:05
понял
16 Кокос
 
19.03.12
13:08
Делаешь левое соединение с таблицей результатом запроса где выборка из табличной части с полем СУММА(1) КАК ИНДИКАТОРСТРОКИ. и проверяешь потом если ВЫБОР КОГДА ЕстьNULL(Подзапрос.ИНДИКАТОРСТРОКИ,0) = 0 ТОГДА ЛОЖЬ ИНАЧЕ ИСТИНА КОНЕЙ КАК ТЧЗаполнена
17 le_
 
19.03.12
13:09
ВЫБРАТЬ ПЕРВЫЕ 1
   МойДокумент.НомерСтроки
ИЗ
   Документ.ВашДокумент.Товары КАК МойДокументТовары
ГДЕ
   МойДокумент.Ссылка = &Док

Если Запрос.Выполнить().Выбрать().Количество() < 1 Тогда
   //ТЧ пустая
Иначе
   //ТЧ не пустая
КонецЕсли;
18 le_
 
19.03.12
13:11
(17) *КАК МойДокумент
19 kolp821
 
19.03.12
13:12
(17)Что за НомерСтроки?
20 le_
 
19.03.12
13:13
(19) Номер строки в табличной части.
21 Buster007
 
19.03.12
13:13
(19) почитай-ка ты лучше книгу... от этого ещё никто не умирал ;)
22 Кокос
 
19.03.12
13:14
(19) вместо .НомерСтроки можешь использовать .Ссылка
23 le_
 
19.03.12
13:18
+(17) Только определить, есть ли строки в ТЧ документа можно проще, без написания запроса )

Если Док.Товары.Количество() < 1 Тогда
   //нет строк
Иначе
   //есть строки
КонецЕсли;
24 kolp821
 
19.03.12
13:23
(23) такой вариант подходит, но как правильно мне написать? Пишу Документы.Договір.ТабличнаяЧастьДокументиПроОсвіту.Количество() < 1 выдает ошибку что "{Документ.Договір(623)}: Поле объекта не обнаружено (ТабличнаяЧастьДокументиПроОсвіту)
    Если Документы.Договір.ТабличнаяЧастьДокументиПроОсвіту.Количество() < 1 Тогда"
25 le_
 
19.03.12
13:25
(24) Даже не знаю, что тут посоветовать... в магазин за книжкой или на курсы...
26 Кокос
 
19.03.12
13:27
Если Документы.Договір.ДокументиПроОсвіту.Количество() < 1
27 Кокос
 
19.03.12
13:27
(25) )))
28 kolp821
 
19.03.12
13:38
(26) ТабличнаяЧастьДокументиПроОсвіту это и есть имя, так предыдущий разработчик назвал табл часть )))
29 Molinor
 
19.03.12
13:40
(28)
"ДокументЫ", а не "документ".
30 Molinor
 
19.03.12
13:41
(29) Хрень написал, не читать.
31 Reset
 
19.03.12
14:11
(23) в Суть ветки не вникал, но зачем так иносказательно писать? Почему нельзя по русски Количество()=0 ? Отрабатывам варианты, когда количество строк = 0.5 или -1 ?
32 Lenka_Boo
 
19.03.12
14:28
(28)
1. Попробуй вставить название ТЧ копированием. В нем могут быть символы из другой раскладки, не догадаться какие (мне такие перлы уже встречались)
2. В отладчике посмотри, есть ли она у тебя вообще под Документы.Договір.
3. "Документы" - это у тебя что?
33 le_
 
19.03.12
14:30
(31) >Отрабатывам варианты, когда количество строк = 0.5 или -1 ?
Метод Количество() возвращает натуральное число.

(32) Думается мне, автор в (24) привел пример обращения к ДокументМенеджер, а не конкретному документу.
34 Reset
 
19.03.12
14:50
(33) Мне, думается, твой стиль мышления не постичь ;)
Я не справшивал, что возвращает метод. Я поинтересовался сакральным смыслом сравнения с единицей.
35 Reset
 
19.03.12
14:51
Забей, впрочем ;)
36 Кокос
 
19.03.12
14:51
Авфтор! Выложи сюда исходник.
37 le_
 
19.03.12
15:04
(34) Сакрального смысла нет. И ничего иносказательного нет. Можно было написать и так:
Если Док.Товары.Количество() > 0 Тогда
   //есть строки
Иначе
   //нет строк
КонецЕсли;
38 Reset
 
19.03.12
15:12
(37) И так можно:
Если Док.Товары.Количество()+1<2 тогда
// пустая

только нафига?


Пустая ТЧ - ТЧ, где 0(ноль) строк (а не та, где их меньше одной :D  - в этом иносказательность)
Пишем:
Если Док.Товары.Количество()=0 тогда
------------


+ в (17) вообще песня (я не говорю даже, что запрос нерабочий сам по себе, ну писал наспех - бывает).
Но вот об это глаз спотыкается сразу и возникают плохие мысли:
Если Запрос.Выполнить().Выбрать().Количество() < 1 Тогда

вместо Если Запрос.Выполнить().Пустой()
39 le_
 
19.03.12
15:24
(38) >И так можно: Док.Товары.Количество() + 1 < 2
Здесь лишняя операция.

По поводу (17) согласен. Про Пустой() подумал после того, как отправил.
Ошибка? Это не ошибка, это системная функция.