Функция Цел

Язык запросов · Int

Синтаксис и применение Функция Цел в платформе 1С:Предприятие. Описание и примеры кода.

Полное описание, параметры и ограничения

Функция Цел (Int)

Цел(<Число>)

Round(<Число>)

Данная функция вычисляет целую часть переданного числа, полностью отсекая дробную часть.

Число - Число.

Возвращаемое значение: Число.

Внимание! При использовании в запросе данной функции запрос не будет передан в Дата акселератор.

см. также: Функции языка запросов

Практические примеры

Сравнить порядок округления своей суммы и целую часть отрицательного числа

ОКР запроса использует округление как BSL с Окр15как20. На собственных числах видно, почему округлить цену до умножения и округлить итог — разные операции.

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

Полный серверный общий модуль учебной базы. Собственные значения в памяти, без чтения или записи рабочих данных.

Подготовка

  1. В отдельной учебной базе 8.5.1.1343 создайте общий модуль УчебныйЯзык: Сервер=Истина, Глобальный=Ложь, ВызовСервера=Ложь, Привилегированный=Ложь. Клиентские и внешнее соединение отключены; ПовторноеИспользованиеВозвращаемыхЗначений=НеИспользовать.

  2. Вставьте весь приведённый текст в этот общий модуль. ВыполнитьПример — экспортная точка входа; остальные процедуры и функции располагаются рядом, а не внутри неё.

  3. В своей внешней учебной обработке создайте управляемую форму, команду Выполнить и кнопку. Клиентский обработчик Выполнить(Команда) вызывает свою процедуру ВыполнитьНаСервере(); она имеет директиву &НаСервереБезКонтекста и одну строку УчебныйЯзык.ВыполнитьПример();. Это серверный вызов общего модуля, а не разрешение клиенту прямо обращаться к серверной библиотеке.

  4. Все товары, количества и строки придуманы в этом модуле. Запись документов, подключение к чужой базе, файлы, сеть и печать не используются. В рабочие общие модули текст не вставляйте.

  5. HTML только показывает BSL. Код в 1С не запускался; перечисленные результаты и отрицательные опыты проверяйте самостоятельно в собственном стенде.

  6. Все числа созданы этим уроком. Запрос без ИЗ получает одну строку только из параметров; рабочие документы, регистры и справочники не читаются.

  7. Речь о функциях языка запросов из установленного shquery_ru.hbk 8.5.1.1343, не о произвольной математической библиотеке. Модуль серверный; HTML запросы не выполняет.

  8. Для всех перечисленных здесь математических функций установленная справка предупреждает: запрос не будет передан в Дата акселератор. Производительность этим учебным примером не измерена.

  9. Иррациональные/тригонометрические результаты сравниваются с явной погрешностью 0.000001, а не обещанием бесконечной точности.

Процедура ВыполнитьПример() Экспорт
    ЦенаОбразца = 12.345;
    КоличествоОбразца = 3;
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |    &Цена * &Количество КАК СуммаБезОкругления,
    |    ОКР(&Цена, 2) КАК ОкруглённаяЦена,
    |    ОКР(&Цена * &Количество, 2) КАК ОкруглитьПослеУмножения,
    |    ОКР(&Цена, 2) * &Количество КАК УмножитьПослеОкругления,
    |    ОКР(1234, -2) КАК ДоСотен,
    |    ОКР(12.6) КАК ПоУмолчанию,
    |    ОКР(12.345, 2.9) КАК ДробнаяРазрядность,
    |    ЦЕЛ(-12.9) КАК ЦелаяОтрицательного";
    Запрос.УстановитьПараметр("Цена", ЦенаОбразца);
    Запрос.УстановитьПараметр("Количество", КоличествоОбразца);
    Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать();
    Если НЕ Выборка.Следующий() Тогда
        ВызватьИсключение "Запрос из собственных параметров должен вернуть одну строку";
    КонецЕсли;
    Сообщить(Выборка.СуммаБезОкругления = 37.035);
    Сообщить(Выборка.ОкруглённаяЦена = 12.35);
    Сообщить(Выборка.ОкруглитьПослеУмножения = 37.04);
    Сообщить(Выборка.УмножитьПослеОкругления = 37.05);
    Сообщить(Выборка.ДоСотен = 1200);
    Сообщить(Выборка.ПоУмолчанию = 13);
    Сообщить(Выборка.ДробнаяРазрядность = 12.35);
    Сообщить(Выборка.ЦелаяОтрицательного = -12);
    Сообщить("Порядок округления даёт разные результаты: 37.04 и 37.05. Это демонстрация, не правило рабочего учёта.");
    Если Выборка.Следующий() Тогда
        ВызватьИсключение "У запроса без источников ожидалась ровно одна строка";
    КонецЕсли;
КонецПроцедуры

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

  1. Передать собственные цену 12.345 и количество 3 параметрами, без текста рабочего документа.

  2. Получить неокруглённые 37.035 и отдельно округлённую цену 12.35.

  3. После умножения округлить до двух знаков: 37.04. Сначала округлённая цена, умноженная на 3, даёт 37.05.

  4. Отрицательная разрядность -2 округляет 1234 до сотен 1200; отсутствие разрядности означает 0.

  5. Дробная часть разрядности 2.9 игнорируется, используются два дробных знака.

  6. ЦЕЛ(-12.9) отсекает дробную часть и даёт -12, а не математическое округление вниз -13.

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

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

  1. Восемь сравнений Истина.

  2. Два явно разных итога 37.04 и 37.05 не объявляются ошибкой запроса: отличается место округления.

  3. ЦелаяОтрицательного=-12, ДоСотен=1200, ПоУмолчанию=13.

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

На полностью заданных собственных числах разобраны округление, разрядность и отсечение дробной части.

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

  1. Это учебная арифметика, не инструкция менять порядок округления в рабочей конфигурации.

  2. ЦЕЛ отрицательного числа не является функцией пола.

  3. В установленной странице ЦЕЛ английская строка синтаксиса ошибочно повторяет Round; урок использует русский ЦЕЛ и её описанную семантику.

  4. Третий параметр режима BSL Окр в функцию запроса не передаётся: у неё только число и необязательная разрядность.

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

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

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

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

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