Литерал типа ЧИСЛО

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

Синтаксис и применение Литерал типа ЧИСЛО в платформе 1С:Предприятие. Описание и примеры кода.

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

Литерал типа ЧИСЛО

Литерал типа ЧИСЛО записывается в виде:

<Целое число>[.<Целое число>]

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

Литералы запроса: отличить дату, тип, NULL и Неопределено

В одной собственной строке запроса создаём значения разных типов, а затем проверяем фактические значения в BSL. ЕСТЬNULL даёт заранее выбранную замену, не стирая различие двух видов отсутствия.

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

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

Подготовка

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

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

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

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

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

Процедура ВыполнитьПример() Экспорт
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |    ""Азбука"" КАК Товар,
    |    3.50 КАК Число,
    |    ДАТАВРЕМЯ(2026, 10, 6, 12, 30, 0) КАК УчебнаяДата,
    |    ИСТИНА КАК Принята,
    |    ЛОЖЬ КАК Отменена,
    |    НЕОПРЕДЕЛЕНО КАК НетЗначения,
    |    NULL КАК НетСтроки,
    |    ТИП(Число) КАК ОжидаемыйТип,
    |    ЕСТЬNULL(NULL, 0) КАК ЗаменаNull";
    Таблица = Запрос.Выполнить().Выгрузить();
    Если Таблица.Количество() <> 1 Тогда
        ВызватьИсключение "Ожидалась одна собственная строка литералов";
    КонецЕсли;
    СтрокаЛитералов = Таблица[0];
    Сообщить(Таблица.Колонки.Количество() = 9);
    Сообщить(СтрокаЛитералов.Товар = "Азбука");
    Сообщить(ТипЗнч(СтрокаЛитералов.Число) = Тип("Число") И СтрокаЛитералов.Число = 3.50);
    Сообщить(СтрокаЛитералов.УчебнаяДата = Дата(2026, 10, 6, 12, 30, 0));
    Сообщить(СтрокаЛитералов.Принята И Не СтрокаЛитералов.Отменена);
    Сообщить(ТипЗнч(СтрокаЛитералов.НетЗначения) = Тип("Неопределено"));
    Сообщить(ТипЗнч(СтрокаЛитералов.НетСтроки) = Тип("Null"));
    Сообщить(СтрокаЛитералов.ОжидаемыйТип = Тип("Число"));
    Сообщить(СтрокаЛитералов.ЗаменаNull = 0);
КонецПроцедуры

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

  1. Текст запроса — строка BSL. Поэтому кавычки строкового литерала Азбука внутри текста удвоены: в языке самого запроса остаются обычные двойные кавычки.

  2. 3.50 — число запроса, а не строка 3.50. ТипЗнч результата проверяется отдельно от его представления в сообщениях.

  3. Дата в языке запросов задаётся ДАТАВРЕМЯ(год,месяц,день,час,минута,секунда). Это иной синтаксис, чем BSL-литерал в одинарных кавычках; сравнить с конструктором Дата на стороне BSL.

  4. ИСТИНА и ЛОЖЬ дают булевы значения. ТИП(Число) даёт значение типа Тип, а не число 0 и не строку Число.

  5. НЕОПРЕДЕЛЕНО — отдельное отсутствие значения. NULL используется для отсутствующих данных, например отсутствующей стороны соединения; здесь он явно задан для изучения, без настоящего соединения.

  6. Не проверять значение NULL сравнением с числом. Проверить его тип и отдельно вызвать ЕСТЬNULL(NULL,0): результат замены — число 0, исходное поле НетСтроки всё ещё имеет тип Null.

  7. Все девять полей относятся к одной строке; псевдонимы не повторяются. Перед чтением [0] проверить размер таблицы.

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

  1. Девять проверок Истина. В отладчике сравните типы НетЗначения, НетСтроки и ЗаменаNull: Неопределено, Null и Число соответственно.

  2. Замените первый аргумент ЕСТЬNULL на 7: результат будет 7, не запасной 0. Уберите последние три аргумента ДАТАВРЕМЯ: получится начало дня 06.10.2026, поэтому проверку времени 12:30 надо изменить.

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

Литералы, типовые значения и замена NULL изучены на полном выполнении собственного запроса, а не на недостающих таблицах конфигурации.

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

  1. У BSL и языка запросов разные записи даты и отдельные функции. Копирование ДАТАВРЕМЯ как обычного BSL-конструктора вне текста запроса неверно.

  2. NULL, Неопределено, пустая строка и число 0 не являются одним универсальным пустым значением. Замена NULL должна быть осмысленным правилом конкретного отчёта.

  3. ЕСТЬNULL не заменяет всякий ложный или незаполненный результат. Для числа/строки второй аргумент может преобразовываться к типу первого; произвольная замена неизвестного поля без проверки его типа опасна.

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

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

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

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

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