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