|
Комплексная, вторая редакция. Пересчет веса и объема. Крик души. | ☑ | ||
---|---|---|---|---|
0
Byasha
26.02.19
✎
22:57
|
Релиз конфигурации 2.4.6.207
Стал не верно рассчитываться вес и объем. Заметили не сразу. Имеем вес упаковки 46,8 кг В ордере отгружается 3 упаковки. При открытии ордера вес рассчитан правильно 3*46,8 = 140,4 кг. При изменении количества, на то же самое получаем 3*46,8 = 140,397!!!!! Склад оказался в ступоре, т.к. отгрузка идет контейнерами и на одном контейнере получили "недовес" около двух тонн!!! После долгих мытарств и исканий в коде нашел такую процедуру - "ПересчитатьВесОбъемВСтрокеТЧ" и в ней следующий код ВесЕдиницыИзмерения = ПолучитьКоэффициентУпаковки(ТекущаяСтрока.ЕдиницаИзмеренияВеса, КэшированныеЗначения).Коэффициент; Если ВесЕдиницыИзмерения * ТекущаяСтрока.ВесУпаковки <> 0 Тогда ТекущаяСтрока.Вес = ТекущаяСтрока["КоличествоУпаковок" + Суффикс] * 1/Окр(ВесЕдиницыИзмерения/ТекущаяСтрока.ВесУпаковки , 6, РежимОкругления.Окр15как20); КонецЕсли; Вся загвоздка в округлении. Если округлять конечный результат, то все считается верно. Стало очень интересно, а почему два года считалось правильно, и вдруг "перестало". Поднял старые релизы типовых. В релизе 2.4.6.175 эта же процедура выглядит несколько иначе ВесЕдиницыИзмерения = ПолучитьКоэффициентУпаковки(ТекущаяСтрока.ЕдиницаИзмеренияВеса, КэшированныеЗначения).Коэффициент; Если ВесЕдиницыИзмерения * ТекущаяСтрока.ВесУпаковки <> 0 Тогда ТекущаяСтрока.Вес = ТекущаяСтрока["КоличествоУпаковок" + Суффикс] * ТекущаяСтрока.ВесУпаковки / ВесЕдиницыИзмерения; КонецЕсли; Т.е. округления нет. Ради интереса расписал на бумаге формулы. Старая: КоличествоУпаковок * ВесУпаковки / ВесЕдиницыИзмерения. Новая БЕЗ ОКРУГЛЕНИЯ: КоличествоУпаковок * 1 / (ВесЕдиницыИзмерения/ВесУпаковки) что опять превращается в КоличествоУпаковок * ВесУпаковки / ВесЕдиницыИзмерения. Собственно сам крик души. ЗАЧЕМ ОКРУГЛЕНИЕ!!!!!! Объясните, может я что-то не так понимаю? |
|||
1
Garykom
гуру
26.02.19
✎
23:20
|
Это какой то "программист" пытался сделать чтобы при отгрузке дробными "упаковками" итоги сходились.
Например попробуй не 3 упаковки отгрузить а по 1/3 упаковки 9 раз )) |
|||
2
Йохохо
26.02.19
✎
23:22
|
при ВесЕдиницыИзмерения = 1 и в дробной части новая формула всегда хуже, мб под крупняк прогнулись
(1) свернуть() же везде |
|||
3
Byasha
26.02.19
✎
23:29
|
(1) Мне сложно представить ситуацию когда склад будет отгружать 1/3 упаковки. Ну вот никак не могу. Даже Джамшуты, которые там работают, до этого не догадались.
|
|||
4
Йохохо
26.02.19
✎
23:33
|
(3) идеально для всех такой пересчет написать нельзя. Написано глупо, отругайте того кто писал и кто обновлял
|
|||
5
Byasha
26.02.19
✎
23:39
|
(4) Отругать кого? Товарищей из 1С-Софт? Или своих программистов? Которые даже и внимания не обратили на этот модуль, потому что он на замке.
|
|||
6
Йохохо
26.02.19
✎
23:46
|
(5) изменения видно было
|
|||
7
Базис
naïve
26.02.19
✎
23:46
|
Отдельно проверял подобную ветку в УПП. Подпиской, вроде бы.
|
|||
8
Byasha
26.02.19
✎
23:47
|
(4) А при чем тут идеально? Крик души был в том, что округление делается не на конечный результат, а в процессе вычисления.
|
|||
9
Byasha
26.02.19
✎
23:49
|
(6) Видно было. И я совершенно не хочу ругать того, кто накатывал обновления. Мне что, за 1С-Софт ВСЕ их изменения контролировать? Может тогда мне их на работу взять?
|
|||
10
Йохохо
26.02.19
✎
23:53
|
(8) "*1/(1/" Вам должно не нравиться, ну да ладно, Вы там (9) все спешите
|
|||
11
Byasha
27.02.19
✎
00:05
|
(10) Так мне не только это не нравиться. Это "затыкается" через округление. Там есть еще такая конструкция "/ТекущаяСтрока.ВесУпаковки". И если при получении веса единицы измерения есть проверка на 0 - возвращается 1. То вес упаковки берется из табличной части документа, а там он очень прекрасно может принимать нулевое значение.
|
|||
12
Йохохо
27.02.19
✎
00:18
|
(11) не спешите) ВесЕдиницыИзмерения * ТекущаяСтрока.ВесУпаковки <> 0
|
|||
13
Конструктор1С
27.02.19
✎
06:06
|
Так округление до 6 знаков после запятой, это не должно быть губительно. Какое значение у переменной ВесЕдиницыИзмерения?
|
|||
14
Конструктор1С
27.02.19
✎
06:18
|
И чем истерить в интернете, не пробовал разработчикам написать?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |