Задача 180.7608

Задача :180.7608

2013-12-08 03:10:37
Краткое описание :
Проверка алгоритма в момент исполнения - указывает не на ту строку
Описание :
Алгоритмыов начисления амортизации
Что измененно :
1) Настроил алгоритм амортизации.
2) Запустил пункт локального меню в окне редактирования алгоритма амортизации
"Проверка корректности алгоритма".
3) Система выдала - Алгоритм расчета корректен.
4) Закрепляю алгоритм в карточке ОС.
5) Нажимаю Alt+S для тестового просчета амортизации - получаю сообщение:

---------------------------
Предупреждение
---------------------------
Алгоритм расчета амортизации некорректен
№п/п: 1 Ключ: &STOIMM
Формула: IF(ISVALIDALL(TNARCIZNOS), ARCIZNOS.STOIM, SPKATOS.STOIM)
---------------------------
ОК
---------------------------

6) Попробовал взять содержимое ключа &STOIMM и подставить его в поле "Алгоритм"
в шапке алгоритма.
Запустил тестовый расчет. Сообщений об ошибке нет. Очевидно что само это
выражение правильное.

7) Методом тыка нашел, что проблема не в ключе &STOIMM, а в ключе &CorrIznos =
if(isValidAll(tnSpMoveOsCorAmort) and (SpMoveCorAmort.Proved=1),
SpMoveOsCorAmort.NewSumIzn, 0)
Если его заменить на 0, то сообщение об ошибке пропадает.


Отсюда две проблемы:
1. Почему проверка из контекстного меню говорит что алгоритм корректен, если
при его выполнении оказывается, что он некорректен.
Значит какая-то из проверок работает неверно. Нужно исправлять.

2. Сообщение об ошибке указывает на то что некорректен первый ключ среди всех
ключей, в то время как некорректность вовсе не в этом ключе.
Значит сообщение системы проверки алгоритма генерится неверно. Нужно исправлять.
Как измененно :
Теперь проверка алгоритма в момент исполнения - указывает на
строку в которой обнаружена ошибка.

Название продукта Название компонента Тип Последняя версия Дата выхода
F_ALGF_ALGRES9.1.4.02013-12-08 03:10:37
F_OSOPERF_OSOPERRES9.1.10.02013-12-08 03:10:41
F_OSOPERF_OSOPERRES9.1.010.0