Имя: Пароль:
1C
1С v8
Не работает условие в запросе
,
0 Balabass
 
21.12.12
09:00
Если Выб = 1 Тогда
Условие = "СубконтоДт2"
Иначе
Условие = "СубконтоКт2"
КонецЕсли;    

       |    РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
       |            &НачПериода,
       |            &КонПериода,
       |            СчетДт В (&СписокСчетов)
       |                И "+Условие+" = &Склад,
       |            ,
       |            ) КАК ХозрасчетныйДвиженияССубконто
       
Вот УСЛОВИЕ не отрабатывает, хотя если написать просто СубконтоКт2 - то все ОК.
В отладчике текст запроса тоже без вопросов.
А результат - ноль.
1 Balabass
 
21.12.12
09:04
Ну что? Где все?
Через час конец света уже.
2 Галахад
 
гуру
21.12.12
09:04
Поставь точку останова и посмотри текст запроса.
3 Balabass
 
21.12.12
09:05
(2) В отладчике текст запроса тоже без вопросов. Я об этом написал в (0)
4 Balabass
 
21.12.12
09:05
"ВЫБРАТЬ¶    ХозрасчетныйДвиженияССубконто.Период КАК Период,¶    ХозрасчетныйДвиженияССубконто.Регистратор¶ИЗ¶    РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(¶            &НачПериода,¶            &КонПериода,¶            СчетДт В (&СписокСчетов)¶                И СубконтоКт2 = &Склад,¶            ,¶            ) КАК ХозрасчетныйДвиженияССубконтСГРУППИРОВАТЬ ПО¶    ХозрасчетныйДвиженияССубконто.Регистратор,¶    ХозрасчетныйДвиженияССубконто.Перио䶶УПОРЯДОЧИТЬ ПО¶    Период"
5 Balabass
 
21.12.12
09:06
СубконтоКт2 = &Склад - все хоккей. Но не работает гад.
А если руками вписать - то работает.
6 Галахад
 
гуру
21.12.12
09:06
(3) Ну значит уже. Коне...
7 Balabass
 
21.12.12
09:07
(6) Что? Вот так все и закончится? )))
8 Галахад
 
гуру
21.12.12
09:09
(7) Ну еще попробуй (4) в Запрос.Текст подставить.
9 Fragster
 
гуру
21.12.12
09:09
Субконто <> Cyбконто
10 Fragster
 
гуру
21.12.12
09:09
а вообще - давно надо пользоваться построителем. или СКД.
11 Balabass
 
21.12.12
09:10
(9) Почему? Это же просто текст?
12 Fragster
 
гуру
21.12.12
09:11
(11) скопируй "Субконто" <> "Cyбконто" в табло и убедись
13 Лефмихалыч
 
21.12.12
09:11
(4) а откуда уверенность, что на выбранных счетах СубконтоКТ2 - это склады?
14 Balabass
 
21.12.12
09:12
(13) да не в этом дело.
Если руками написать
СубконтоКт2 = &Склад - то работает
А если через & - то нифига
15 Alexaha
 
21.12.12
09:13
(0) ну а если ты условие напишешь так?

Выбор &Выб Тогда СубконтоДт2 = &Склад
Иначе СубконтоКт2 = &Склад
Конец
16 Галахад
 
гуру
21.12.12
09:13
(14) Ты (8) сделал?
17 Мимохожий Однако
 
21.12.12
09:13
А "СчетДт" в запросе должен меняться по условию?
18 Balabass
 
21.12.12
09:15
Вот весь запрос:

ВЫБРАТЬ
   ХозрасчетныйДвиженияССубконто.Период КАК Период,
   ХозрасчетныйДвиженияССубконто.Регистратор
ИЗ
   РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
           &НачПериода,
           &КонПериода,
           СчетДт В ИЕРАРХИИ (&СписокСчетов)
               И &Условие = &Склад,
           ,
           ) КАК ХозрасчетныйДвиженияССубконто
19 Balabass
 
21.12.12
09:17
(15) Так работает.
20 Alexaha
 
21.12.12
09:18
(19) ну и что тебя не устраивает?
21 Balabass
 
21.12.12
09:19
(20) То что мой вариат не работает и я не могу понять почему.
22 Balabass
 
21.12.12
09:22
(16) Еще нет.
23 Alexaha
 
21.12.12
09:23
(18) а это и не будет работать: ты ж сравниваешь со складом строку
24 Balabass
 
21.12.12
09:29
(23)  Но почему?
Я жу в ЗАПРОС,ТЕКСТ - добавляю СТРОКУ.
А компиляция этого текста происходит потом. После его составления.
Разве нет?
25 Alexaha
 
21.12.12
09:30
(24) если так
 
|                И "+Условие+" = &Склад,

то должно работать, а если так

И &Условие = &Склад,

то нет
26 Balabass
 
21.12.12
09:32
(25) Эх...
27 Balabass
 
21.12.12
09:32
Ладно. Вопрос закрыт.
Спасибо участника.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший