|   |   | 
| 
 | Неправильно работает вычисляемое поле в СКД | ☑ | ||
|---|---|---|---|---|
| 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 КОНЕЦ | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |