Вход | Регистрация


Определение правильной формулы расчета вычисляемого поля в СКД

Определение правильной формулы расчета вычисляемого поля в СКД
Я
   TolstiyBeremenniy
 
24.09.18 - 13:55
Необходим правильный расчет вычисляемого поля в СКД.
Пока, написал вот такую формулу.

ВЫБОР
// ТУТ ОПРЕДЕЛЕНИЕ ЗАПОЛНЕНА ЛИ ЯЧЕЙКА 11*, ТАК КАК В ПОЛЕ 11*

// ПО ЭТОМУ УСЛОВИЮ ВЫВОДИТСЯ 0, ТО ЕСТЬ ЕСЛИ НЕ ЗАПОЛНЕНА ТО
   КОГДА ДатаСнятияПравНаОбъектНедвижимости = ДАТАВРЕМЯ(1,1,1) ТОГДА 
      ВЫБОР
         КОГДА ЕСТЬNULL(ЗначениеК, 0) = 0 ТОГДА
            СуммаНалога
     ИНАЧЕ
        СуммаНалога * ЕСТЬNULL(ЗначениеК, 1)
     КОНЕЦ
   ИНАЧЕ 
// ТУТ ОПРЕДЕЛЕНИЕ УСЛОВИЯ ЕСЛИ 11* ЗАПОЛНЕНА, АНАЛОГ УСЛОВИЯ

// ПРЕДЫДУЩЕЙ ВЕТКИ, УМНОЖЕННЫЙ НА КОЛОНКИ (11*/11)
      ВЫБОР
         КОГДА ЕСТЬNULL(ЗначениеК, 0) = 0 ТОГДА
            СуммаНалога * (КоличествоМесяцевВладения - (МЕСЯЦ(ПериодСнятияСУчета) - МЕСЯЦ(ДатаСнятияПравНаОбъектНедвижимости))/КоличествоМесяцевВладения)
     ИНАЧЕ
        СуммаНалога * ЕСТЬNULL(ЗначениеК, 1) * (КоличествоМесяцевВладения - (МЕСЯЦ(ПериодСнятияСУчета) - МЕСЯЦ(ДатаСнятияПравНаОбъектНедвижимости))/КоличествоМесяцевВладения)
     КОНЕЦ
КОНЕЦ


Может ли она корректно отработать?
Пока вижу что значение не то в ячейке.

http://joxi.ru/DmBQD6LTw5LgBr
 
 
   TolstiyBeremenniy
 
1 - 24.09.18 - 14:12
Общая схема выражения такая, -

ЕСЛИ КОЛОНКА 11* НЕ ЗАПОЛНЕНА (которая сама вычисляется в вычисляемом поле), то

Если заполнена колонка 6*, то результат колонка 15 * колонка 6*.

Если не заполнена колонка 6*, то результат колонка 15.
ЕСЛИ КОЛОНКА 11* ЗАПОЛНЕНА, ТО

Если заполнена колонка 6*, то результат колонка 15 * колонка 6* * (колонка 11*/11).

Если не заполнена колонка 6*, то результат колонка 15 * (колонка 11*/11).
   TolstiyBeremenniy
 
2 - 24.09.18 - 14:33
Вообще я хотел узнать адекватное ли условие, что представлено в (0)?
   TolstiyBeremenniy
 
3 - 24.09.18 - 15:03
Выяснил, да вот это контрольный пример http://joxi.ru/DmBQD6LTw5LgBr .
В колонке 15* должно быть 9.
У меня почему то условие из 0 выдает 63.
Дкмаю что не так. Буду рад любым подсказкам.
   Lexandr
 
4 - 24.09.18 - 15:14
Использовать ЕСТЬNULL  в вычисляемом поле на мой взгляд не есть хорошая идея. Для поля ЗначениеК  в наборе данных тип значения определен?
   TolstiyBeremenniy
 
5 - 24.09.18 - 15:31
(4) Это число, 15.2 из регистра сведений.
Тут вопрос в том почему не пересчиталось на значение 9,
как показывает калькулятор. А выдало 63!
   Lexandr
 
6 - 24.09.18 - 16:17
У тебя 27*7/3 = 63. Откуда у тебя там 7 получается. Ну могу предположить, что (МЕСЯЦ(ПериодСнятияСУчета) - МЕСЯЦ(ДатаСнятияПравНаОбъектНедвижимости) = - 4. И таки да, использовать ЕСТЬNULL в условии, а потом использовать в формуле неправильно, когда тебе по сути уже известен результат.
   TolstiyBeremenniy
 
7 - 24.09.18 - 16:29
(6) (27*1)*(1/3) = 9

Там же вот такая формула!!!!

От куда 27*7/3 ?
   breezee
 
8 - 24.09.18 - 18:52
(7) Сделайте еще одну ВТ только для расчетов. Для вас не долго, для системы почти не вредно(кроме разрастания темпДБ) и для поддержки решения читать легче. Заодно, может и косяк свой  найдете. Я косяк не искал, извините
   TolstiyBeremenniy
 
9 - 25.09.18 - 03:58
(8) Каким образом?
Тут 2 набора данных.
Нужная формула в вычисляемом поле, в котором используются
данные из первого и из второго набора.
Потому формула и рассчитывается в вычисляемом поле.
Нужно её исправить просто если в неё ошибка.
Что я и делаю сейчас, проверяю.
Посмотрел вроде все с ней нормально.
Но ошибки не нашел.
   TolstiyBeremenniy
 
10 - 25.09.18 - 04:02
Делаю первую проверку.
Нужно определить, правильно ли считается что поле 11*
заполнено или нет?!!!


ВЫБОР
   КОГДА ДатаСнятияПравНаОбъектНедвижимости = ДАТАВРЕМЯ(1,1,1) ТОГДА 
      55
   ИНАЧЕ
      77
КОНЕЦ


http://joxi.ru/MAjylWoT4E58R2



Получается что, определение, заполнена ли колонка 11*
или нет выполняется правильно!
 
 Рекламное место пустует
   TolstiyBeremenniy
 
11 - 25.09.18 - 04:27
Попробовал вот так. Если без /3 то в поле выводится 1.
Как и в 11* то есть все верно. Но когда добавил /3
то в поле ничего ен вывелось. Есть подозрение что строка
делится на 3. Так ли? Если так то можно ли в вычисляемом поле операнд преобразовать к числу?
   TolstiyBeremenniy
 
12 - 25.09.18 - 04:28
(11+)

  ИНАЧЕ 
      (КоличествоМесяцевВладения - (МЕСЯЦ(ПериодСнятияСУчета) - МЕСЯЦ(ДатаСнятияПравНаОбъектНедвижимости))) / 3
КОНЕЦ
   TolstiyBeremenniy
 
13 - 25.09.18 - 04:35
Попробовал вот так, 

ВЫБОР
   КОГДА ДатаСнятияПравНаОбъектНедвижимости = ДАТАВРЕМЯ(1,1,1) ТОГДА 
      55
   ИНАЧЕ 
      1 / 3
КОНЕЦ

Но опять же в поле пусто. Почему?
Там такое число должно быть 0,3333333333333333
Как показал калькулятор
   TolstiyBeremenniy
 
14 - 25.09.18 - 04:39
Поставил, вот так, вывелось 4, то есть с числом все нормально. Почему на деление выводится пусто?

ВЫБОР
   КОГДА ДатаСнятияПравНаОбъектНедвижимости = ДАТАВРЕМЯ(1,1,1) ТОГДА 
      55
   ИНАЧЕ 
      1 + 3
КОНЕЦ
   TolstiyBeremenniy
 
15 - 25.09.18 - 04:48
Итак вопрос, почему в ячейке не выводится 1/3 = 0,3333333333333333.
Сложение (14) вывелось = 4.
   TolstiyBeremenniy
 
16 - 25.09.18 - 05:00
(15) Этот вопрос, снят!!!!! Там был формат задан в настройках потому что. Без дробной части!!!!
   TolstiyBeremenniy
 
17 - 25.09.18 - 05:44
Решено:

ВЫБОР
   КОГДА ДатаСнятияПравНаОбъектНедвижимости = ДАТАВРЕМЯ(1,1,1) ТОГДА 
      ВЫБОР
         КОГДА ЕСТЬNULL(ЗначениеК, 0) = 0 ТОГДА
            СуммаНалога
     ИНАЧЕ
        СуммаНалога * ЕСТЬNULL(ЗначениеК, 1)
     КОНЕЦ
   ИНАЧЕ 
      ВЫБОР
         КОГДА ЕСТЬNULL(ЗначениеК, 0) = 0 ТОГДА
            СуммаНалога * ((КоличествоМесяцевВладения - ( МЕСЯЦ(ПериодСнятияСУчета) - МЕСЯЦ(ДатаСнятияПравНаОбъектНедвижимости)))/КоличествоМесяцевВладения)
     ИНАЧЕ
(СуммаНалога * ЕСТЬNULL(ЗначениеК, 1)) * ((КоличествоМесяцевВладения - ( МЕСЯЦ(ПериодСнятияСУчета) - МЕСЯЦ(ДатаСнятияПравНаОбъектНедвижимости)))/КоличествоМесяцевВладения)
     КОНЕЦ
КОНЕЦ
   dmt
 
18 - 25.09.18 - 08:23
Проверь, что будет,  если ПериодСнятияСУчета = 01.01.хх, а ДатаСнятияПравНаОбъектНедвижимости = 01.12.уу

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует