|
Неправильно работает вычисляемое поле в СКД | ☑ | ||
---|---|---|---|---|
0
bplmeddy
26.11.19
✎
12:02
|
Доброго времени суток. Есть запрос следующего вида:
ВЫБРАТЬ ТоварыНаСкладахОбороты.Склад, ТоварыНаСкладахОбороты.Номенклатура, ТоварыНаСкладахОбороты.ХарактеристикаНоменклатуры, ЕСТЬNULL(ТоварыНаСкладахОбороты.КоличествоПриход, 0) КАК Поступление, NULL КАК Продажи, NULL КАК Списание, NULL КАК НачальныйОстаток, NULL КАК КонечныйОстаток ИЗ РегистрНакопления.ТоварыНаСкладах.Обороты(&НачалоПериода, &КонецПериода, Авто, ) КАК ТоварыНаСкладахОбороты ГДЕ ТИПЗНАЧЕНИЯ(ТоварыНаСкладахОбороты.Регистратор) = ТИП(Документ.ПоступлениеТоваров) СГРУППИРОВАТЬ ПО ТоварыНаСкладахОбороты.Склад, ТоварыНаСкладахОбороты.Номенклатура, ТоварыНаСкладахОбороты.ХарактеристикаНоменклатуры, ЕСТЬNULL(ТоварыНаСкладахОбороты.КоличествоПриход, 0) ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ПродажиОбороты.Склад, ПродажиОбороты.Номенклатура, ПродажиОбороты.ХарактеристикаНоменклатуры, NULL, ПродажиОбороты.КоличествоОборот, NULL, NULL, NULL ИЗ РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, Период, ) КАК ПродажиОбороты ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ТоварыНаСкладахОбороты.Склад, ТоварыНаСкладахОбороты.Номенклатура, ТоварыНаСкладахОбороты.ХарактеристикаНоменклатуры, NULL, NULL, ТоварыНаСкладахОбороты.КоличествоРасход, NULL, NULL ИЗ РегистрНакопления.ТоварыНаСкладах.Обороты(&НачалоПериода, &КонецПериода, Авто, ) КАК ТоварыНаСкладахОбороты ГДЕ ТИПЗНАЧЕНИЯ(ТоварыНаСкладахОбороты.Регистратор) = ТИП(Документ.СписаниеТоваров) ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ТоварыНаСкладахОстатки.Склад, ТоварыНаСкладахОстатки.Номенклатура, ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры, NULL, NULL, NULL, ТоварыНаСкладахОстатки.КоличествоОстаток, NULL ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(&НачалоПериода, ) КАК ТоварыНаСкладахОстатки ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ТоварыНаСкладахОстатки.Склад, ТоварыНаСкладахОстатки.Номенклатура, ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры, NULL, NULL, NULL, NULL, ТоварыНаСкладахОстатки.КоличествоОстаток ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(&КонецПериода, ) КАК ТоварыНаСкладахОстатки И есть вычисляемое поле СКД вида: ВЫБОР КОГДА Поступление <> 0 ТОГДА Продажи/Поступление*100 ИНАЧЕ Продажи*100 КОНЕЦ Но почему-то, когда значение поступления есть, формула все равно считает по второй части условия (Продажи*100). Хотя само значение продажи в запросе выглядит так: ЕСТЬNULL(ТоварыНаСкладахОбороты.КоличествоПриход, 0) Можете подсказать, в чем именно проблема ? Буду очень благодарен. |
|||
1
bplmeddy
26.11.19
✎
12:03
|
Пардон, опечатался, не значение продажи, а значение поступления.
|
|||
2
hhhh
26.11.19
✎
12:14
|
(1) NULL, уберите везде. Это юмористически выглядит. Пишите по-русски - 0.
|
|||
3
Tonik992
26.11.19
✎
12:16
|
>> Хотя само значение поступления в запросе выглядит так:
>> ЕСТЬNULL(ТоварыНаСкладахОбороты.КоличествоПриход, 0) В это в первом запросе так. А в остальных то NULL |
|||
4
bplmeddy
26.11.19
✎
12:19
|
(2) Емм, в смысле ?
|
|||
5
bplmeddy
26.11.19
✎
12:21
|
||||
6
bplmeddy
26.11.19
✎
12:28
|
(3) Либо я неправильно понимаю вас, либо я чего-то не знаю...
|
|||
7
hhhh
26.11.19
✎
12:30
|
(6) если значение 0, то и пишите 0. Не надо писать через анус: NULL, из-за этого вы огребли реальные проблемы, и всё равно упорствуете. Поставьте везде нкули. Жизнь станет намного проще.
|
|||
8
Tonik992
26.11.19
✎
12:31
|
||||
9
bplmeddy
26.11.19
✎
12:34
|
(7) (8) Хм, не знал что так можно. Сейчас попробую.
|
|||
10
hhhh
26.11.19
✎
12:35
|
(9) а я не знал, что NULL можно.
|
|||
11
bplmeddy
26.11.19
✎
12:36
|
(10) О_о
Так конструктор при создании объединённых запросов сам НУЛЛ проставляет. |
|||
12
Йохохо
26.11.19
✎
12:37
|
(10) нул появляется если втупую не выбрать поля)
|
|||
13
bplmeddy
26.11.19
✎
12:39
|
Неа, поменял везде на нули - результат тот-же.
ВЫБОР КОГДА Поступление <> 0 ТОГДА Продажи/Поступление*100 ИНАЧЕ Продажи*100 КОНЕЦ Вместо первой части условия (Продажи/Поступление*100), всегда считает по второй, не зависимо от того есть значение поступления или нет... |
|||
14
bplmeddy
26.11.19
✎
12:41
|
(13) Попробовал немного изменить условие, на срабатывание если БОЛЬШЕ нуля:
ВЫБОР КОГДА Поступление > 0 ТОГДА Продажи/Поступление*100 ИНАЧЕ Продажи*100 КОНЕЦ Ноль эффекта. |
|||
15
bplmeddy
26.11.19
✎
12:45
|
Есть ещё мысли почему так ?
|
|||
16
bplmeddy
26.11.19
✎
12:56
|
Порой я вообще не понимаю эту систему (1С)...
|
|||
17
bplmeddy
26.11.19
✎
13:06
|
Для интереса решил сложить продажи и поступления - все правильно посчитало.
Вопрос: почему эта ***** не хочет работать с нужной формулой....? |
|||
18
ИУБиПовиц
26.11.19
✎
13:06
|
СГРУППИРОВАТЬ ПО
... ЕСТЬNULL(ТоварыНаСкладахОбороты.КоличествоПриход, 0) А зачем вы группируете по количеству? Зачем вы группируете здесь, а не в СКД? |
|||
19
ИУБиПовиц
26.11.19
✎
13:07
|
Если в запросе убрать эту группировку, поможет?
|
|||
20
bplmeddy
26.11.19
✎
13:09
|
(19) Сейчас попробую.
|
|||
21
bplmeddy
26.11.19
✎
13:13
|
(19) (20) Не помогло. Тот-же результат.
|
|||
22
Йохохо
26.11.19
✎
13:17
|
(21) в консоли запросов выведи результат
|
|||
23
hhhh
26.11.19
✎
13:28
|
(21) у вас получается здесь всегда или поступление = 0 или продажи = 0. То есть результат всегда или 0 или продажи. зачем вообще это выражение, непонятно. выкиньте его, оно ничего не делает.
|
|||
24
vicof
26.11.19
✎
13:44
|
(0) Учить язык запросов. Учить СКД.
1. Убрать Nullы 2. Свернуть данные из 5 таблиц в одну или условие ставить на итоговые поля, а не не детальные. |
|||
25
bplmeddy
26.11.19
✎
16:19
|
Вопрос удалось решить путем отказа от вычисляемого поля и немного изменив запрос:
|
|||
26
bplmeddy
26.11.19
✎
16:20
|
ВЫБРАТЬ
ТоварыНаСкладахОбороты.Склад, ТоварыНаСкладахОбороты.Номенклатура, ТоварыНаСкладахОбороты.ХарактеристикаНоменклатуры, ТоварыНаСкладахОбороты.КоличествоПриход КАК Поступление, 0 КАК Продажи, 0 КАК Списание, 0 КАК НачальныйОстаток, 0 КАК КонечныйОстаток, 0 КАК ТестПрод, 0 КАК ТестПост, 0 КАК ПроцентПродаж ИЗ РегистрНакопления.ТоварыНаСкладах.Обороты(&НачалоПериода, &КонецПериода, Авто, ) КАК ТоварыНаСкладахОбороты ГДЕ ТИПЗНАЧЕНИЯ(ТоварыНаСкладахОбороты.Регистратор) = ТИП(Документ.ПоступлениеТоваров) ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ПродажиОбороты.Склад, ПродажиОбороты.Номенклатура, ПродажиОбороты.ХарактеристикаНоменклатуры, 0, ПродажиОбороты.КоличествоОборот, 0, 0, 0, 0, 0, 0 ИЗ РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, Период, ) КАК ПродажиОбороты ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ТоварыНаСкладахОбороты.Склад, ТоварыНаСкладахОбороты.Номенклатура, ТоварыНаСкладахОбороты.ХарактеристикаНоменклатуры, 0, 0, ТоварыНаСкладахОбороты.КоличествоРасход, 0, 0, 0, 0, 0 ИЗ РегистрНакопления.ТоварыНаСкладах.Обороты(&НачалоПериода, &КонецПериода, Авто, ) КАК ТоварыНаСкладахОбороты ГДЕ ТИПЗНАЧЕНИЯ(ТоварыНаСкладахОбороты.Регистратор) = ТИП(Документ.СписаниеТоваров) ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ТоварыНаСкладахОстатки.Склад, ТоварыНаСкладахОстатки.Номенклатура, ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры, 0, 0, 0, ТоварыНаСкладахОстатки.КоличествоОстаток, 0, 0, 0, 0 ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(&НачалоПериода, ) КАК ТоварыНаСкладахОстатки ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ТоварыНаСкладахОстатки.Склад, ТоварыНаСкладахОстатки.Номенклатура, ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры, 0, 0, 0, 0, ТоварыНаСкладахОстатки.КоличествоОстаток, 0, 0, 0 ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(&КонецПериода, ) КАК ТоварыНаСкладахОстатки ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ПродажиОбороты.Склад, ПродажиОбороты.Номенклатура, ПродажиОбороты.ХарактеристикаНоменклатуры, 0, 0, 0, 0, 0, СУММА(ПродажиОбороты.КоличествоОборот), ТоварыНаСкладахОбороты.КоличествоПриход, ВЫБОР КОГДА ТоварыНаСкладахОбороты.КоличествоПриход ЕСТЬ NULL ТОГДА ПродажиОбороты.КоличествоОборот * 100 ИНАЧЕ ПродажиОбороты.КоличествоОборот / ТоварыНаСкладахОбороты.КоличествоПриход * 100 КОНЕЦ ИЗ РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, Авто, ) КАК ПродажиОбороты ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Обороты КАК ТоварыНаСкладахОбороты ПО ПродажиОбороты.Склад = ТоварыНаСкладахОбороты.Склад И ПродажиОбороты.Номенклатура = ТоварыНаСкладахОбороты.Номенклатура И ПродажиОбороты.ХарактеристикаНоменклатуры = ТоварыНаСкладахОбороты.ХарактеристикаНоменклатуры СГРУППИРОВАТЬ ПО ПродажиОбороты.Склад, ПродажиОбороты.Номенклатура, ПродажиОбороты.ХарактеристикаНоменклатуры, ТоварыНаСкладахОбороты.КоличествоПриход, ВЫБОР КОГДА ТоварыНаСкладахОбороты.КоличествоПриход ЕСТЬ NULL ТОГДА ПродажиОбороты.КоличествоОборот * 100 ИНАЧЕ ПродажиОбороты.КоличествоОборот / ТоварыНаСкладахОбороты.КоличествоПриход * 100 КОНЕЦ |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |