Имя: Пароль:
1C
1С v8
Как не округлять, а отрезать знаки после запятой
0 Gena1984
 
24.01.18
16:52
Всем добрый вечер. Вопрос следующий. УПП 1.3 последний релиз. Необходимо в отчете производства за смену уменьшить количество знаков после запятой с 5 (кем то давным давно было увеличено до 5) до 3 (стандартная разрядность), но что бы не округлялось,, а отрезалось 2 знака в хвосте. Может есть какие то настройки конфигуратора, не могу найти. В конфигураторе уменьшил до 3, базу обновил, посмотрел, он округлил.
1 Сти
 
24.01.18
16:56
(1) Нет такой настройки. Обработкой отрезать, а потом уже менять разрядность.
2 vde69
 
24.01.18
16:57
формат
3 Gena1984
 
24.01.18
16:59
Обработкой тяжело. Это я просто пример привел отчет производства за смену. в базе куча таких документов. И требования и перемещения и списание и т.д. Плюс перепроводить их нельзя. Это и 12 и 13 и 14 и так до 17 года. Все это как то надо лихо отрезать что бы было 3 знака и никаких остатков не вылезло, если округляешь остатки вылазят.
4 Вафель
 
24.01.18
17:00
1с само округляет, когда привдение типов делает
те ты говоришь Строка.Количество = 1.12356. а оно приводит к 1.124
5 CountR
 
24.01.18
17:00
(3) Странная у вас программа - если округлять, то остатки вылазят, а если обрезать - то все ок! Куда обрезанное девается?
6 zzzzz
 
24.01.18
17:02
Это ведь отчет. Зачем обработка в отчете?
Можно форматом, можно округлением. По всякому можно.
Отрезка - это одна строчка.
Там проблема в нач ост 1. Переместили 0,0005 осталось 0,9995 на новом складе 0,0005
На следующий день - остаток на одном складе 0,9995 в отчете
0,999 а на другом складе 0,0005. а в отчете -0.
Куда дели?
7 Serg_1960
 
24.01.18
17:05
(6)  "Отчет производства за смену" - это документ в УПП. Вот такое вот название у него :)
8 arsik
 
гуру
24.01.18
17:06
(3) А зачем их перепроводить. Регистры редактируешь и реквизиты в документе редактируешь.
9 Мандалай
 
24.01.18
17:06
Цел
10 Serg_1960
 
24.01.18
17:09
Имхо, надо смотреть не только документ, но и его движения. Однажды встретился я на практике случай: в документе увеличили количество знаков после запятой, а в движениях - нет, забыли, оставили как и было. И все довольны и улыбаются - и те, кому нужна печатная форма пыль пустить в глаза, и те, кому такая точность нафиг не сдадась в учете :))
11 Базис
 
naïve
24.01.18
17:09
На франчей похоже. Сперва 100 часов за увеличение точности, теперь столько же за обратное. ДокиНеЧитай@СразуПравьКод
12 Serg_1960
 
24.01.18
17:10
Ой, sorry, за очепятки
13 Вафель
 
24.01.18
17:15
(11) пока клиент платит - все ок )))
14 Gena1984
 
24.01.18
17:24
Пусть оно исчезнет просто. Речь идет только о количестве, в суммах все ОК. было 1,12567 кг станет 1,125 кг. Пусть так и будет. Вопрос как это быстро сделать по всей базе.
15 Serg_1960
 
24.01.18
23:25
(0) Быстро не получится. Преобразования значений исполняется на уровне платформы. Другими словами, математическое округление "зашито" в платформе.
И потому ждет тебя, касатик, пиковый туз и дальняя дорога в два этапа :)
- обработкой изменятся значения с нужной точностью так, как нужно;
- вносятся изменения в конфигураторе.
16 ndv76
 
25.01.18
04:45
ЦЕЛ(1.12567*1000)/1000 = 1.125 в 7.7
17 Peltzer
 
25.01.18
05:15
Ок. У ребят в ОПзС было пять знаков. Оставьте прошлые периоды историкам. А в новых документах на форме режьте до нужного числа знаков.
Вопрос в том, какие регистры затрагивают введенные числа.
18 Emery
 
25.01.18
06:56
(16) > ЦЕЛ(1.12567*1000)/1000 = 1.125

Если нужно обрезать без округления три знака после запятой, то это легко сделать также на базе функции округления:

Окр(1.12567 – 0.0005, 3) = 1.125

В  общем случае, для n знаков аналогичная формула будет:

[x, n] = Окр(x – 1/(2*10^n), n)

Кстати, если нужно всегда округлять вверх до ближайшего целого, то в приведенных формулах минус меняем на плюс.
19 capllary_
surgut
 
25.01.18
08:43
(0) А вариант преобразования в строку, обрезания, и возврат в число чем не устраивает?
20 rs_trade
 
25.01.18
08:56
заменить нулями последние две цифры? и потом усечь.
21 Serg_1960
 
25.01.18
09:14
(17) "Оставьте прошлые периоды историкам" - если чисто формально трактовать вашу фразу, как "сохранение предыдущих значений без изменений", то изменять точность нужно только на форме документа, ничего более не трогая. Логично? Логично. Ведь если на форме три знака после запятой, то пользователь не сможет внести более точное значение, даже если реквизиты объекта это позволяют сделать. Вы спросите "Зачем это нужно?" Отвечаю: можно легко реализовать ТЗ, когда точность внесения значений зависит от даты документа и установленной константой даты, после которой она изменяется. Я не сложно сказал?
2 + 2 = 3.9999999999999999999999999999999...