#std778

Денежные поля: требования по локализации

1.

Чтобы конфигурация корректно работала в странах с низким курсом национальной валюты, увеличивайте разрядность целой части числовых полей с денежным эквивалентом. Примеры денежных полей: Сумма, Цена, Себестоимость.

В метаданных:

  • для денежных полей, где возможны только положительные значения, вместо фиксированного типа Число(15,2) используйте определяемый тип ДенежнаяСуммаНеотрицательная;
  • для денежных полей, где возможны отрицательные значения, используйте тип ДенежнаяСуммаЛюбогоЗнака со снятым флагом Неотрицательное.

Если определяемый тип указать нельзя (например, для параметра формы или в составном типе), задавайте Число(31,2). В отдельных случаях эту длину нужно уменьшать из-за ограничений СУБД, например в ресурсах регистров.

2.

Если используется БСП, не применяйте конструктор типа Число для описания типа денежного поля. Используйте функцию, которая возвращает описание на основе определяемого типа.

Неправильно

ОписаниеТиповСумма = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15,2));

Правильно

ОписаниеТиповСумма = РаботаСКурсамиВалют.ОписаниеТипаДенежногоПоля();
3.

При #std535: использовании ВЫРАЗИТЬ в запросах для денежных полей применяйте приведение к типу ЧИСЛО(31,2). Так поддерживается максимальная длина целой части 29. Ограничение на 29 связано с поддержкой сервера DB2.

Неправильно

ВЫРАЗИТЬ(Т.Сумма / Т.Количество КАК ЧИСЛО(15,2))

Правильно

ВЫРАЗИТЬ(Т.Сумма / Т.Количество КАК ЧИСЛО(31,2))
4.

При использовании функции Формат, а также при задании формата в свойствах элементов формы, полей наборов СКД и т.п. не задавайте общую длину числа.

Неправильно

Формат(Выборка.СуммаДокумента, "ЧЦ=15; ЧДЦ=2")

Правильно

Формат(Выборка.СуммаДокумента, "ЧДЦ=2")

Неправильно

Формат с заданной общей длиной

Правильно

Формат без общей длины

Источник

https://its.1c.ru/db/v8std#content:778