Где заключается алгоритмическая ошибка кода в 1С?
`Прилагаю код для теста.
функция ВычислитьЦенуТовара (СуммаВключаетНДС, Кол_во, СуммаСНДС, СуммаНДС)
Если СуммаВключаетНДС Тогда
Попытка
Кол_во = Число(Кол_во);
Исключение
КонецПопытки;
Попытка
Сумма = Число(СуммаСНДС);
Исключение
КонецПопытки;
Попытка
СуммаНДС = Число(СуммаНДС);
Исключение
КонецПопытки;
Возврат (СуммаСНДС-СуммаНДС)/Кол_во;
Иначе
Возврат СуммаСНДС/Кол_во;
КонецЕсли;
Возврат 0;
Конецфункции
Функция по расчету цены товара. Где то допущена алгоритмическая ошибка кода.
Ответы (2 шт):
Автор решения: rusgeli
→ Ссылка
Я вообще не знаю 1С, но могу предположить по логике работы программы, что вместо Сумма = Число(СуммаСНДС); должно быть СуммаСНДС = Число(СуммаСНДС);. В противном случае может быть передано строковое значение, например, и функция не отработает.
P.S.: Просьба прикладывать код вместо фотографий
Автор решения: kio
→ Ссылка
Скорее всего должно быть так:
функция ВычислитьЦенуТовара (СуммаВключаетНДС, Кол_во, СуммаСНДС, СуммаНДС)
// преобразование выносим перед условием проверки наличия НДС, так-как получается что для С НДС мы приводим типы, а без - нет.
Попытка
Кол_во = Число(Кол_во);
Исключение
// нет обработки исключения, вероятно должно быть что то типа такого
// Сообщить("Ошибка не удалось преобразовать кол-во в число!")
// Возврат 0;
КонецПопытки;
Попытка
СуммаСНДС = Число(СуммаСНДС);// Неверное имя переменной, должно быть СуммаСНДС, а не Сумма
Исключение
// нет обработки исключения, вероятно должно быть что то типа такого
// Сообщить("Ошибка не удалось преобразовать Сумму с НДС в число!")
// Возврат 0;
КонецПопытки;
Попытка
СуммаНДС = Число(СуммаНДС);
Исключение
// нет обработки исключения, вероятно должно быть что то типа такого
// Сообщить("Ошибка не удалось преобразовать Сумму НДС в число!")
// Возврат 0;
КонецПопытки;
Если СуммаВключаетНДС Тогда
Возврат (СуммаСНДС-СуммаНДС)/Кол_во;
Иначе
Возврат СуммаСНДС/Кол_во;
КонецЕсли;
Возврат 0;
Конецфункции