Имя: Пароль:
1C
1С v8
Туплю с запросом. Ткните пальцем.
,
0 Balabass
 
14.10.11
10:43
Написал запрос - в консоле работает, в обработке нет.

ЗапросЗатраты = Новый Запрос;
ЗапросЗатраты.Текст =
"ВЫБРАТЬ
|    ХозрасчетныйДвиженияССубконто.Период КАК Период,
|    ХозрасчетныйДвиженияССубконто.СчетДт КАК СчетДт
|ИЗ
|    РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто КАК ХозрасчетныйДвиженияССубконто
|ГДЕ
|    ХозрасчетныйДвиженияССубконто.Период МЕЖДУ &ДатаНач И &ДатаКон
|    И ХозрасчетныйДвиженияССубконто.СчетДт В ИЕРАРХИИ(&СчетДт)
|    И ХозрасчетныйДвиженияССубконто.Активность = &Активность";

Активность = Истина;

СчетДт = ПланыСчетов.Хозрасчетный.ОсновноеПроизводство_;

ЗапросЗатраты.УстановитьПараметр("ДатаНач", ДатаНач); - 01.01.11
ЗапросЗатраты.УстановитьПараметр("ДатаКон", ДатаКон); - 31.01.11
ЗапросЗатраты.УстановитьПараметр("СчетДт", СчетДт);   - по 20(20.01 02)
ЗапросЗатраты.УстановитьПараметр("Активность", Активность); - Истина

В консоле Все ништяк, в обработке пустой. Че за дела?
1 asady
 
14.10.11
10:49
(0) проверь датанач и датакон - скорее всего местами попутаны
2 Balabass
 
14.10.11
10:52
С датами порядок.
3 Reset
 
14.10.11
10:54
Ну другие параметры сверяй. Не бывает чудес
4 Homer
 
14.10.11
10:55
СчетДт = ПланыСчетов.Хозрасчетный.ОсновноеПроизводство_;

что это за счет такой
5 Balabass
 
14.10.11
10:56
(4)ПланыСчетов.Хозрасчетный.ОсновноеПроизводство_ = 20.
  ПланыСчетов.Хозрасчетный.ОсновноеПроизводство  = 20.01
6 butterbean
 
14.10.11
10:57
показывай как дальше выводишь
7 zbv
 
14.10.11
10:57
(0) а как проверяешь, что пустой ?
8 Balabass
 
14.10.11
10:58
Прчием если убрать отбор по счету - то все проходит.
Но в консоле я делаю:
|И ХозрасчетныйДвиженияССубконто.СчетДт В ИЕРАРХИИ(&СчетДт) - работает
В обработке
|И ХозрасчетныйДвиженияССубконто.СчетДт В ИЕРАРХИИ(&СчетДт) - не работает.

А вывожу просто в ТЗ.
При отладке ЗАпрос.Выполнить().Пустой() - говорит что истина
9 Balabass
 
14.10.11
10:59
Смотрите - нужно отобрать проводки из хозрасчетного, чтобы Дт = 20(20.01 20.02 и т.д) а Кт = *
10 Balabass
 
14.10.11
11:00
Мож я че не так делаю?
До этого написал 3 запроса - этот 4 по аналогии. Но пустой зараза...
11 Balabass
 
14.10.11
11:02
делал еще так

СписокОтбораПоСчетам = Новый СписокЗначений;
СписокОтбораПоСчетам.Добавить(ПланыСчетов.Хозрасчетный.ОсновноеПроизводство_ );

и в запрос ставил
|И ХозрасчетныйДвиженияССубконто.СчетДт В ИЕРАРХИИ(&СписокОтбораПоСчетам) - в консоле работает, а в обработке нет.
12 Balabass
 
14.10.11
11:04
По идее должен хватать все счета, которые относятся к 20 счету.
Ведь условие иерархии как раз таки отбирает значения, удовлетворяющие условию из списка.
Так?
13 Reset
 
14.10.11
11:04
Не морочь голову, ты разный счет выбираешь в консоли и обработки.
14 Alex S D
 
14.10.11
11:05
Ну поставь условие счетДт = 20.01. и посмотри.. раз уж ты так грешишь на иерархию, конецдня(Датанок) делаешь?
15 Reset
 
14.10.11
11:07
В ИЕРАРХИИ(&СчетДт)

Замени на В ИЕРАРХИИ(ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ОсновноеПроизводство_
))

и убедись
16 Balabass
 
14.10.11
11:11
(14)Да тут не особо важно - но делаю руками пока. 310111235959)))
(13) - где разный?
Там ты имеешь введу 20 стоит - в консоле, а обработке ссылка на счет?
17 Reset
 
14.10.11
11:14
310111235959
хоспаде что эта
18 Balabass
 
14.10.11
11:14
ДДММГГГГЧЧММСС
19 Balabass
 
14.10.11
11:15
(15)Не. не взлетело.
Для 23 счета работает. А для 20 нет, хотя обороты есть по 20.01
20 izekia
 
14.10.11
11:16
(18) это ДДММГГЧЧММСС
21 Reset
 
14.10.11
11:16
(19) Да уже понятно из "310111235959" что не в счете дело.
22 Reset
 
14.10.11
11:17
Иди в СП и читай описание функции Дата
23 asady
 
14.10.11
11:18
(16) пятнично!!!

спасибо повеселил - жалко ветка только до 20 поста дошла....
24 Homer
 
14.10.11
11:18
какой красивый год ))
25 Balabass
 
14.10.11
11:19
(20)я заикаюсь сеггггодня)
26 Alex S D
 
14.10.11
11:21
А датаНач  у тебя какая интересно?
27 izekia
 
14.10.11
11:22
(26) да, кстати, проблема в дата нач похоже)
28 НЕА123
 
14.10.11
11:23
(16)
310111235959 - а как такую дату можно ввести? в табло ругается.
29 байт
 
14.10.11
11:23
(0) вместо ХозрасчетныйДвиженияССубконто.Активность = &Активность, пиши просто ХозрасчетныйДвиженияССубконто.Активность
30 izekia
 
14.10.11
11:26
(29) спорим не будет работать?
31 Balabass
 
14.10.11
11:28
(28) Нормально все
32 байт
 
14.10.11
11:28
(30) я знаю просто в гласа бросается)))
33 izekia
 
14.10.11
11:29
(32) я к тому, что если даже значение булево, то все равно нужно сравнение ... или это уже пофиксили?
34 YF
 
14.10.11
11:30
(0) Я бы условие накладывал на виртуальную таблицу + вместо дат взял бы границы с конец, Начало Дня ...
35 Balabass
 
14.10.11
11:30
(33)хз. через сранение стопудово будет работать...
36 Alex S D
 
14.10.11
11:30
давай текст обработки полностью
37 НЕА123
 
14.10.11
11:32
(31)
'310111235959'    {(1,1)}: Неправильная константа типа Дата
38 LLIaMaH
 
14.10.11
11:33
Вопрос: А почему параметры и условия применяются после ГДЕ, а не в качества параметров таблицы ОстаткиИОбороты?
39 Balabass
 
14.10.11
11:35
(36)
//....
апросЗатраты = Новый Запрос;
ЗапросЗатраты.Текст =
"ВЫБРАТЬ
|    ХозрасчетныйДвиженияССубконто.Период КАК Период,
|    ХозрасчетныйДвиженияССубконто.Регистратор КАК Регистратор,
|    ХозрасчетныйДвиженияССубконто.СчетДт КАК СчетДт,
|    ХозрасчетныйДвиженияССубконто.СубконтоДт1.Код КАК Дт1,
|    ХозрасчетныйДвиженияССубконто.СубконтоДт2.Код КАК Дт2,
|    ХозрасчетныйДвиженияССубконто.СубконтоДт3.Код КАК Дт3,
|    ХозрасчетныйДвиженияССубконто.СчетКт КАК СчетКТ,
|    ХозрасчетныйДвиженияССубконто.Организация.ИНН КАК Организация,
|    ХозрасчетныйДвиженияССубконто.Сумма КАК Сумма,
|    ХозрасчетныйДвиженияССубконто.Активность
|ИЗ
|    РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто КАК ХозрасчетныйДвиженияССубконто
|ГДЕ
|    ХозрасчетныйДвиженияССубконто.Период МЕЖДУ &ДатаНач И &ДатаКон
|    И ХозрасчетныйДвиженияССубконто.СчетДт В ИЕРАРХИИ(&СчетДт)
|    И ХозрасчетныйДвиженияССубконто.Активность";

Активность = Истина;

СчетДт = Новый СписокЗначений;
СчетДт.Добавить(ПланыСчетов.Хозрасчетный.ОсновноеПроизводство_);

ЗапросЗатраты.УстановитьПараметр("ДатаНач", ДатаНач);
ЗапросЗатраты.УстановитьПараметр("ДатаКон", ДатаКон);
ЗапросЗатраты.УстановитьПараметр("СчетДт", СчетДт);
ЗапросЗатраты.УстановитьПараметр("Активность", Активность);

ТЗОбщая = Новый ТаблицаЗначений;
ТЗОбщая = ЗапросЗатраты.Выполнить().Выгрузить();

//...
40 Balabass
 
14.10.11
11:36
(33)Работает)
41 YF
 
14.10.11
11:37
(39) Нафига вот это:
СчетДт = Новый СписокЗначений;
СчетДт.Добавить(ПланыСчетов.Хозрасчетный.ОсновноеПроизводство_);

Че бы сразу не сделать:
ЗапросЗатраты.УстановитьПараметр("СчетДт", ПланыСчетов.Хозрасчетный.ОсновноеПроизводство_);
42 Balabass
 
14.10.11
11:38
(41)Потом мне скажут..А давай те как помимо 20 еще и 23 25 и 26 возьмем.
А я раз - и добавил их в Список.
43 Balabass
 
14.10.11
11:43
(38)А как предлагаешь? Мне интересно как еще можно.
44 байт
 
14.10.11
12:04
(40) и в чем прикол?
45 LLIaMaH
 
14.10.11
12:08
(43) ну вот так. Хотя я наверно не так понял твою задачу. Смотря что тебе нада получить и из чего.

ВЫБРАТЬ
   ХозрасчетныйОстаткиИОбороты.Счет,
   ХозрасчетныйОстаткиИОбороты.Субконто1
ИЗ
   РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&Нач, &Кон, , , Счет В ИЕРАРХИИ (&Счет), , ) КАК ХозрасчетныйОстаткиИОбороты
46 Balabass
 
14.10.11
12:31
(45)А какая разница между
Из РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&Нач, &Кон, , , Счет В ИЕРАРХИИ (&Счет), , )
и
Из
   РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты
Где
Условия. ?
Я не знаю - не особо прошеарен в запросах еще.
47 Balabass
 
14.10.11
12:32
(44)Я не знал что значение типа булево можно проверять на истину не задавая условия.
48 байт
 
14.10.11
12:33
(30) а ты говоришь не будет)))
49 izekia
 
14.10.11
12:45
(48) проверил, действительно работает
50 izekia
 
14.10.11
12:46
(49) + как-то натыкался, что подобная конструкция не работала, с тех пор обычно писал через проверку на истину
51 YF
 
14.10.11
12:58
(46) Ты книжки читал про запросы и виртуальные таблицы 1С?
52 YF
 
14.10.11
13:01
+(51) Если не читал, то:

Виртуальная таблица - это запрос из одной или нескольких реальных таблиц, поэтому, когда ты обращаешься к виртуальной таблице сначала формируется этот запрос на формирование вирт. таблицы, а потом уже твой запрос  сусловием ...

Если условие на виртуальную таблицу наложить, то при ее формированиии в нее попадут записи уже отобранные по условию

Если условие в запросе по ГДЕ, то виртуальная таблица сформируется полностью без отборов, а потом ты будешь из нее отбирать ...

Второй вариант будет медленнее и жрать больше памяти ...
53 LLIaMaH
 
14.10.11
13:42
+52 Вобщем если будеш сдавать на специалиста и напишешь запрос с ГДЕ, то тебя тут же выгонят, как мне объяснили сдававшие для них это красня тряпка :)
54 Balabass
 
15.10.11
01:13
(52)Понятно. Книжек еще не читал, но прикупил. Но ты объяснил доступно и понятно - за это спасибо тебе большое.
55 Санта
 
15.10.11
01:15
ХозрасчетныйДвиженияССубконто.Активность - достаточно так, параметр не нужен
56 Balabass
 
15.10.11
01:20
(52)Охренеть - сделал как ты посоветовал! Разобюрался с настройками виртуальной таблицы - ШИКАРНО!
Теперь запрос вместо 20 минут работает 2 секунды) Крутота!!!
57 Balabass
 
15.10.11
01:21
(55)Этот момент уже разобрали
58 Balabass
 
15.10.11
01:21
(55) :)
59 Пришел в тапках
 
15.10.11
10:20
(56) Жестокий человек )