|
СКД: деление на ноль | ☑ | ||
---|---|---|---|---|
0
Темный
08.10.12
✎
12:24
|
Добрый день, коллеги. СКД в вычисляемом поле упорно выводит "деление на ноль". Пытался сделать через Выбор Когда Сумма(КоличествоОстаток) Есть NULL, и через Выбор Когда (Сумма(КоличествоОстаток) Есть NULL) ИЛИ (Сумма(КоличествоОстаток) = 0), и через ЕстьNULL(Сумма(КоличествоОстаток),0) = 0... Один фиг. Почему? Где копать?
|
|||
1
shuhard
08.10.12
✎
12:25
|
(0) ну а вывести в этом поле КоличествоОстаток и позырить что-то мешает ?
|
|||
2
GLazNik
08.10.12
✎
12:27
|
Ничего не понял. Где, что, куда?
но для проверки использовал бы такую формулу Сумма(ЕстьNULL(КоличествоОстаток,0)) |
|||
3
Темный
08.10.12
✎
12:27
|
Вывожу. Понятно, там ноль. Ну или NULL, или что-то еще. Пустое поле выводит.
|
|||
4
ДемонМаксвелла
08.10.12
✎
12:28
|
выведи детальные записи. и тип значения для пустых полей.
|
|||
5
Nenaviwu1c20
08.10.12
✎
12:29
|
Если не ошибаюсь что-то в итогах напутал
|
|||
6
Темный
08.10.12
✎
12:31
|
(2) Попробовал, та же фигня.
Там все просто - левое соединение, но в таблице нет записей. Всегда срабатывало через Выбор Когда ... ЕСТЬ NULL. В запросе, по крайней мере. А в вычисляемом поле в СКД - не хочет. |
|||
7
shuhard
08.10.12
✎
12:32
|
(6) что-то мешает использовать ЕстьNULL в запросе ?
|
|||
8
Темный
08.10.12
✎
12:34
|
(7) Да, мешает. Мне надо именно в вычисляемом поле отлавливать ситуацию, когда ноль в остатках. Если я в запросе подставлю 1, например - будет неверно, расчет пойдет исходя из остатка = 1. А мне нужно, что бы именно вычиисляемое поле было равно 1, когда остаток = 0.
|
|||
9
IronDemon
08.10.12
✎
12:35
|
ВЫБОР
КОГДА ЕСТЬNULL(Сумма(ПланСумма), 0) = 0 ТОГДА 0 ИНАЧЕ Сумма(ФактСумма) * 100 / Сумма(ПланСумма) КОНЕЦ |
|||
10
IronDemon
08.10.12
✎
12:35
|
ВЫБОР
КОГДА ЕСТЬNULL(ПланСумма, 0) = 0 ТОГДА 0 ИНАЧЕ ФактСумма * 100 / ПланСумма КОНЕЦ |
|||
11
Темный
08.10.12
✎
12:36
|
(9) Пробовал. Находил именно этот Ваш пример на форуме. Пишет "деление на ноль"
|
|||
12
shuhard
08.10.12
✎
12:36
|
(8) ещё раз:
что мешает заменить NULL на 0 в запросе ? |
|||
13
Темный
08.10.12
✎
12:41
|
(12) Заменил. В вычисляемом поле сравнивал с 0 (= 0). То же самое.
|
|||
14
shuhard
08.10.12
✎
12:42
|
(13) не верю (с)
|
|||
15
Rovan
гуру
08.10.12
✎
12:43
|
(13) копируй-ка запрос сюда !
|
|||
16
Темный
08.10.12
✎
12:44
|
Он большой... Ок
|
|||
17
GLazNik
08.10.12
✎
12:44
|
(8) NULL и 0 это совершенно разные вещи.
|
|||
18
Темный
08.10.12
✎
12:46
|
Запрос:
ВЫБРАТЬ Номенклатура1.Ссылка КАК Номенклатура, ЗапросОстатков.ХарактеристикаНоменклатуры, ВЫБОР КОГДА ЗапросОстатков.КоличествоОстаток ЕСТЬ NULL ТОГДА 0 ИНАЧЕ ЗапросОстатков.КоличествоОстаток КОНЕЦ КАК КоличествоОстаток, ЗапросОстатков.Период КАК Период, ВЫБОР КОГДА &Переодичность ТОГДА НЕДЕЛЯ(&Период) ИНАЧЕ МЕСЯЦ(&Период) КОНЕЦ КАК СтолбецПериод, ЗапросЦвет.Значение КАК Цвет, ВЫРАЗИТЬ(ЗапросСебестоимость.Себестоимость КАК ЧИСЛО(9, 2)) КАК Себестоимость, ВЫБОР КОГДА ЦеныПоХар.Цена ЕСТЬ NULL ТОГДА ЦеныПоНом.Цена ИНАЧЕ ЦеныПоХар.Цена КОНЕЦ КАК Цена, ЗапросСебестоимость.Остаток КАК ОстатокНаДату, ЗапросОстатков.КоличествоОборот КАК КоличествоПродажи, ЗапросОстатков.СтоимостьОборот КАК СуммаПродажи, ВЫБОР КОГДА &Переодичность ТОГДА 7 ИНАЧЕ РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&Период, МЕСЯЦ), КОНЕЦПЕРИОДА(&Период, МЕСЯЦ), ДЕНЬ) + 1 КОНЕЦ КАК ДнейВПериоде ИЗ Справочник.Номенклатура КАК Номенклатура1 ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ВложенныйЗапрос.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, СУММА(ВложенныйЗапрос.КоличествоОстаток) КАК КоличествоОстаток, ВложенныйЗапрос.Период КАК Период, ВложенныйЗапрос.Номенклатура КАК Номенклатура, СУММА(ВложенныйЗапрос.КоличествоОборот) КАК КоличествоОборот, СУММА(ВложенныйЗапрос.СтоимостьОборот) КАК СтоимостьОборот ИЗ (ВЫБРАТЬ ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, ВЫБОР КОГДА ТоварыНаСкладахОстатки.КоличествоОстаток ЕСТЬ NULL ТОГДА 0 ИНАЧЕ ТоварыНаСкладахОстатки.КоличествоОстаток КОНЕЦ КАК КоличествоОстаток, &Период КАК Период, ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура, 0 КАК КоличествоОборот, 0 КАК СтоимостьОборот ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(&Период, &ОстаткиНаСкладе) КАК ТоварыНаСкладахОстатки ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ТоварыПереданныеОстатки.ХарактеристикаНоменклатуры, ВЫБОР КОГДА ТоварыПереданныеОстатки.КоличествоОстаток ЕСТЬ NULL ТОГДА 0 ИНАЧЕ ТоварыПереданныеОстатки.КоличествоОстаток КОНЕЦ, &Период, ТоварыПереданныеОстатки.Номенклатура, 0, 0 ИЗ РегистрНакопления.ТоварыПереданные.Остатки(&Период, &ОстаткиУКоммисионеров) КАК ТоварыПереданныеОстатки ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ПродажиОбороты.ХарактеристикаНоменклатуры, 0, &Период, ПродажиОбороты.Номенклатура, ПродажиОбороты.КоличествоОборот, ПродажиОбороты.СтоимостьОборот ИЗ РегистрНакопления.Продажи.Обороты(НАЧАЛОПЕРИОДА(&Период, ДЕНЬ), КОНЕЦПЕРИОДА(&Период, ДЕНЬ), День, ) КАК ПродажиОбороты) КАК ВложенныйЗапрос СГРУППИРОВАТЬ ПО ВложенныйЗапрос.ХарактеристикаНоменклатуры, ВложенныйЗапрос.Номенклатура, ВложенныйЗапрос.Период) КАК ЗапросОстатков ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ЗначенияСвойствОбъектов.Объект КАК Объект, ЗначенияСвойствОбъектов.Значение КАК Значение ИЗ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов ГДЕ ЗначенияСвойствОбъектов.Свойство = &СвойствоЦвет) КАК ЗапросЦвет ПО ЗапросОстатков.ХарактеристикаНоменклатуры = ЗапросЦвет.Объект ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ПартииТоваровНаСкладахОстатки.Номенклатура КАК Номенклатура, ПартииТоваровНаСкладахОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, ВЫБОР КОГДА ПартииТоваровНаСкладахОстатки.КоличествоОстаток ЕСТЬ NULL ИЛИ ПартииТоваровНаСкладахОстатки.СтоимостьОстаток ЕСТЬ NULL ИЛИ ПартииТоваровНаСкладахОстатки.КоличествоОстаток = 0 ИЛИ ПартииТоваровНаСкладахОстатки.СтоимостьОстаток = 0 ТОГДА 1 ИНАЧЕ ПартииТоваровНаСкладахОстатки.СтоимостьОстаток / ПартииТоваровНаСкладахОстатки.КоличествоОстаток КОНЕЦ КАК Себестоимость, ПартииТоваровНаСкладахОстатки.КоличествоОстаток КАК Остаток ИЗ РегистрНакопления.ПартииТоваровНаСкладах.Остатки(&ДатаОст, ) КАК ПартииТоваровНаСкладахОстатки) КАК ЗапросСебестоимость ПО ЗапросОстатков.Номенклатура = ЗапросСебестоимость.Номенклатура И ЗапросОстатков.ХарактеристикаНоменклатуры = ЗапросСебестоимость.ХарактеристикаНоменклатуры ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ МАКСИМУМ(ЦеныНоменклатуры.Цена) КАК Цена, ЦеныСрезПоследних.Номенклатура КАК Номенклатура ИЗ (ВЫБРАТЬ МАКСИМУМ(ЦеныНоменклатурыСрезПоследних.Период) КАК Период, ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура ИЗ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаОст, ) КАК ЦеныНоменклатурыСрезПоследних ГДЕ ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен СГРУППИРОВАТЬ ПО ЦеныНоменклатурыСрезПоследних.Номенклатура) КАК ЦеныСрезПоследних ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры ПО ЦеныСрезПоследних.Период = ЦеныНоменклатуры.Период И ЦеныСрезПоследних.Номенклатура = ЦеныНоменклатуры.Номенклатура СГРУППИРОВАТЬ ПО ЦеныСрезПоследних.Номенклатура) КАК ЦеныПоНом ПО ЗапросОстатков.Номенклатура = ЦеныПоНом.Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ МАКСИМУМ(ЦеныНоменклатуры.Цена) КАК Цена, ЦеныСрезПоследних.Номенклатура КАК Номенклатура, ЦеныСрезПоследних.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры ИЗ (ВЫБРАТЬ МАКСИМУМ(ЦеныНоменклатурыСрезПоследних.Период) КАК Период, ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура, ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры ИЗ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаОст, ) КАК ЦеныНоменклатурыСрезПоследних ГДЕ ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен СГРУППИРОВАТЬ ПО ЦеныНоменклатурыСрезПоследних.Номенклатура, ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры) КАК ЦеныСрезПоследних ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры ПО ЦеныСрезПоследних.Период = ЦеныНоменклатуры.Период И ЦеныСрезПоследних.Номенклатура = ЦеныНоменклатуры.Номенклатура И ЦеныСрезПоследних.ХарактеристикаНоменклатуры = ЦеныНоменклатуры.ХарактеристикаНоменклатуры СГРУППИРОВАТЬ ПО ЦеныСрезПоследних.Номенклатура, ЦеныСрезПоследних.ХарактеристикаНоменклатуры) КАК ЦеныПоХар ПО ЗапросОстатков.Номенклатура = ЦеныПоХар.Номенклатура И ЗапросОстатков.ХарактеристикаНоменклатуры = ЦеныПоХар.ХарактеристикаНоменклатуры ПО Номенклатура1.Ссылка = ЗапросОстатков.Номенклатура {ХАРАКТЕРИСТИКИ ТИП(Справочник.Номенклатура) СПИСОК (ВЫБРАТЬ СвойстваОбъектов.Ссылка, СвойстваОбъектов.Наименование + " (св-во)" КАК Наименование, СвойстваОбъектов.ТипЗначения ИЗ ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов ГДЕ СвойстваОбъектов.НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Номенклатура) И (НЕ СвойстваОбъектов.ПометкаУдаления)) ИДЕНТИФИКАТОР Ссылка ИМЯ Наименование ТИПЗНАЧЕНИЯ ТипЗначения ЗНАЧЕНИЯ РегистрСведений.ЗначенияСвойствОбъектов ОБЪЕКТ Объект ХАРАКТЕРИСТИКА Свойство ЗНАЧЕНИЕ Значение } |
|||
19
Темный
08.10.12
✎
12:49
|
Что бы было проще: Это оборачиваемость. Плюс к оборачиваемости пристегнуты остатки на произвольную дату (в количестве, себестоимости, и продажных ценах) и продажи.
|
|||
20
Rovan
гуру
08.10.12
✎
12:52
|
Это внешний отчет ?
|
|||
21
Темный
08.10.12
✎
12:57
|
(20) В СКД.
|
|||
22
Темный
08.10.12
✎
12:58
|
Да, внешний
|
|||
23
Rovan
гуру
08.10.12
✎
13:05
|
(22) бывают что забывают сохранить в Конфигураторе и 1С выполняет старую версию !
|
|||
24
Темный
08.10.12
✎
13:06
|
(23) Бывает, конечно. Не этот случай.
|
|||
25
Rovan
гуру
08.10.12
✎
13:42
|
(24) а еще бывает 1С кэширует обработку..... перезапусти 1С
|
|||
26
Темный
08.10.12
✎
13:54
|
(25) Да нет, с этим все в порядке. Я в запросе для проверки сделал КоличествоОстаток = 0,0001 (в том случае, когда 0 или null). И в вычисляемом поле поставил проверку < 1. Все работает, конечно, но как-то неаккуратно получается. :-(
|
|||
27
Темный
09.10.12
✎
19:39
|
Млин, уже третий день долблюсь с этой хренью.
Коллеги, вопрос!!!! Как в этой долбаной СКД сделать так, что бы в левом соединении выводились все записи, даже если там везде NULL? Добавил в правом запросе поле "1", ну то есть единичку. Нифига - все равно половины строк нет. |
|||
28
Темный
09.10.12
✎
19:46
|
Кстати, с тем вопросом про деление на ноль разобрался.Надо было на закладку "ресурсы" в поле "выражение" скопировать то же, что было на закладке "Вычисляемые поля" в поле "выражение"
|
|||
29
Челмедведосвин
09.10.12
✎
19:52
|
Попробуй 2 набора данных. СКД их по левому соединению соединяет. Подробнее у Гилева было в курсе про СКД, ссылка к нему всегда тут висит.
|
|||
30
Темный
06.11.12
✎
13:59
|
Братья-1сники, помогите. Уже полтора месяца (с перерывами, правда) мучаю эту долбаную СКД.
|
|||
31
Темный
06.11.12
✎
14:00
|
Задача простая - отчет по оборачиваемости. Нужны остатки на каждый день, для точного подсчета среднего остатка.
|
|||
32
Темный
06.11.12
✎
14:07
|
||||
33
Темный
06.11.12
✎
14:09
|
Все вроде бы работает, НО! Нужно пристегнуть еще одну таблицу в отчет, где бы выводились остатки на произвольную дату. И тут началась ( ! ). Остатки на дату я получил, но они дублируются, точнее, выводятся столько раз, сколько раз отрабатывает запрос по каждой дате.
|
|||
34
Темный
06.11.12
✎
14:12
|
Думаю, ладно, фиг с ним, разделю на количество дней периода. Не работает! Таблица с остатками на дату выводится не на каждый день периода, а только на те даты, где есть остатки на складе. Почему - понять не могу. Пытался ввести поле, где просто "1" - ни фига, нет выборки по каждой дате!
|
|||
35
Темный
06.11.12
✎
14:47
|
||||
36
Темный
06.11.12
✎
15:56
|
up!
|
|||
37
Темный
07.11.12
✎
10:57
|
1000 руб :-(
|
|||
38
Нуф-Нуф
07.11.12
✎
11:03
|
делить на 0 - грех
|
|||
39
Темный
07.11.12
✎
11:04
|
Да с этим я разобрался...
|
|||
40
Темный
07.11.12
✎
11:28
|
Пробовал и по-другому, создал отдельный набор данных для остатков, получаемых на дату. Вообще не работает, виснет и все. Вот здесь лежит:
http://zalil.ru/33934664 |
|||
41
hhhh
07.11.12
✎
12:14
|
(40) вообще-то для оборачиваемости не обязательно иметь остаток на каждый день. Можно обойтись оборотами.
Например, остаток на начало месяца 100 рублей. считаем, что он есть до конца месяца, то есть умножаем на 30. Потом допустим 10-го числа был приход 50 рублей. Его умножаем на количество дней, когда он применялся, т.е. (30-10)+1 = 21. Так же и расход, но со знаком минус. И так все движения в месяце. В итоге получаем ту же самую формулу, но остатки на каждый день просчитывать не надо. |
|||
42
Темный
07.11.12
✎
13:08
|
Да, можно и так. Только у меня все уже готово. Споткнулся о какую-то совершенно мне непонятную ерунду...
|
|||
43
Темный
12.11.12
✎
11:12
|
Помогите, пожалуйста!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |