Имя: Пароль:
1C
1C 7.7
v7: Проблема с условием в запросе
0 Pro100
 
25.10.12
10:14
Народ подскажите почему в этом запросе после выполнения нету ничего

   Текст = "//{{ЗАПРОС(Документы)
   |Период с НачДата по КонДата;
   |Без Итогов;
   |МПЗ = Регистр.Партии.МПЗ;
   |Партия = Регистр.Партии.Партия;
   |ТекДок = Регистр.Партии.ТекущийДокумент;
   |Количество = Регистр.Партии.Количество;
   |Функция КолВо = Расход(Количество);
   |Группировка ТекДок;
   |Группировка МПЗ;
|Условие (ТекДок в СписДокументов);
   |";

Проблема в условии
1 Pro100
 
25.10.12
10:15
если просто ставлю Условие (ТекДок = Документ) то нормально отбирает данные партий, а если в списке документов, то ничего не выводит. Почему? что не так в запросе?
2 GLazNik
 
25.10.12
10:15
(1) а список документов как формируется?
3 ДенисЧ
 
25.10.12
10:19
ЧТо в списке? Сколько в списке?
4 Pro100
 
25.10.12
10:20
Список документов формируется выгрузкой в него документов из ТЗ, список документов проверял 100 % есть документы.
Если делать так
ТекДокумент = СписДокументов,ПолучитьЗначение(1);
и затем в условии ставить:
Условие (ТекДок= ТекДокумент) то записи выводятся, если сразу же ставлю "В" то перестает выводиться.
5 Ёпрст
 
25.10.12
10:21
(0) в списке не документы
6 1Сергей
 
25.10.12
10:22
Нет ли пустых строк в списке?
7 Pro100
 
25.10.12
10:22
(5) Как это не документы? а что там тогда?? )))
8 Pro100
 
25.10.12
10:22
(3)В списке 488 документов
(6) Пустых строк нету
9 Ёпрст
 
25.10.12
10:23
(7) нам отсюда не видно - больше кода.
10 Ёпрст
 
25.10.12
10:23
А так, 100% - .ТекущийДокумент() отсутствует при добавлении в список.
11 Ёпрст
 
25.10.12
10:23
и там просто переменная с типом, а не ссылка на объект
12 Pro100
 
25.10.12
10:25
(11) Почему тогда если делаю так:
ТекДокумент = СписДокументов.ПолучитьЗначение(1);
и затем в условии ставить:
Условие (ТекДок= ТекДокумент) то выводит результат ??
13 Ёпрст
 
25.10.12
10:30
(12) больше кода
14 Pro100
 
25.10.12
10:39
(13)
Вот больше кода:

   рс = СоздатьОбъект("ODBCRecordset");
   ТекстЗапроса = "
       |SELECT РеализацияПродукцииСтроки.IDDOC [Ссылка $Документ.РеализацияПродукции]
       |    , $РеализацияПродукцииСтроки.Товар [Товар $Справочник.Номенклатура]
       |FROM $ДокументСтроки.РеализацияПродукции AS РеализацияПродукцииСтроки With (NOLOCK)
       |    INNER JOIN _1SJOURN AS Журнал With (NOLOCK) ON РеализацияПродукцииСтроки.IDDOC = Журнал.IDDOC
       |WHERE (Cast(Left(Журнал.DATE_TIME_IDDOC, 8) AS datetime) >= :НачДата)
       |    AND (Cast(Left(Журнал.DATE_TIME_IDDOC, 8) AS datetime) <= :КонДата)
       |    AND (Журнал.ISMARK <> 1)
       |    AND ((Журнал.CLOSED & 1) = 1)
       |";
   рс.УстановитьТекстовыйПараметр("НачДата", НачДата);
   рс.УстановитьТекстовыйПараметр("КонДата", КонДата);
   тз = рс.ВыполнитьИнструкцию(ТекстЗапроса);
   тз.НоваяКолонка("КолСтр","Число",15);
   тз.Заполнить(1,1,тз.КоличествоСтрок(),"КолСтр");
   тз.Свернуть("Ссылка","КолСтр");
   //тз.ВыбратьСтроку();
   СписДокументов = СоздатьОбъект("СписокЗначений");
   тз.Выгрузить(СписДокументов,,,"Ссылка");
   тз.ВыбратьСтроки();
   //СписДокументов.ВыбратьЗначение(,"СписДокументов");
   Текст = "//{{ЗАПРОС(Учет МПЗ)
   |Период с НачДата по КонДата;
   |Без Итогов;
   |МПЗ = Регистр.Партии.МПЗ;
   |Партия = Регистр.Партии.Партия;
   |ТекДок = Регистр.Партии.ТекущийДокумент;
   |Количество = Регистр.Партии.Количество;
   |Функция КолВо = Расход(Количество);
   |Группировка ТекДок;
   |Группировка МПЗ;
   |Условие (ТекДок в СписДокументов);
   |";
   Запрос = СоздатьОбъект("Запрос");
   Запрос.Выполнить(Текст);
15 Ёпрст
 
25.10.12
10:43
(14) и нафига в этом коде черный запрос и тем более, прямой запрос на документы отдельно ?
16 Pro100
 
25.10.12
10:44
Тут не обсуждается что и нафига, вопрос почему не работает условие в запросе?
17 Ёпрст
 
25.10.12
10:47
(16) регистр толкают другие виды документов вестимо.
18 Pro100
 
25.10.12
10:48
(17) тогда бы не было записей если делаю в условии = ТекДокумент
19 Ёпрст
 
25.10.12
10:50
и это, как хоть проверяешь, что запрос пустой ?
20 Pro100
 
25.10.12
10:51
(19) )))
   мТЗ = СоздатьОбъект("ТаблицаЗначений");
   Запрос.Выгрузить(мТЗ);
   мТЗ.ВыбратьСтроку(,"мТЗ");
21 Ёпрст
 
25.10.12
10:52
убери без итогов, для начала
22 hunter76
 
25.10.12
10:52
попробуй:
Условие (СписДокументов.Принадлежит(ТекДок)=1);
23 GLazNik
 
25.10.12
10:54
(20) чисто для проверки попробуй так:
ТекДокумент = СписДокументов,ПолучитьЗначение(1);
СписДокументов = СоздатьОбъект("СписокЗначений");
СписДокументов.ДобавитьЗначение(ТекДокумент);
24 Simod
 
25.10.12
12:13
(22) +1
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн