Имя: Пароль:
1C
1С v8
Не вычисляется модуль числа
0 Dirk Diggler
 
03.08.12
15:49
Создал общий модуль math, в нем единственная ф-ция:

функция abs(а)  экспорт
   если а<0 тогда возврат -1*а;  конецесли;
КонецФункции


Работает через раз:


{Документ.РасчетПоказателейТоварооборота.Форма.ФормаАнализа.Форма(350)}: Преобразование значения к типу Число не может быть выполнено
            math.abs(ос.ДанныеСтроки.ОбычныйОбъемПродажи / ос.ДанныеСтроки.ПрогнозДневногоСпроса - 1)  +



Смотрю отладчиком
math.abs(ос.ДанныеСтроки.ОбычныйОбъемПродажи / ос.ДанныеСтроки.ПрогнозДневногоСпроса - 1)        Неопределено

При этом само выражение вычисляется:
ос.ДанныеСтроки.ОбычныйОбъемПродажи / ос.ДанныеСтроки.ПрогнозДневногоСпроса - 1    1,158878308212986903785919993    Число

чо за нафиг?
1 Dirk Diggler
 
03.08.12
15:50
1С:Предприятие 8.2 (8.2.15.318)
2 hhhh
 
03.08.12
15:51
(0) ты уже наклюкался. "Иначе" где в твоей чудо-функции?
3 Ненавижу 1С
 
гуру
03.08.12
15:51
функция abs(а)  экспорт
   Возврат ?(а<0,-а,a);
КонецФункции
4 Dirk Diggler
 
03.08.12
15:51
(2) йохху ) спс
5 Lex_Liven
 
03.08.12
15:53
функция abs(а)  экспорт
   если а<0 тогда возврат -1*а;  конецесли;
КонецФункции

Если А больше нуля, твоя функция возвращает именно Неопределено.

Либо (3)
Либо
функция abs(а)  экспорт
   если а<0 тогда
        возврат -1*а;
   Иначе
        Возврат a;
   конецесли;
КонецФункции
6 orefkov
 
03.08.12
15:53
Классика - Макс(а, -а)
7 Ненавижу 1С
 
гуру
03.08.12
15:55
функция abs(а)  экспорт
   Возврат (Число(а>0)*2-1)*a;
КонецФункции
8 Lex_Liven
 
03.08.12
15:55
(6) Еще
функция abs(a) Экспорт
 возврат Sqrt(a*a);
КонецФункции
Ошибка? Это не ошибка, это системная функция.