Имя: Пароль:
1C
1С v8
Запрос!
,
0 Aleksei_Pro
 
12.02.12
13:03
Подскажите почему запрос не срабатывает:
   Запрос1 = Новый Запрос;
   Запрос1.УстановитьПараметр("СчетДт",ПланыСчетов.Хозрасчетный.ОсновноеПроизводство);
   Запрос1.УстановитьПараметр("СчетКт",ПланыСчетов.Хозрасчетный.ГотоваяПродукция);
   Запрос1.УстановитьПараметр("Организация",Организация);
   Запрос1.УстановитьПараметр("НачПериода",НачалоМесяца(Дата));
   Запрос1.УстановитьПараметр("КонПериода",КонецМесяца(Дата));    
   Запрос1.Текст =
   "ВЫБРАТЬ
   |    ХозрасчетныйОборотыДтКт.СчетКт,
   |    ХозрасчетныйОборотыДтКт.СчетДт,
   |    ХозрасчетныйОборотыДтКт.КоличествоОборотДт КАК КоличествоОборотДт,
   |    ХозрасчетныйОборотыДтКт.Организация,
   |    ХозрасчетныйОборотыДтКт.КоличествоОборотКт
   |ИЗ
   |    РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&НачПериода, &КонПериода, Период, СчетДт = &СчетДт, , СчетКт = &СчетКт, , Организация = &Организация) КАК ХозрасчетныйОборотыДтКт";
   
   ДвиЖ1 = Запрос1.Выполнить().Выбрать();
   Движ1.Следующий();    
   КолИтого =Движ1.КоличествоОборотДт;
1 МурЬка
 
12.02.12
13:04
А "Не срабатывает" - это как?
2 МурЬка
 
12.02.12
13:05
Ну и как бы оборот Д 20 К 43 он есть?
3 Aleksei_Pro
 
12.02.12
13:05
Да , оборот есть конечно.
4 Aleksei_Pro
 
12.02.12
13:05
Пустой запрос вываливается
5 МурЬка
 
12.02.12
13:07
(4) Д 20 К 43 или все-таки Д 43 К 20?
6 МурЬка
 
12.02.12
13:07
Что хочешь сделать, в общем?
7 echo77
 
12.02.12
13:08
Отладчиком точку останова поставить на строке

ДвиЖ1 = Запрос1.Выполнить().Выбрать();

и посмотреть какие параметры установлены в запросе. Обратить внимание на Организация и НачПериода, КонПериода
8 Aleksei_Pro
 
12.02.12
13:13
Вот в 7.7:
БухИт.ВыполнитьЗапрос(ДатаНач,ДатаКон,"20","43",,2,,5);  //об20,43 колич
9 МурЬка
 
12.02.12
13:15
|    ХозрасчетныйОборотыДтКт.КоличествоОборотДт КАК КоличествоОборотДт,
Счет 20 не количественный
10 Aleksei_Pro
 
12.02.12
13:16
В итоге мне надо вот этот код переписать:
         БухИт.ВыполнитьЗапрос(ДатаНач,ДатаКон,"20","43",,2,,5);  //об20,43 колич
       КолИтого =БухИт.корДО(3);
11 МурЬка
 
12.02.12
13:17
(10) в полученном запросе нет записей или КоличествоОборотДт = 0?
Если второе, то (9)
12 Aleksei_Pro
 
12.02.12
13:18
(11) нет записей
(10) соответсвует запросу (0)?
13 МурЬка
 
12.02.12
13:19
(12) На первый взгляд да.
То есть отладчик на Запрос1.Выполнить().Выгрузить().Количество() говорит 0?
14 Aleksei_Pro
 
12.02.12
13:21
(13) да 0
15 Aleksei_Pro
 
12.02.12
13:21
(13) хотя если Д 43 К 20 то тогда записи есть и выводит нормально
16 МурЬка
 
12.02.12
13:24
(15), правильно, счет 43 количественный. Вот и выводит КоличествоОборотДт.
17 МурЬка
 
12.02.12
13:25
АА, так в семерке КорДО. Ну да, это Д 43 К 20.
18 Aleksei_Pro
 
12.02.12
13:30
(17) не пойму в 7.7
КорДО(<ТипСуммы>)
Назначение:
Возвращает дебетовый оборот между корреспонденциями.
     
БухИт.ВыполнитьЗапрос(ДатаНач,ДатаКон,"20","43",,2,,5);  //об20,43 колич - тут же Кт 20 Дт 43 или нет?
19 МурЬка
 
12.02.12
13:33
(18) Получить что надо? Выпуск продукции в количественном выражении? Это оборот по количеству Дт Д 43 К 20.
20 Aleksei_Pro
 
12.02.12
13:35
(10) это надо на 8 переписать...
21 МурЬка
 
12.02.12
13:36
(20) В запросе (0) изменить
   Запрос1.УстановитьПараметр("СчетДт",ПланыСчетов.Хозрасчетный.ОсновноеПроизводство);
   Запрос1.УстановитьПараметр("СчетКт",ПланыСчетов.Хозрасчетный.ГотоваяПродукция);

на

   Запрос1.УстановитьПараметр("СчетКт",ПланыСчетов.Хозрасчетный.ОсновноеПроизводство);
   Запрос1.УстановитьПараметр("СчетДт",ПланыСчетов.Хозрасчетный.ГотоваяПродукция);

Радоваться.
22 МурЬка
 
12.02.12
13:38
(18)
В 7.7
Есть ДО - возвращает оборот между корреспонденциями Д Счет К Корсчет.
Есть КорДО - возвращает оборот между корреспонденциями Д Корсчет К Счет.

И не работайте в воскресенье, это вредно.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший