29.06.2011, 16:02 | #1 |
Участник
|
Ребята, объясните, пожалуйста, как такое может быть?
Имеем таблицу 37. В ней 2 поля: "Unit Price" и "Brutto/Netto Price". Оба - decimal Смотрим на табл. часть ордера. |
|
29.06.2011, 16:32 | #2 |
Участник
|
А свойства этих полей различаются? Пробовали анализировать?
А что это локализация? Какая версия? |
|
29.06.2011, 16:40 | #3 |
Участник
|
Ну, а что там со свойством DecimalPlaces? Может оно просто маловато?
|
|
29.06.2011, 16:47 | #4 |
Участник
|
Попробовал в тестовом кодюните присвоить обычному decimal-полю присвоить значение с четырьмя знаками после запятой.
В таблице отображается с двумя, а в зуме с четырьмя. При это руками в этом поле занести более двух знаков после запятой я внести не могу. Вот такая котовасия |
|
29.06.2011, 17:33 | #5 |
Участник
|
Цитата:
У Unit Price: AutoFormatType = 2, AutoFormatExpr = Currency Code У Brutto/netto: 0 и <> DecimalPlaces у обоих <Undefined> В табличной форме, которая открывается при просмотре ордера эти Properties соответственно: 0, <>, 2:2 Версия Нава: 5.0 SP 1 В конторе, где я работаю, очень много чего в программе доделано/переделано (слишком уж специфики у них своей много) |
|
29.06.2011, 17:36 | #6 |
Участник
|
Цитата:
Сообщение от Kadawrik
Цитата:
У Unit Price: AutoFormatType = 2, AutoFormatExpr = Currency Code У Brutto/netto: 0 и <> DecimalPlaces у обоих <Undefined> В табличной форме, которая открывается при просмотре ордера эти Properties соответственно: 0, <>, 2:2 Версия Нава: 5.0 SP 1 В конторе, где я работаю, очень много чего в программе доделано/переделано (слишком уж специфики у них своей много) |
|
29.06.2011, 18:00 | #7 |
Участник
|
Цитата:
Сообщение от Kadawrik
Цитата:
У Unit Price: AutoFormatType = 2, AutoFormatExpr = Currency Code У Brutto/netto: 0 и <> DecimalPlaces у обоих <Undefined> В табличной форме, которая открывается при просмотре ордера эти Properties соответственно: 0, <>, 2:2 Версия Нава: 5.0 SP 1 В конторе, где я работаю, очень много чего в программе доделано/переделано (слишком уж специфики у них своей много) |
|
29.06.2011, 18:01 | #8 |
Участник
|
Цитата:
Код: T37_BruttoNettoBerechnung(VAR prc_T37 : Record "Sales Line") WITH prc_T37 DO BEGIN IF lrc_SalesHeader.GET("Document Type","Document No.") THEN BEGIN IF lrc_SalesHeader."Prices Including VAT" THEN BEGIN "Brutto/Netto-Preis" := "Unit Price" / (1 + "VAT %" / 100); END ELSE BEGIN "Brutto/Netto-Preis" := "Unit Price" * (1 + "VAT %" / 100); END; END; END; |
|
29.06.2011, 18:08 | #9 |
Участник
|
Забыла еще один момент: если в шапке документа валюта не выбрана, тогда показывает всё красиво (с двумя знаками после запятой). Когда выбираем, к примеру, USD, тогда Unit Price становится многозначным, а Брутто/нетто не меняется (в смысле значности).
Причем при выводе на печать, Unit Price выводится тоже с 4 знаками. Шеф хочет, чтобы всегда было одинаково (не зависимо от выбора/не выбора валюты) Где еще есть разница, которая может влиять (но только на Unit Price): table 98 (General Ledger Setup) и Table 4 (Currency). В этих таблицах по-разному задана значность рассчитываемых сумм. |
|
29.06.2011, 23:01 | #10 |
Administrator
|
хм... все прочел
если вопрос "почему?", то понятно: брутанетту рассчитывает до четырех знаков, а показывает до двух. может, надо как-то по-другому сформулировать вопрос? напрмер: как сделать, чтобы везде до четырех? как сделать, чтобы везде до двух? |
|
30.06.2011, 09:04 | #11 |
Участник
|
Если зависит от валюты, то логично проверить поля Amount Decimal Places, Unit-Amount Decimal Places, Amount Rounding Precision, Unit-Amount Rounding Precision в настройке валюты.
|
|
30.06.2011, 10:49 | #12 |
Участник
|
Думается надо сделать все-таки так.
Функция GetSalesHeader вернет валюту с нужным округлением в поле Currency."Unit-Amount Rounding Precision". Ну и далее рассчитывать нашу величину с округлением. Код: T37_BruttoNettoBerechnung(VAR prc_T37 : Record "Sales Line") WITH prc_T37 DO BEGIN IF lrc_SalesHeader.GET("Document Type","Document No.") THEN BEGIN GetSalesHeader; IF lrc_SalesHeader."Prices Including VAT" THEN BEGIN "Brutto/Netto-Preis" := ROUND("Unit Price" / (1 + "VAT %" / 100), Currency."Unit-Amount Rounding Precision"); END ELSE BEGIN "Brutto/Netto-Preis" := ROUND("Unit Price" * (1 + "VAT %" / 100), Currency."Unit-Amount Rounding Precision"); END; END; END; |
|