Имя: Пароль:
1C
 
Определение правильной формулы расчета вычисляемого поля в СКД
,
0 Tolstiy Beremenniy
 
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
1 Tolstiy Beremenniy
 
24.09.18
14:12
Общая схема выражения такая, -

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

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

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

ЕСЛИ КОЛОНКА 11* ЗАПОЛНЕНА, ТО

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

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

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

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


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


http://joxi.ru/MAjylWoT4E58R2



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

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

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

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

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

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