Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
29 мар 2024, 16:36

Преобразование значения к типу Число не может быть выполнено

Автор damir-it, 10 фев 2016, 06:47

0 Пользователей и 1 гость просматривают эту тему.

damir-it

Уважаемые форумчане
С недавнего времени начал изучать восьмую версию платформы 1С, до этого программировал на семерке, возникла необходимость создать новый документ в 1С 8 версии по образцу документа с 1с 7.7 , с глобального модуля семерки перенес функцию для этого документа в общий модуль восьмерки, при проверке вылетела ошибка;
{ОбщийМодуль.ОбщегоНазначенияГлобальный.Модуль(3809)}: Преобразование значения к типу Число не может быть выполнено
   Процент = ?(Процент=0,СортКласс*100,Процент);   // 

вот функция этого документа;

Функция глРассчитатьЦенуХлопка(Котировка,Сорт,Класс,Тип,КодТипа,Коэффициент,Процент, СкидкаПоКонтракту=0) Экспорт
   Перем СортКлас;
   УстЦена = 22.046;
   Скидка = 0.15;
   КодТипа = ?(ПустаяСтрока(КодТипа)=0,КодТипа,?(Тип=5,"35","36"));
   Если (Тип = 5) и (СокрЛП(КодТипа) = "34") Тогда
       КоэфТип = 0.987;
   ИначеЕсли (Тип = 4) и (СокрЛП(КодТипа) = "36") Тогда
      КоэфТип = 1.0137;
   Иначе
      КоэфТип = 1.000;
   КонецЕсли;
   Если Коэффициент = 0 Тогда
       Коэффициент = КоэфТип;
   КонецЕсли;
   
   СортКлас = 0.00;
   Если Сорт = 1 Тогда
       Если Класс = Перечисления.Классы.хороший Тогда
         СортКласс = 0.05;
      ИначеЕсли Класс = Перечисления.Классы.высший Тогда
         СортКласс = 0.04;
      ИначеЕсли Класс = Перечисления.Классы.лучший Тогда
         СортКласс = -0.035;
      ИначеЕсли Класс = Перечисления.Классы.плохой Тогда
         СортКласс = -0.075;
      КонецЕсли;
   ИначеЕсли Сорт = 2 Тогда
       Если Класс = Перечисления.Классы.Олий Тогда
         СортКласс = 0.02;
      ИначеЕсли Класс = Перечисления.Классы.хороший Тогда
         СортКласс = -0.01;
      ИначеЕсли Класс = Перечисления.Классы.средний Тогда
         СортКласс = -0.045;
      ИначеЕсли Класс = Перечисления.Классы.высший Тогда
         СортКласс = -0.08;
      ИначеЕсли Класс = Перечисления.Классы.плохой Тогда
         СортКласс = -0.12;
      КонецЕсли;
   ИначеЕсли Сорт = 3 Тогда
      Если Класс = Перечисления.Классы.лучший Тогда
         СортКласс = -0.035;
      ИначеЕсли Класс = Перечисления.Классы.средний Тогда
         СортКласс = -0.07;
      ИначеЕсли Класс = Перечисления.Классы.хороший Тогда
         СортКласс = -0.115;
      ИначеЕсли Класс = Перечисления.Классы.плохой Тогда
         СортКласс = -0.16;
      КонецЕсли;   
   ИначеЕсли Сорт = 4 Тогда
      Если Класс = Перечисления.Классы.лучший Тогда
         СортКласс = -0.15;
      ИначеЕсли Класс = Перечисления.Классы.средний Тогда
         СортКласс = -0.20;
      ИначеЕсли Класс = Перечисления.Классы.хороший Тогда
         СортКласс = -0.25;
      ИначеЕсли Класс = Перечисления.Классы.плохой Тогда
         СортКласс = -0.30;
      КонецЕсли;   
   ИначеЕсли Сорт = 5 Тогда
      Если Класс = Перечисления.Классы.средний Тогда
         СортКласс = -0.45;
      ИначеЕсли Класс = Перечисления.Классы.хороший Тогда
         СортКласс = -0.50;
      ИначеЕсли Класс = Перечисления.Классы.плохой Тогда
         СортКласс = -0.55;
      КонецЕсли;   
   КонецЕсли;
   Сообщить(СортКласс);
   Процент = ?(Процент=0,СортКласс*100,Процент);   // 
   Цена = Котировка*УстЦена;
    Цена = Цена-Цена*Скидка;
   Цена = Цена+Цена*Процент/100;
   Цена = Цена*Коэффициент;
   //Добавляем расчет с учетом скидки по контракту
   Цена = Цена - Цена * СкидкаПоКонтракту / 100;
   Возврат Цена;
КонецФункции

восьмерку осваивать начал совсем недавно, поэтому сильно не пинайте,
вроде все правильно не могу понять где здесь ошибка.
Разъясните пожалуйста
С Уважением Дамир

cska-fanat-kz

Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

damir-it

я подкорректировал функцию;
глРассчитатьЦенуХлопка(Котировка,Сорт,Класс,Тип,КодТипа,Коэффициент,Процент, СкидкаПоКонтракту=0) Экспорт
   
   УстЦена = 22.046;
   Скидка = 0.15;
   КодТипа = ?(ПустаяСтрока(КодТипа)=0,КодТипа,?(Тип=5,"35","36"));
   Если (Тип = 5) и (СокрЛП(КодТипа) = "34") Тогда
       КоэфТип = 0.987;
   ИначеЕсли (Тип = 4) и (СокрЛП(КодТипа) = "36") Тогда
      КоэфТип = 1.0137;
   Иначе
      КоэфТип = 1.000;
   КонецЕсли;
   Если Коэффициент = 0 Тогда
       Коэффициент = КоэфТип;
   КонецЕсли;
   
   
   Если Сорт = 1 Тогда
       Если Класс = Перечисления.Классы.хороший Тогда
         СортКласс = 0.05;
      ИначеЕсли Класс = Перечисления.Классы.высший Тогда
         СортКласс = 0.04;
      ИначеЕсли Класс = Перечисления.Классы.лучший Тогда
         СортКласс = -0.035;
      ИначеЕсли Класс = Перечисления.Классы.плохой Тогда
         СортКласс = -0.075;
      КонецЕсли;
   ИначеЕсли Сорт = 2 Тогда
       Если Класс = Перечисления.Классы.Олий Тогда
         СортКласс = 0.02;
      ИначеЕсли Класс = Перечисления.Классы.хороший Тогда
         СортКласс = -0.01;
      ИначеЕсли Класс = Перечисления.Классы.средний Тогда
         СортКласс = -0.045;
      ИначеЕсли Класс = Перечисления.Классы.высший Тогда
         СортКласс = -0.08;
      ИначеЕсли Класс = Перечисления.Классы.плохой Тогда
         СортКласс = -0.12;
      КонецЕсли;
   ИначеЕсли Сорт = 3 Тогда
      Если Класс = Перечисления.Классы.лучший Тогда
         СортКласс = -0.035;
      ИначеЕсли Класс = Перечисления.Классы.средний Тогда
         СортКласс = -0.07;
      ИначеЕсли Класс = Перечисления.Классы.хороший Тогда
         СортКласс = -0.115;
      ИначеЕсли Класс = Перечисления.Классы.плохой Тогда
         СортКласс = -0.16;
      КонецЕсли;   
   ИначеЕсли Сорт = 4 Тогда
      Если Класс = Перечисления.Классы.лучший Тогда
         СортКласс = -0.15;
      ИначеЕсли Класс = Перечисления.Классы.средний Тогда
         СортКласс = -0.20;
      ИначеЕсли Класс = Перечисления.Классы.хороший Тогда
         СортКласс = -0.25;
      ИначеЕсли Класс = Перечисления.Классы.плохой Тогда
         СортКласс = -0.30;
      КонецЕсли;   
   ИначеЕсли Сорт = 5 Тогда
      Если Класс = Перечисления.Классы.средний Тогда
         СортКласс = -0.45;
      ИначеЕсли Класс = Перечисления.Классы.хороший Тогда
         СортКласс = -0.50;
      ИначеЕсли Класс = Перечисления.Классы.плохой Тогда
         СортКласс = -0.55;
      КонецЕсли;   
   КонецЕсли;
   Сообщить(СортКласс);
   Процент = ?(Процент=0,СортКласс*100,Процент);   // 
   Цена = Котировка*УстЦена;
    Цена = Цена-Цена*Скидка;
   Цена = Цена+Цена*Процент/100;
   Цена = Цена*Коэффициент;
   //Добавляем расчет с учетом скидки по контракту
   Цена = Цена - Цена * СкидкаПоКонтракту / 100;
   Возврат Цена;
КонецФункции
все равно вылетаю в ошибку;
Преобразование значения к типу Число не может быть выполнено
   Процент = ?(Процент=0,СортКласс*100,Процент);

cska-fanat-kz

отсутствие этой строки не решает проблему ;)
ее надо ИС ПРА ВИТЬ.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

ls600


Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск