ПривестиЗначение() - неожиданное округление!

1. d.komarov 16.10.19 16:18 Сейчас в теме
Исходные данные:
- Windows 2016 x64;
- 1С:Предприятие 8.3 (8.3.14.1565) x64;
- Управление небольшой фирмой для Украины, редакция 1.6 (1.6.9.1)
Есть функция:


Проблемка:

Метод
ПривестиЗначение()
работает не так, как ожидалось: округляет до 2-х десятичных знаков независимо от квалификатора числа.

Например, для ОписаниеТиповЧисло.КвлификаторыЧисла(15,5,Неотрицательный), возвращается 0, если число < 0,005. Иначе возвращается 0,01.

Наглядная картинка в прицепленном снимке экрана.

Вопрос:

Что(где) я делаю не так? Направьте меня, пожалуйста, куда копать.
Прикрепленные файлы:
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. AlexandrSmith 69 16.10.19 16:45 Сейчас в теме
(1)

ОписаниеТипов.ПривестиЗначение (TypeDescription.AdjustValue)
ОписаниеТипов (TypeDescription)
ПривестиЗначение (AdjustValue)
Синтаксис:
ПривестиЗначение(<Значение>)
Параметры:
<Значение> (необязательный)
Тип: Произвольный.
Значение, которое будет приводиться.
Возвращаемое значение:
Тип: Произвольный.
Если значение передано, то выполняется проверка на соответствие значения описанию типа. Если значение соответствует, то метод возвращает переданное значение. Если значение не соответствует, то оно приводится к типу, доступному в описании типа.
Если значение не передано, то выдается значение по умолчанию для данного описания типа.
Описание:
Формирует значение на основании описания типа и переданного значения.

Доступность:
Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).

С этим вопросом необходимо немедленно обратиться к 1С разработчикам в ЗАО 1С или в ближайший франчайзинг.

Есть второй путь disassembler и медитация, отыскание неисправности и пропатчивание всех остальных версий 1С с этой ошибкой.
7. d.komarov 16.10.19 20:14 Сейчас в теме
(1)
Windows 2016 x64


Хм...
Поставил 1С:Предприятие 8.3 (8.3.14.1565) x64 файловый вариант на Windows 10 LTSC 2019 x64.
Создал голую файловую ИБД.
Набросал обработку.

Работает!

На Windows 2016 в УНФ не работает ни в файловом, ни в серверном варианте.

Попробую голую ИБД на 2016.
8. d.komarov 16.10.19 22:09 Сейчас в теме
(7)
Клонировал работающую ИБД с Windows 10 на Windows 2016.

Метод перестал работать!!!
9. Xershi 1545 17.10.19 10:29 Сейчас в теме
(8) значит дело в настройках винды. Скорее всего на 10 у вас русский, а на 2016 английский. Вот и выходит, что на 10 с запятой работает, а на 2016 нет.
Вам надо это учитывать!
Sashares; +1 Ответить
10. d.komarov 21.10.19 21:36 Сейчас в теме
11. Sashares 35 21.10.19 22:49 Сейчас в теме
(10)Язык то ладно, а разделитель целой и дробной части везде запятая?
А то подозреваю, там где не работает ПривестиЗначение с числом с запятой, вполне сработает, если там вместо запятой точка будет.
То есть там где не работает для 0,00035
проверьте для 0.00035
Будет работать?
2. Sashares 35 16.10.19 16:35 Сейчас в теме
Вы не считаете, что у вас в условии в принципе неработоспособные условия указаны?
 Если ПустаяСтрока(ЧислоСтрокой)
        И (ОписаниеТиповЧисло = Неопределено)
        И (ОписаниеТиповЧисло.Типы.Найти(Тип("Число")) = Неопределено)


Как одновременно может быть переменная Неопределено, а дальше проверка ее свойств?
4. d.komarov 16.10.19 16:55 Сейчас в теме
(2)Короткое вычисление ЕСЛИ: всё выражение становится ложным при первом ложном И
5. Sashares 35 16.10.19 16:59 Сейчас в теме
(4) А теперь представьте, что у вас первые 2 условия в Если выполнились.
Дальше будет модульная ошибка.
Предположу, что вместо И там везде должно быть ИЛИ.

Но к основному вопросу это конечно не имеет никакого отношения. Это так, для информации.
6. d.komarov 16.10.19 17:02 Сейчас в теме
(5)Согласен. Спасибо за замечание.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот