Имя: Пароль:
1C
1С v8
Возвращается неправильный остаток на 41.01
0 Андрюха
 
06.10.12
10:08
Не могу сообразить почему.
Запросом хочу получить среднюю себестоимость.

   Запрос.Текст = "ВЫБРАТЬ
                  |    ХозрасчетныйОстатки.Субконто1 КАК Номенклатура,
                  |    ХозрасчетныйОстатки.СуммаОстаток,
                  |    ХозрасчетныйОстатки.КоличествоОстаток,
                  |    ХозрасчетныйОстатки.СуммаОстаток / ХозрасчетныйОстатки.КоличествоОстаток КАК Цена
                  |ИЗ
                  |    РегистрБухгалтерии.Хозрасчетный.Остатки(&ВыбДата, , , ) КАК ХозрасчетныйОстатки
                  |ГДЕ
                  |    ХозрасчетныйОстатки.Счет = &ВыбСчет
                  |    И ХозрасчетныйОстатки.Субконто1 В(&СписокНоменклатуры)
                  |    И ХозрасчетныйОстатки.КоличествоОстаток <> 0";

   Запрос.УстановитьПараметр("ВыбСчет", ПланыСчетов.Хозрасчетный.ТоварыНаСкладах);
   Запрос.УстановитьПараметр("ВыбДата", ДатаРасчета);
   Запрос.УстановитьПараметр("СписокНоменклатуры", СписокНоменклатуры);


В этот запрос не входит ряд позиций, хотя смотрю оборотку по 41.01 - они есть. Дата в запросе и оборотке идентичная. Вся номенклатура в массиве СписокНоменклатуры присутсвует.
1 Мимохожий Однако
 
06.10.12
10:25
Попробуй применить ЕстьNUll(ХозрасчетныйОстатки.КоличествоОстаток,0)
в двух полях
2 Мимохожий Однако
 
06.10.12
10:26
Запрос.УстановитьПараметр("ВыбДата", КонецДня(ДатаРасчета));
3 zak555
 
06.10.12
10:29
зачем использовать ГДЕ, если в параметрах виртуальной таблицы можно указать счет/субконто ?
+ зачем условие не равно 0 ?
4 Андрюха
 
06.10.12
10:37
(2) Сейчас попробую
(3) Там же цена рассчитывается, если это условие не делать, то при выполнении запроса вылазит "деление на ноль"
5 zak555
 
06.10.12
10:41
есть остатки по сумме без количества ?
6 Андрюха
 
06.10.12
10:46
(5) Так то нету, но без условия ругалась, я ей и влепил.
7 Андрюха
 
06.10.12
10:48
(6)+ Вот что пишет
{Форма.Форма.Форма(195)}: Ошибка при вызове метода контекста (Выполнить)
   Результат = Запрос.Выполнить();
по причине:
Ошибка выполнения запроса
по причине:
Ошибка при выполнении операции над данными:
Ошибка SQL: Деление на 0
по причине:
Ошибка SQL: Деление на 0
по причине:
Деление на 0 значения типа Numeric
8 ДенисЧ
 
06.10.12
10:51
|    ВЫБОР КОГДА ХозрасчетныйОстатки.КоличествоОстаток = 0 ТОГДА 0 ИНАЧЕ ХозрасчетныйОстатки.СуммаОстаток / ХозрасчетныйОстатки.КоличествоОстаток КОНЕЦ КАК Цена
9 Андрюха
 
06.10.12
10:54
сейчас перерисовал запрос, вот так

   Запрос.Текст = "ВЫБРАТЬ
                  |    ХозрасчетныйОстатки.Субконто1 КАК Номенклатура,
                  |    ЕСТЬNULL(ХозрасчетныйОстатки.СуммаОстаток, 0) КАК Остаток,
                  |    ЕСТЬNULL(ХозрасчетныйОстатки.КоличествоОстаток, 0) КАК Сумма
                  //|    ХозрасчетныйОстатки.СуммаОстаток / ХозрасчетныйОстатки.КоличествоОстаток КАК Цена
                  |ИЗ
                  |    РегистрБухгалтерии.Хозрасчетный.Остатки(&ВыбДата, Счет = &ВыбСчет, ,Субконто1 В(&СписокНоменклатуры)) КАК ХозрасчетныйОстатки
                  |";


Один хрен не все позиции попадают, т.е. видимо там остаток с точки зрения запроса = 0 что ли... В оборотно-сальдовой всё есть.
10 zak555
 
06.10.12
10:59
(9) ВыбДата - это с учётом (2) ?
11 Андрюха
 
06.10.12
11:02
(10) Да. Даже делаю на конец года, чтобы уж наверняка, один хэ не взлетает.

Упростил до

   Запрос.Текст = "ВЫБРАТЬ
                  |    ХозрасчетныйОстатки.Субконто1 КАК Номенклатура
                  |ИЗ
                  |    РегистрБухгалтерии.Хозрасчетный.Остатки(&ВыбДата, Счет = &ВыбСчет, ,Субконто1 В(&СписокНоменклатуры)) КАК ХозрасчетныйОстатки
                  |";


Нету номенклатуры, а в обортно-сальдовой есть. Ну как так.
12 Пеппи
 
06.10.12
11:03
(9) ну убери еще условие для номенклатуры и посмотри, только оборотно сальдовая ведемость все таки еще и обороты смотрит. Посмотри по другой таблице с оборотами и остатками
13 zak555
 
06.10.12
11:05
> Один хрен не все позиции попадают

очень просто

1. ОСВ по одному юрику
2. запрос по всем

есть позиции по сторно по разным юрикам =)
14 Андрюха
 
06.10.12
11:08
(13) Организация одна.

Вот скриншот оборотки по этой позиции, которая в запросе не выводится

http://imglink.ru/show-image.php?id=a5997976d801bab8288c2dfc024e21bb
15 Андрюха
 
06.10.12
11:09
вот на другом фотохосте, попроще http://picture-host.ru/v.php?id=58b732ff2aa425bd86edc1bbc9016638
16 zak555
 
06.10.12
11:10
осв по счету  смотри
17 Андрюха
 
06.10.12
11:17
(12) И без условия не попадает
(16) оборотно-сальдовая то же самое говорит - пришли 4 шт 18.09.12
http://picture-host.ru/v.php?id=82ed072b801fa2aa49d4beb728227bf1
18 zak555
 
06.10.12
11:19
что у тебя в СписокНоменклатуры ?
19 Андрюха
 
06.10.12
11:23
(18) Массив, там номенклатура, по которой надо получить себестоимость. Которая не выводится тоже есть, да я и условие совсем убирал, не попадает.

http://picture-host.ru/v.php?id=009a9d1403f6a055e52f006be5f17f69
20 Андрюха
 
06.10.12
11:26
Сделать что ли (дебетовый оборот - кредитовый) с начала года по нужную дату
21 zak555
 
06.10.12
11:30
в ОСВ с отбором в списке - одна позиция
в консоле -- две позиции

запутался
22 Андрюха
 
06.10.12
11:32
(21) в ОСВ я фильтрую как раз по той, которая не попадает в запрос.
23 Андрюха
 
06.10.12
11:39
Ну и ладно, хрен с ним, пускай бухи разбираются...
Запрос же правильный по-идее?