Синтаксис и применение Литерал типа ЧИСЛО в платформе 1С:Предприятие. Описание и примеры кода.
Полное описание, параметры и ограничения
Литерал типа ЧИСЛО
Литерал типа ЧИСЛО записывается в виде:
<Целое число>[.<Целое число>]
Практические примеры
Литералы запроса: отличить дату, тип, NULL и Неопределено
В одной собственной строке запроса создаём значения разных типов, а затем проверяем фактические значения в BSL. ЕСТЬNULL даёт заранее выбранную замену, не стирая различие двух видов отсутствия.
Где и как запускать
Полный серверный общий модуль учебной базы. Собственные значения в памяти, без чтения или записи рабочих данных.
Подготовка
В отдельной учебной базе 8.5.1.1343 создайте общий модуль УчебныйЯзык: Сервер=Истина, Глобальный=Ложь, ВызовСервера=Ложь, Привилегированный=Ложь. Клиентские и внешнее соединение отключены; ПовторноеИспользованиеВозвращаемыхЗначений=НеИспользовать.
Вставьте весь приведённый текст в этот общий модуль. ВыполнитьПример — экспортная точка входа; остальные процедуры и функции располагаются рядом, а не внутри неё.
В своей внешней учебной обработке создайте управляемую форму, команду Выполнить и кнопку. Клиентский обработчик Выполнить(Команда) вызывает свою процедуру ВыполнитьНаСервере(); она имеет директиву &НаСервереБезКонтекста и одну строку УчебныйЯзык.ВыполнитьПример();. Это серверный вызов общего модуля, а не разрешение клиенту прямо обращаться к серверной библиотеке.
Все товары, количества и строки придуманы в этом модуле. Запись документов, подключение к чужой базе, файлы, сеть и печать не используются. В рабочие общие модули текст не вставляйте.
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);
КонецПроцедурыРазбор по шагам
Текст запроса — строка BSL. Поэтому кавычки строкового литерала Азбука внутри текста удвоены: в языке самого запроса остаются обычные двойные кавычки.
3.50 — число запроса, а не строка 3.50. ТипЗнч результата проверяется отдельно от его представления в сообщениях.
Дата в языке запросов задаётся ДАТАВРЕМЯ(год,месяц,день,час,минута,секунда). Это иной синтаксис, чем BSL-литерал в одинарных кавычках; сравнить с конструктором Дата на стороне BSL.
ИСТИНА и ЛОЖЬ дают булевы значения. ТИП(Число) даёт значение типа Тип, а не число 0 и не строку Число.
НЕОПРЕДЕЛЕНО — отдельное отсутствие значения. NULL используется для отсутствующих данных, например отсутствующей стороны соединения; здесь он явно задан для изучения, без настоящего соединения.
Не проверять значение NULL сравнением с числом. Проверить его тип и отдельно вызвать ЕСТЬNULL(NULL,0): результат замены — число 0, исходное поле НетСтроки всё ещё имеет тип Null.
Все девять полей относятся к одной строке; псевдонимы не повторяются. Перед чтением [0] проверить размер таблицы.
Как проверить результат
Девять проверок Истина. В отладчике сравните типы НетЗначения, НетСтроки и ЗаменаNull: Неопределено, Null и Число соответственно.
Замените первый аргумент ЕСТЬNULL на 7: результат будет 7, не запасной 0. Уберите последние три аргумента ДАТАВРЕМЯ: получится начало дня 06.10.2026, поэтому проверку времени 12:30 надо изменить.
Ожидаемый результат
Литералы, типовые значения и замена NULL изучены на полном выполнении собственного запроса, а не на недостающих таблицах конфигурации.
На что обратить внимание
У BSL и языка запросов разные записи даты и отдельные функции. Копирование ДАТАВРЕМЯ как обычного BSL-конструктора вне текста запроса неверно.
NULL, Неопределено, пустая строка и число 0 не являются одним универсальным пустым значением. Замена NULL должна быть осмысленным правилом конкретного отчёта.
ЕСТЬNULL не заменяет всякий ложный или незаполненный результат. Для числа/строки второй аргумент может преобразовываться к типу первого; произвольная замена неизвестного поля без проверки его типа опасна.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.