Где заключается алгоритмическая ошибка кода в 1С?

`Прилагаю код для теста.

функция ВычислитьЦенуТовара (СуммаВключаетНДС, Кол_во, СуммаСНДС, СуммаНДС) 
    Если СуммаВключаетНДС Тогда
    Попытка
        Кол_во = Число(Кол_во);
    Исключение
    КонецПопытки;
    
    Попытка
        Сумма = Число(СуммаСНДС);
    Исключение
    КонецПопытки;
    
    Попытка
        СуммаНДС = Число(СуммаНДС);
    Исключение
    КонецПопытки;
    
    Возврат (СуммаСНДС-СуммаНДС)/Кол_во;
Иначе
    Возврат СуммаСНДС/Кол_во;
КонецЕсли;
Возврат 0;
 Конецфункции

введите сюда описание изображения Функция по расчету цены товара. Где то допущена алгоритмическая ошибка кода.


Ответы (2 шт):

Автор решения: rusgeli

Я вообще не знаю 1С, но могу предположить по логике работы программы, что вместо Сумма = Число(СуммаСНДС); должно быть СуммаСНДС = Число(СуммаСНДС);. В противном случае может быть передано строковое значение, например, и функция не отработает.

P.S.: Просьба прикладывать код вместо фотографий

→ Ссылка
Автор решения: kio

Скорее всего должно быть так:

функция ВычислитьЦенуТовара (СуммаВключаетНДС, Кол_во, СуммаСНДС, СуммаНДС) 

// преобразование выносим перед условием проверки наличия НДС, так-как получается что для С НДС мы приводим типы, а без - нет.
Попытка
    Кол_во = Число(Кол_во);
Исключение
    // нет обработки исключения, вероятно должно быть что то типа такого
    // Сообщить("Ошибка не удалось преобразовать кол-во в число!")
    // Возврат 0;
КонецПопытки;

Попытка
    СуммаСНДС = Число(СуммаСНДС);// Неверное имя переменной, должно быть СуммаСНДС, а не Сумма
Исключение
    // нет обработки исключения, вероятно должно быть что то типа такого
    // Сообщить("Ошибка не удалось преобразовать Сумму с НДС в число!")
    // Возврат 0;
КонецПопытки;

Попытка
    СуммаНДС = Число(СуммаНДС);
Исключение
    // нет обработки исключения, вероятно должно быть что то типа такого
    // Сообщить("Ошибка не удалось преобразовать Сумму НДС в число!")
    // Возврат 0;
КонецПопытки;

Если СуммаВключаетНДС Тогда
    Возврат (СуммаСНДС-СуммаНДС)/Кол_во;  
Иначе
    Возврат СуммаСНДС/Кол_во;
КонецЕсли;

Возврат 0;

Конецфункции

→ Ссылка