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