Имя: Пароль:
1C
1C 7.7
v7: Запрос
0 CyberDream
 
21.10.11
16:47
Доброго всем дня. Пятничный вопрос по запросу. Одна и та же процедура, только условия в разных местах:

Вариант1:

Процедура Сформировать()
   Запрос = СоздатьОбъект("Запрос");
   ТекстЗапроса =
   "//{{ЗАПРОС(Сформировать)
   |Счет = Документ.ПриходныйКассовый.Счет;
   |СуммаВал = Документ.ПриходныйКассовый.СуммаВал;
   |Субконто1 = Документ.ПриходныйКассовый.Субконто1;
   |Субконто2 = Документ.ПриходныйКассовый.Субконто2;
   |ПК = Документ.ПриходныйКассовый.ТекущийДокумент;
   |Группировка ПК;
   |Условие(Счет = СчетПоКоду(""3721""));
//    |Условие(Субконто1 = ВыбСотрудник);
   |Условие(ПК.Проведен()=1);";
   
   Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
       Возврат;
   КонецЕсли;
   СпПриходныхКассовых=СоздатьОбъект("СписокЗначений");
   Пока Запрос.Группировка(1) = 1 Цикл  
       Если Запрос.ПК.Субконто1 = ВыбСотрудник Тогда
           Сообщить("" + Запрос.ПК.Субконто1);          
       КонецЕсли;
   КонецЦикла;
КонецПроцедуры

Вариант 2:

Процедура Сформировать()
   Запрос = СоздатьОбъект("Запрос");
   ТекстЗапроса =
   "//{{ЗАПРОС(Сформировать)
   |Счет = Документ.ПриходныйКассовый.Счет;
   |СуммаВал = Документ.ПриходныйКассовый.СуммаВал;
   |Субконто1 = Документ.ПриходныйКассовый.Субконто1;
   |Субконто2 = Документ.ПриходныйКассовый.Субконто2;
   |ПК = Документ.ПриходныйКассовый.ТекущийДокумент;
   |Группировка ПК;
   |Условие(Счет = СчетПоКоду(""3721""));
   |Условие(Субконто1 = ВыбСотрудник);
   |Условие(ПК.Проведен()=1);";
   
   Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
       Возврат;
   КонецЕсли;
   СпПриходныхКассовых=СоздатьОбъект("СписокЗначений");
   Пока Запрос.Группировка(1) = 1 Цикл  
       //Если Запрос.ПК.Субконто1 = ВыбСотрудник Тогда
           Сообщить("" + Запрос.ПК.Субконто1);          
       //КонецЕсли;
   КонецЦикла;
КонецПроцедуры

В первом варианте условие в выборке - !!!работает!!!

Во втором варианте условие в запросе - !!!НЕ РАБОТАЕТ!!! (выборка пустая)

ПОЧЕМУ ????

П.С.:

это база SQL. Выгрузка в ДБФ - работают оба варианта. ТИС не предлагать.
1 CyberDream
 
21.10.11
16:48
up
2 andrewks
 
21.10.11
16:50
с ИспользоватьSQL(0); пробовал?
3 filh
 
21.10.11
16:53
>>ТИС не предлагать.
А ЗиК можно предложить?
4 Cthulhu
 
21.10.11
16:54
1. Нехрен лепить запросы там, где можно обойтись выборкой, причем выборка сработает быстрее, а сам процесс можно оживить, существенно уменьшив уровень тревожности (и происходящее от него ощущение дискомфорта) пользователя.
2. Нехрен ставить условия на реквизиты неопределенного типа/вида.
5 CyberDream
 
21.10.11
16:54
Запрос.ВключитьSQL(0) Взлетело
6 CyberDream
 
21.10.11
16:54
(4) єтот типовая процедура печати авансового отчета, которая не взлетела на SQL базе
7 CyberDream
 
21.10.11
16:56
Теперь, господа, просвятите. Почему возникают такие траблы с скулем?
8 Cthulhu
 
21.10.11
16:56
(6): что не отменяет уместности (4).
9 Cthulhu
 
21.10.11
16:56
(7): становись на колени, святить будем, чудо неразумное.
10 viktor_vv
 
21.10.11
17:00
(7) Потому как Субконто1 - тип значения неопределенного типа. В скуле скорее всего условие накладывается прямо в запросе и есстественно не выполняется. В ДБФ скорее всего в постобработке оезультатов запроса.
11 filh
 
21.10.11
17:00
(7) Это когда криво написанные запросы на 7.7 не хотят работать под СКЛ
12 viktor_vv
 
21.10.11
17:14
(10) Прикольно. В Профайлере условие вообще такое получилось :

and (((DH3694.SP3682 ='''')))

Хотя реквизит выбран на форме.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс