Задать числовую колонку с двумя дробными знаками

Учебные задачи

Создаём тип Число(9,2) для учебной таблицы и отдельно отклоняем отрицательное значение до приведения типа.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Все значения учебные и создаются в памяти; документы, регистры и рабочие данные не изменяются.

  2. Выполняйте на сервере учебной базы. Представление десятичного разделителя в сообщениях зависит от локали.


Квалификаторы = Новый КвалификаторыЧисла(9, 2, ДопустимыйЗнак.Неотрицательный);
ТипСуммы = Новый ОписаниеТипов("Число", Квалификаторы);
Сообщить(ТипСуммы.КвалификаторыЧисла.Разрядность);
Сообщить(Квалификаторы.Разрядность);
Сообщить(Квалификаторы.РазрядностьДробнойЧасти);
Сообщить(Квалификаторы.ДопустимыйЗнак);
Таблица = Новый ТаблицаЗначений;
Таблица.Колонки.Добавить("Сумма", ТипСуммы);
Входящие = Новый Массив;
Входящие.Добавить(12.341);
Входящие.Добавить(-1);
Для Каждого Значение Из Входящие Цикл
    Если Значение < 0 Тогда
        Сообщить("Отклонено отрицательное значение: " + Строка(Значение));
        Продолжить;
    КонецЕсли;
    Если Значение > 9999999.99 Тогда
        Сообщить("Отклонено значение вне диапазона Число(9,2)");
        Продолжить;
    КонецЕсли;
    СтрокаТаблицы = Таблица.Добавить();
    СтрокаТаблицы.Сумма = ТипСуммы.ПривестиЗначение(Значение);
    Сообщить(СтрокаТаблицы.Сумма);
КонецЦикла;
Сообщить(Таблица.Количество());

Разбор по шагам

  1. Разрядность 9 включает целую и дробную части; для целой остаётся семь разрядов.

  2. ОписаниеТипов получает числовые квалификаторы вторым параметром.

  3. До приведения отдельно проверяем бизнес-требование неотрицательности и верхнюю границу.

  4. Приведённое значение попадает в типизированную колонку; третья дробная цифра не сохраняется.

Как проверить результат

  1. Свойства квалификаторов: 9, 2 и Неотрицательный; в таблице одно значение 12.34.

  2. Для -1 выводится сообщение об отказе, строки с нулём вместо ошибки не создаётся.

  3. Добавьте 10000000: значение отклоняется до приведения.

Ожидаемый результат

Таблица содержит одну допустимую сумму с заданной точностью.

На что обратить внимание

  1. ПривестиЗначение преобразует значение и может менять его; это не универсальный валидатор бизнес-правил.

  2. Проверка входа перед приведением нужна, чтобы неверная сумма не превратилась молча в другое допустимое значение.

  3. Сумма 9,2 выбрана для обучения, а не как обязательный тип всех сумм в вашей конфигурации.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.